55import types
66import requests
77
8- from ._delete_by_id import deleteProcessResponse
8+ from ._delete import deleteProcessResponse
99from ._insert import getInsertRequestBody , processResponse , convertResponse
1010from ._update import sendUpdateRequests , createUpdateResponseBody
1111from ._config import Configuration , DeleteOptions
@@ -176,9 +176,9 @@ def update(self, updateInput, options: UpdateOptions = UpdateOptions()):
176176 log_info (InfoMessages .UPDATE_DATA_SUCCESS .value , interface )
177177 return result
178178
179- def delete_by_id (self , records : dict ,options : DeleteOptions = DeleteOptions ()):
180- interface = InterfaceName .DELETE_BY_ID .value
181- log_info (InfoMessages .DELETE_BY_ID_TRIGGERED .value , interface = interface )
179+ def delete (self , records : dict , options : DeleteOptions = DeleteOptions ()):
180+ interface = InterfaceName .DELETE .value
181+ log_info (InfoMessages .DELETE_TRIGGERED .value , interface = interface )
182182
183183 self ._checkConfig (interface )
184184
@@ -192,58 +192,53 @@ def delete_by_id(self, records: dict,options: DeleteOptions = DeleteOptions()):
192192 result_list = []
193193 errors = {}
194194 result = {}
195- error = {}
196195 try :
197- if not isinstance (records , dict ) or "records" not in records :
198- error = {"error" : {"code" : SkyflowErrorCodes .INVALID_INPUT .value ,
199- "description" : SkyflowErrorMessages .RECORDS_KEY_NOT_FOUND_DELETE .value }}
200- return error
201- records_list = records ["records" ]
202- if not isinstance (records_list , list ):
203- error .update ({"error" : {"code" : SkyflowErrorCodes .INVALID_INPUT .value ,
204- "description" : SkyflowErrorMessages .INVALID_RECORDS_IN_DELETE .value }})
205- return error
206- elif len (records_list ) == 0 :
207- error = {"error" : {"code" : SkyflowErrorCodes .INVALID_INPUT .value ,
208- "description" : SkyflowErrorMessages .EMPTY_RECORDS_IN_DELETE .value }}
209- return error
196+ record = records ["records" ]
197+ if not isinstance (record , list ):
198+ recordsType = str (type (record ))
199+ raise SkyflowError (SkyflowErrorCodes .INVALID_INPUT , SkyflowErrorMessages .INVALID_RECORDS_TYPE .value % (
200+ recordsType ), interface = interface )
201+ if len (record ) == 0 :
202+ raise SkyflowError (SkyflowErrorCodes .INVALID_INPUT ,
203+ SkyflowErrorMessages .EMPTY_RECORDS_IN_DELETE , interface = interface )
204+
210205 except KeyError :
211206 raise SkyflowError (SkyflowErrorCodes .INVALID_INPUT ,
212207 SkyflowErrorMessages .RECORDS_KEY_ERROR , interface = interface )
213208 try :
214- for index ,record in enumerate (records ["records" ]):
215- record_list = record ["id" ]
216- if not isinstance (record_list , str ):
217- error .update ({"error" : {"code" : SkyflowErrorCodes .INVALID_INDEX .value ,
218- "description" : SkyflowErrorMessages .INVALID_ID_TYPE_DELETE .value % (index )}})
219- return error
220- elif record_list == "" :
221- error .update ({"error" : {"code" : SkyflowErrorCodes .INVALID_INPUT .value ,
222- "description" : SkyflowErrorMessages .EMPTY_ID_IN_DELETE .value % (index )}})
223- return error
209+ for record in records ["records" ]:
210+ id = record ["id" ]
211+ if not isinstance (id , str ):
212+ idType = str (type (id ))
213+ raise SkyflowError (SkyflowErrorCodes .INVALID_INPUT ,
214+ SkyflowErrorMessages .INVALID_ID_TYPE .value % (idType ), interface = interface )
215+ if id == "" :
216+ raise SkyflowError (SkyflowErrorCodes .INVALID_INPUT ,
217+ SkyflowErrorMessages .EMPTY_ID_IN_DELETE , interface = interface )
224218 except KeyError :
225- error .update ({"error" : {"code" : SkyflowErrorCodes .INVALID_INDEX .value ,
226- "description" : SkyflowErrorMessages .IDS_KEY_ERROR .value }})
227- return error
219+ raise SkyflowError (SkyflowErrorCodes .INVALID_INPUT ,
220+ SkyflowErrorMessages .IDS_KEY_ERROR , interface = interface )
228221 try :
229- for index , record in enumerate ( records ["records" ]) :
230- record_table = record ["table" ]
231- if not isinstance (record_table , str ):
232- error . update ({ "error" : { "code" : SkyflowErrorCodes . INVALID_INPUT . value ,
233- "description" : SkyflowErrorMessages . INVALID_TABLE_TYPE_DELETE . value % ( index )}})
234- return error
235- elif record_table == "" :
236- error . update ({ "error" : { "code" : SkyflowErrorCodes . INVALID_INPUT . value ,
237- "description" : SkyflowErrorMessages . EMPTY_TABLE_IN_DELETE . value % ( index )}})
238- return error
222+ for record in records ["records" ]:
223+ table = record ["table" ]
224+ if not isinstance (table , str ):
225+ tableType = str ( type ( table ))
226+ raise SkyflowError ( SkyflowErrorCodes . INVALID_INPUT ,
227+ SkyflowErrorMessages . INVALID_TABLE_TYPE . value % (
228+ tableType ), interface = interface )
229+ if table == "" :
230+ raise SkyflowError ( SkyflowErrorCodes . INVALID_INPUT ,
231+ SkyflowErrorMessages . EMPTY_TABLE_IN_DELETE , interface = interface )
239232 except KeyError :
240- error .update ({"error" : {"code" : SkyflowErrorCodes .INVALID_INDEX .value ,
241- "description" : SkyflowErrorMessages .TABLE_KEY_ERROR .value }})
242- return error
233+ raise SkyflowError (SkyflowErrorCodes .INVALID_INPUT ,
234+ SkyflowErrorMessages .TABLE_KEY_ERROR , interface = interface )
235+
236+ partial = None
237+
243238 for record in records ["records" ]:
244239 request_url = self ._get_complete_vault_url () + "/" + record ["table" ] + "/" + record ["id" ]
245240 response = requests .delete (request_url , headers = headers )
246- processed_response = deleteProcessResponse (response , records )
241+ partial , processed_response = deleteProcessResponse (response , records )
247242 if processed_response is not None and processed_response .get ('code' ) == 404 :
248243 errors .update ({'id' : record ["id" ], 'error' : processed_response })
249244 error_list .append (errors )
@@ -254,5 +249,10 @@ def delete_by_id(self, records: dict,options: DeleteOptions = DeleteOptions()):
254249 if errors :
255250 result .update ({'errors' : error_list })
256251
257- log_info (InfoMessages .DELETE_DATA_SUCCESS .value , interface )
258- return result
252+ if partial :
253+ raise SkyflowError (SkyflowErrorCodes .PARTIAL_SUCCESS ,
254+ SkyflowErrorMessages .PARTIAL_SUCCESS , result , interface = interface )
255+
256+ else :
257+ log_info (InfoMessages .DELETE_DATA_SUCCESS .value , interface )
258+ return result
0 commit comments