From ab9d210fcd46e20ed705727bc761206f630b417e Mon Sep 17 00:00:00 2001 From: yangdx Date: Tue, 1 Apr 2025 22:15:31 +0800 Subject: [PATCH] Add document deletion support to PGDocStatusStorage --- lightrag/kg/postgres_impl.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/lightrag/kg/postgres_impl.py b/lightrag/kg/postgres_impl.py index 9e4f20bd..a23aa8da 100644 --- a/lightrag/kg/postgres_impl.py +++ b/lightrag/kg/postgres_impl.py @@ -898,6 +898,35 @@ class PGDocStatusStorage(DocStatusStorage): # PG handles persistence automatically pass + async def delete(self, ids: list[str]) -> None: + """Delete specific records from storage by their IDs + + Args: + ids (list[str]): List of document IDs to be deleted from storage + + Returns: + None + """ + if not ids: + return + + table_name = namespace_to_table_name(self.namespace) + if not table_name: + logger.error(f"Unknown namespace for deletion: {self.namespace}") + return + + delete_sql = f"DELETE FROM {table_name} WHERE workspace=$1 AND id = ANY($2)" + + try: + await self.db.execute( + delete_sql, {"workspace": self.db.workspace, "ids": ids} + ) + logger.debug( + f"Successfully deleted {len(ids)} records from {self.namespace}" + ) + except Exception as e: + logger.error(f"Error while deleting records from {self.namespace}: {e}") + async def upsert(self, data: dict[str, dict[str, Any]]) -> None: """Update or insert document status