Fix deletion for overlapping connectors

This commit is contained in:
Weves
2023-09-04 21:06:35 -07:00
committed by Chris Weaver
parent d593818996
commit 58b75122f1
2 changed files with 22 additions and 5 deletions

View File

@@ -26,7 +26,9 @@ from danswer.db.connector_credential_pair import get_connector_credential_pair
from danswer.db.deletion_attempt import check_deletion_attempt_is_allowed from danswer.db.deletion_attempt import check_deletion_attempt_is_allowed
from danswer.db.deletion_attempt import delete_deletion_attempts from danswer.db.deletion_attempt import delete_deletion_attempts
from danswer.db.deletion_attempt import get_deletion_attempts from danswer.db.deletion_attempt import get_deletion_attempts
from danswer.db.document import delete_document_by_connector_credential_pair from danswer.db.document import (
delete_document_by_connector_credential_pair_for_connector_credential_pair,
)
from danswer.db.document import delete_documents_complete from danswer.db.document import delete_documents_complete
from danswer.db.document import ( from danswer.db.document import (
get_document_by_connector_credential_pairs_indexed_by_multiple, get_document_by_connector_credential_pairs_indexed_by_multiple,
@@ -78,7 +80,7 @@ def _delete_connector_credential_pair(
def _update_multi_indexed_docs() -> None: def _update_multi_indexed_docs() -> None:
# if a document is indexed by multiple connector_credential_pairs, we should # if a document is indexed by multiple connector_credential_pairs, we should
# update it's access rather than outright delete it # update its access rather than outright delete it
document_by_connector_credential_pairs_to_update = ( document_by_connector_credential_pairs_to_update = (
get_document_by_connector_credential_pairs_indexed_by_multiple( get_document_by_connector_credential_pairs_indexed_by_multiple(
db_session=db_session, db_session=db_session,
@@ -135,10 +137,12 @@ def _delete_connector_credential_pair(
] ]
document_index.update(update_requests=update_requests) document_index.update(update_requests=update_requests)
# delete the `document_by_connector_credential_pair` rows for the connector / credential pair # delete the rest of the `document_by_connector_credential_pair` rows for
delete_document_by_connector_credential_pair( # this connector / credential pair
delete_document_by_connector_credential_pair_for_connector_credential_pair(
db_session=db_session, db_session=db_session,
document_ids=list(document_id_to_allowed_users.keys()), connector_id=connector_id,
credential_id=credential_id,
) )
_update_multi_indexed_docs() _update_multi_indexed_docs()

View File

@@ -162,6 +162,19 @@ def delete_document_by_connector_credential_pair(
) )
def delete_document_by_connector_credential_pair_for_connector_credential_pair(
db_session: Session, connector_id: int, credential_id: int
) -> None:
db_session.execute(
delete(DocumentByConnectorCredentialPair).where(
and_(
DocumentByConnectorCredentialPair.connector_id == connector_id,
DocumentByConnectorCredentialPair.credential_id == credential_id,
)
)
)
def delete_documents(db_session: Session, document_ids: list[str]) -> None: def delete_documents(db_session: Session, document_ids: list[str]) -> None:
db_session.execute(delete(DbDocument).where(DbDocument.id.in_(document_ids))) db_session.execute(delete(DbDocument).where(DbDocument.id.in_(document_ids)))