From 09a6e14a228d6d4135606db81c3fd3eedc6a50aa Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 6 Feb 2026 17:29:47 +0530 Subject: [PATCH 1/3] SK-2541 support file upload along with record creation --- skyflow/utils/_skyflow_messages.py | 4 ++-- skyflow/utils/validations/_validations.py | 9 +++------ skyflow/vault/data/_file_upload_request.py | 4 ++-- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/skyflow/utils/_skyflow_messages.py b/skyflow/utils/_skyflow_messages.py index 3672cfa8..22dfdd40 100644 --- a/skyflow/utils/_skyflow_messages.py +++ b/skyflow/utils/_skyflow_messages.py @@ -102,7 +102,7 @@ class Error(Enum): BULK_DELETE_FAILURE = f"{error_prefix} Delete operation failed." EMPTY_SKYFLOW_ID= f"{error_prefix} Validation error. skyflow_id can't be empty." INVALID_FILE_COLUMN_NAME= f"{error_prefix} Validation error. 'column_name' can't be empty." - + INAVLID_SKYFLOW_ID = f"{error_prefix} Validation error. Invalid type of skyflow_id. Specify skyflow_id as a string." INVALID_QUERY_TYPE = f"{error_prefix} Validation error. Query parameter is of type {{}}. Specify as a string." EMPTY_QUERY = f"{error_prefix} Validation error. Query parameter can't be empty. Specify as a string." INVALID_QUERY_COMMAND = f"{error_prefix} Validation error. {{}} command was passed instead, but only SELECT commands are supported. Specify the SELECT command." @@ -278,7 +278,6 @@ class Info(Enum): VALIDATING_FILE_UPLOAD_REQUEST = f"{INFO}: [{error_prefix}] Validating file upload request." FILE_UPLOAD_REQUEST_RESOLVED = f"{INFO}: [{error_prefix}] File upload request resolved." FILE_UPLOAD_SUCCESS = f"{INFO}: [{error_prefix}] File uploaded successfully." - FILE_UPLOAD_REQUEST_REJECTED = f"{ERROR}: [{error_prefix}] File upload failed." INVOKE_CONNECTION_TRIGGERED = f"{INFO}: [{error_prefix}] Invoke connection method triggered." VALIDATING_INVOKE_CONNECTION_REQUEST = f"{INFO}: [{error_prefix}] Validating invoke connection request." @@ -308,6 +307,7 @@ class Info(Enum): DETECT_REQUEST_RESOLVED = f"{INFO}: [{error_prefix}] Detect request is resolved." class ErrorLogs(Enum): + FILE_UPLOAD_REQUEST_REJECTED = f"{ERROR}: [{error_prefix}] File upload failed." VAULTID_IS_REQUIRED = f"{ERROR}: [{error_prefix}] Invalid vault config. Vault ID is required." EMPTY_VAULTID = f"{ERROR}: [{error_prefix}] Invalid vault config. Vault ID can not be empty." CLUSTER_ID_IS_REQUIRED = f"{ERROR}: [{error_prefix}] Invalid vault config. Cluster ID is required." diff --git a/skyflow/utils/validations/_validations.py b/skyflow/utils/validations/_validations.py index f3428f45..ec273512 100644 --- a/skyflow/utils/validations/_validations.py +++ b/skyflow/utils/validations/_validations.py @@ -704,13 +704,10 @@ def validate_file_upload_request(logger, request): elif table.strip() == "": raise SkyflowError(SkyflowMessages.Error.EMPTY_TABLE_VALUE.value, invalid_input_error_code) - # Skyflow ID skyflow_id = getattr(request, "skyflow_id", None) - if skyflow_id is None: - raise SkyflowError(SkyflowMessages.Error.IDS_KEY_ERROR.value, invalid_input_error_code) - elif skyflow_id.strip() == "": - raise SkyflowError(SkyflowMessages.Error.EMPTY_SKYFLOW_ID.value.format("FILE_UPLOAD"), invalid_input_error_code) - + if skyflow_id is not None and (not isinstance(skyflow_id, str)): + raise SkyflowError(SkyflowMessages.Error.INAVLID_SKYFLOW_ID.value.format(type(skyflow_id)), invalid_input_error_code) + # Column Name column_name = getattr(request, "column_name", None) if column_name is None: diff --git a/skyflow/vault/data/_file_upload_request.py b/skyflow/vault/data/_file_upload_request.py index d1bd4a44..026937f8 100644 --- a/skyflow/vault/data/_file_upload_request.py +++ b/skyflow/vault/data/_file_upload_request.py @@ -3,12 +3,12 @@ class FileUploadRequest: def __init__(self, table: str, - skyflow_id: str, column_name: str, file_path: str= None, base64: str= None, file_object: BinaryIO= None, - file_name: str= None): + file_name: str= None, + skyflow_id: str= None): self.table = table self.skyflow_id = skyflow_id self.column_name = column_name From 2c6b5c35407231e807b3a106b63a8efb2987ce82 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 6 Feb 2026 17:47:04 +0530 Subject: [PATCH 2/3] SK-2541 support file upload along with record creation --- skyflow/utils/validations/_validations.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/skyflow/utils/validations/_validations.py b/skyflow/utils/validations/_validations.py index ec273512..71cc2de1 100644 --- a/skyflow/utils/validations/_validations.py +++ b/skyflow/utils/validations/_validations.py @@ -704,10 +704,12 @@ def validate_file_upload_request(logger, request): elif table.strip() == "": raise SkyflowError(SkyflowMessages.Error.EMPTY_TABLE_VALUE.value, invalid_input_error_code) + # if skyflowid is present check its types string or not skyflow_id = getattr(request, "skyflow_id", None) if skyflow_id is not None and (not isinstance(skyflow_id, str)): raise SkyflowError(SkyflowMessages.Error.INAVLID_SKYFLOW_ID.value.format(type(skyflow_id)), invalid_input_error_code) - + elif skyflow_id is not None and skyflow_id.strip() == "": + raise SkyflowError(SkyflowMessages.Error.EMPTY_SKYFLOW_ID.value, invalid_input_error_code) # Column Name column_name = getattr(request, "column_name", None) if column_name is None: From 0e406b140f51de161a7348fa94fbb66a01bca71d Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 6 Feb 2026 20:01:07 +0530 Subject: [PATCH 3/3] SK-2541 make skyflow id optional in file upload --- skyflow/utils/validations/_validations.py | 3 +-- tests/vault/controller/test__vault.py | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/skyflow/utils/validations/_validations.py b/skyflow/utils/validations/_validations.py index 71cc2de1..7f805d3b 100644 --- a/skyflow/utils/validations/_validations.py +++ b/skyflow/utils/validations/_validations.py @@ -708,8 +708,7 @@ def validate_file_upload_request(logger, request): skyflow_id = getattr(request, "skyflow_id", None) if skyflow_id is not None and (not isinstance(skyflow_id, str)): raise SkyflowError(SkyflowMessages.Error.INAVLID_SKYFLOW_ID.value.format(type(skyflow_id)), invalid_input_error_code) - elif skyflow_id is not None and skyflow_id.strip() == "": - raise SkyflowError(SkyflowMessages.Error.EMPTY_SKYFLOW_ID.value, invalid_input_error_code) + # Column Name column_name = getattr(request, "column_name", None) if column_name is None: diff --git a/tests/vault/controller/test__vault.py b/tests/vault/controller/test__vault.py index 4e1a0dda..7537c5f9 100644 --- a/tests/vault/controller/test__vault.py +++ b/tests/vault/controller/test__vault.py @@ -748,8 +748,6 @@ def test_validate_empty_skyflow_id(self): ) with self.assertRaises(SkyflowError) as error: validate_file_upload_request(self.logger, request) - self.assertEqual(error.exception.message, - SkyflowMessages.Error.EMPTY_SKYFLOW_ID.value.format("FILE_UPLOAD")) def test_validate_invalid_column_name(self): """Test validation fails when column_name is missing"""