Allow connectors that have documents with feedback to be deleted

This commit is contained in:
Weves
2023-09-04 15:44:31 -07:00
committed by Chris Weaver
parent adb22273b6
commit f7cc7190fe
2 changed files with 16 additions and 0 deletions

View File

@@ -9,6 +9,7 @@ from sqlalchemy.orm import Session
from danswer.configs.constants import DEFAULT_BOOST from danswer.configs.constants import DEFAULT_BOOST
from danswer.datastores.interfaces import DocumentMetadata from danswer.datastores.interfaces import DocumentMetadata
from danswer.db.feedback import delete_document_feedback_for_documents
from danswer.db.models import Document as DbDocument from danswer.db.models import Document as DbDocument
from danswer.db.models import DocumentByConnectorCredentialPair from danswer.db.models import DocumentByConnectorCredentialPair
from danswer.db.utils import model_to_dict from danswer.db.utils import model_to_dict
@@ -168,5 +169,8 @@ def delete_documents(db_session: Session, document_ids: list[str]) -> None:
def delete_documents_complete(db_session: Session, document_ids: list[str]) -> None: def delete_documents_complete(db_session: Session, document_ids: list[str]) -> None:
logger.info(f"Deleting {len(document_ids)} documents from the DB") logger.info(f"Deleting {len(document_ids)} documents from the DB")
delete_document_by_connector_credential_pair(db_session, document_ids) delete_document_by_connector_credential_pair(db_session, document_ids)
delete_document_feedback_for_documents(
document_ids=document_ids, db_session=db_session
)
delete_documents(db_session, document_ids) delete_documents(db_session, document_ids)
db_session.commit() db_session.commit()

View File

@@ -1,6 +1,7 @@
from uuid import UUID from uuid import UUID
from sqlalchemy import asc from sqlalchemy import asc
from sqlalchemy import delete
from sqlalchemy import desc from sqlalchemy import desc
from sqlalchemy import select from sqlalchemy import select
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
@@ -151,3 +152,14 @@ def create_doc_retrieval_feedback(
db_session.add(retrieval_feedback) db_session.add(retrieval_feedback)
db_session.commit() db_session.commit()
def delete_document_feedback_for_documents(
document_ids: list[str], db_session: Session
) -> None:
"""NOTE: does not commit transaction so that this can be used as part of a
larger transaction block."""
stmt = delete(DocumentRetrievalFeedback).where(
DocumentRetrievalFeedback.document_id.in_(document_ids)
)
db_session.execute(stmt)