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.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 DocumentByConnectorCredentialPair
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:
logger.info(f"Deleting {len(document_ids)} documents from the DB")
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)
db_session.commit()

View File

@ -1,6 +1,7 @@
from uuid import UUID
from sqlalchemy import asc
from sqlalchemy import delete
from sqlalchemy import desc
from sqlalchemy import select
from sqlalchemy.orm import Session
@ -151,3 +152,14 @@ def create_doc_retrieval_feedback(
db_session.add(retrieval_feedback)
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)