Skip to content

Commit 4bea819

Browse files
Merge pull request #92 from skyflowapi/release/23.7.2-patch
SK-865 Release/23.7.2 patch
2 parents ee8a462 + 76fce8e commit 4bea819

File tree

7 files changed

+292
-273
lines changed

7 files changed

+292
-273
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def token_provider():
3434
}
3535
]}
3636

37-
response = client.delete_by_id(data,options=options)
37+
response = client.delete(data,options=options)
3838
print('Response:', response)
3939
except SkyflowError as e:
4040
print('Error Occurred:', e)

skyflow/_utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class InfoMessages(Enum):
7575
UPDATE_DATA_SUCCESS = "Data has been updated successfully"
7676
GET_TRIGGERED = "Get triggered."
7777
GET_SUCCESS = "Data fetched successfully."
78-
DELETE_BY_ID_TRIGGERED = "Delete by ID triggered."
78+
DELETE_TRIGGERED = "Delete triggered."
7979
DELETE_DATA_SUCCESS = "Data has been deleted successfully."
8080

8181

@@ -91,7 +91,7 @@ class InterfaceName(Enum):
9191

9292
IS_TOKEN_VALID = "service_account.isTokenValid"
9393
IS_EXPIRED = "service_account.is_expired"
94-
DELETE_BY_ID = "client.delete_by_id"
94+
DELETE = "client.delete"
9595

9696

9797
def http_build_query(data):

skyflow/errors/_skyflow_errors.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,9 @@ class SkyflowErrorMessages(Enum):
5151
INVALID_REDACTION_TYPE = "Redaction key has value of type %s, expected Skyflow.Redaction"
5252
INVALID_COLUMN_NAME = "Column name has value of type %s, expected string"
5353
INVALID_COLUMN_VALUE = "Column values has value of type %s, expected list"
54-
INVALID_RECORDS_IN_DELETE = "Invalid records. records object should be an array"
5554
EMPTY_RECORDS_IN_DELETE = "records array cannot be empty"
56-
EMPTY_ID_IN_DELETE = "Id cannot be empty in records array at index %s"
57-
EMPTY_TABLE_IN_DELETE = "Table cannot be empty in records array at index %s"
55+
EMPTY_ID_IN_DELETE = "Id cannot be empty in records array"
56+
EMPTY_TABLE_IN_DELETE = "Table cannot be empty in records array"
5857
RECORDS_KEY_NOT_FOUND_DELETE = "records object is required"
5958

6059
INVALID_REQUEST_BODY = "Given request body is not valid"

skyflow/vault/_client.py

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import types
66
import requests
77

8-
from ._delete_by_id import deleteProcessResponse
8+
from ._delete import deleteProcessResponse
99
from ._insert import getInsertRequestBody, processResponse, convertResponse
1010
from ._update import sendUpdateRequests, createUpdateResponseBody
1111
from ._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
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,19 @@
88
from skyflow.errors._skyflow_errors import SkyflowError, SkyflowErrorCodes, SkyflowErrorMessages
99
from skyflow._utils import InterfaceName
1010

11-
interface = InterfaceName.DELETE_BY_ID.value
11+
interface = InterfaceName.DELETE.value
1212

1313

1414
def deleteProcessResponse(response: requests.Response, interface=interface):
1515
statusCode = response.status_code
1616
content = response.content
17+
partial = False
1718
try:
1819
response.raise_for_status()
1920
if statusCode == 204:
2021
return None
2122
try:
22-
return json.loads(content)
23+
return partial,json.loads(content)
2324
except:
2425
raise SkyflowError(
2526
statusCode, SkyflowErrorMessages.RESPONSE_NOT_JSON.value % content, interface=interface)
@@ -31,11 +32,12 @@ def deleteProcessResponse(response: requests.Response, interface=interface):
3132
if 'error' in errorResponse and type(errorResponse['error']) == dict and 'message' in errorResponse[
3233
'error']:
3334
message = errorResponse['error']['message']
35+
partial=True
3436
except:
3537
message = SkyflowErrorMessages.RESPONSE_NOT_JSON.value % content
3638
error = {}
3739
if 'x-request-id' in response.headers:
3840
message += ' - request id: ' + response.headers['x-request-id']
3941
error.update({"code": statusCode, "description": message})
40-
return error
42+
return partial,error
4143

0 commit comments

Comments
 (0)