@@ -54,6 +54,33 @@ def query(self, query: str, index: str, top_k: int = 0) -> list:
5454 logger .error (f"Failed to search from Redis: index={ index } error={ e } " )
5555 raise e
5656
57+ def delete_doc (self , index : str , id : str ) -> bool :
58+ logger .debug (f"Deleting document from Redis database: index={ index } id={ id } " )
59+ try :
60+ # For Redis, we need to handle deletion differently since RedisDatabase.delete_doc
61+ # takes a key and a single id
62+ result = self .client .delete_doc (key = index , id = id )
63+ return result
64+ except Exception as e :
65+ logger .error (
66+ f"Failed to delete document from Redis database: index={ index } id={ id } error={ e } "
67+ )
68+ return False
69+
70+ def list_docs (self , index : str , offset : int = 0 , limit : int = 100 ) -> list [dict ]:
71+ logger .debug (f"Listing documents from Redis database: index={ index } " )
72+ try :
73+ # Get all documents from Redis
74+ docs = self .client .list_docs (key = index )
75+
76+ # Apply offset and limit for pagination
77+ return docs [offset : offset + limit ]
78+ except Exception as e :
79+ logger .error (
80+ f"Failed to list documents from Redis database: index={ index } error={ e } "
81+ )
82+ return []
83+
5784
5885class RelationalDatabaseAdapter :
5986 def __init__ (self , client ):
@@ -108,6 +135,28 @@ def query(self, query: str, index: str, top_k: int) -> list[str]:
108135
109136 return [item ["data" ] for item in results ]
110137
138+ def delete_doc (self , index : str , id : str ) -> bool :
139+ logger .debug (f"Deleting document from SQL database: table_name={ index } id={ id } " )
140+ try :
141+ # Convert single id to list for the client method
142+ result = self .client .delete_doc (table = index , ids = [int (id )])
143+ return result
144+ except Exception as e :
145+ logger .error (
146+ f"Failed to delete document from SQL database: table_name={ index } id={ id } error={ e } "
147+ )
148+ return False
149+
150+ def list_docs (self , index : str , offset : int = 0 , limit : int = 100 ) -> list [dict ]:
151+ logger .debug (f"Listing documents from SQL database: table_name={ index } " )
152+ try :
153+ return self .client .list_docs (table = index , offset = offset , limit = limit )
154+ except Exception as e :
155+ logger .error (
156+ f"Failed to list documents from SQL database: table_name={ index } error={ e } "
157+ )
158+ return []
159+
111160
112161class VectorDatabaseAdapter :
113162 def __init__ (self , client ):
@@ -152,6 +201,23 @@ def query(self, query: str, index: str, top_k: int) -> list[str]:
152201 top_k = top_k ,
153202 )
154203
204+ def delete_doc (self , index : str , id : str ) -> bool :
205+ self ._validate_index (index )
206+ logger .debug (f"Deleting documents from vector database: index={ index } id={ id } " )
207+ try :
208+ self .client .delete_by_id (collection_name = index , id = id )
209+ return True
210+ except Exception as e :
211+ logger .error (
212+ f"Failed to delete document from vector database: index={ index } id={ id } error={ e } "
213+ )
214+ return False
215+
216+ def list_docs (self , index : str , offset : int = 0 , limit : int = 1000 ) -> list [dict ]:
217+ self ._validate_index (index )
218+ logger .debug (f"Listing documents from vector database: index={ index } " )
219+ return self .client .list_docs (collection_name = index , offset = offset , limit = limit )
220+
155221
156222class VikingDatabaseAdapter :
157223 def __init__ (self , client ):
@@ -212,6 +278,16 @@ def query(self, query: str, index: str, top_k: int) -> list[str]:
212278
213279 return self .client .query (query , collection_name = index , top_k = top_k )
214280
281+ def delete_doc (self , index : str , id : str ) -> bool :
282+ self ._validate_index (index )
283+ logger .debug (f"Deleting documents from vector database: index={ index } id={ id } " )
284+ return self .client .delete_by_id (collection_name = index , id = id )
285+
286+ def list_docs (self , index : str , offset : int , limit : int ) -> list [dict ]:
287+ self ._validate_index (index )
288+ logger .debug (f"Listing documents from vector database: index={ index } " )
289+ return self .client .list_docs (collection_name = index , offset = offset , limit = limit )
290+
215291
216292class VikingMemoryDatabaseAdapter :
217293 def __init__ (self , client ):
@@ -248,6 +324,12 @@ def query(self, query: str, index: str, top_k: int, **kwargs):
248324 result = self .client .query (query , collection_name = index , top_k = top_k , ** kwargs )
249325 return result
250326
327+ def delete_docs (self , index : str , ids : list [int ]):
328+ raise NotImplementedError ("VikingMemoryDatabase does not support delete_docs" )
329+
330+ def list_docs (self , index : str ):
331+ raise NotImplementedError ("VikingMemoryDatabase does not support list_docs" )
332+
251333
252334class LocalDatabaseAdapter :
253335 def __init__ (self , client ):
@@ -261,6 +343,12 @@ def add(self, data: list[str], **kwargs):
261343 def query (self , query : str , ** kwargs ):
262344 return self .client .query (query , ** kwargs )
263345
346+ def delete_doc (self , index : str , id : str ) -> bool :
347+ return self .client .delete_doc (id )
348+
349+ def list_docs (self , index : str , offset : int = 0 , limit : int = 100 ) -> list [dict ]:
350+ return self .client .list_docs (offset = offset , limit = limit )
351+
264352
265353MAPPING = {
266354 "RedisDatabase" : KVDatabaseAdapter ,
0 commit comments