Skip to content

Commit 9df6798

Browse files
committed
Handle empty file list, improve JSON error handling, and enhance profile merging logic in validation operation
1 parent c9a0476 commit 9df6798

File tree

1 file changed

+28
-14
lines changed

1 file changed

+28
-14
lines changed

backend/app/operations/validate.py

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,26 +37,40 @@ def official_format_to_aidbox(data: dict) -> dict:
3737
profiles = data.get("cliContext", {}).get("profiles", [])
3838
files_to_validate = data.get("filesToValidate", [])
3939
session_id = data.get("sessionId", "")
40+
41+
if not files_to_validate:
42+
return {"resource": {}, "file_info": {}, "session_id": session_id}
43+
4044
if len(files_to_validate) == 1:
41-
resource_data = files_to_validate[0].get("fileContent", {})
42-
resource_data = json.loads(resource_data)
43-
resource_data_meta = resource_data.get("meta")
44-
if resource_data_meta is not None:
45-
resource_data_meta_profile = resource_data_meta.get("profile", [])
46-
if resource_data_meta_profile is not None:
47-
resource_data["meta"]["profile"] = profiles
48-
else:
49-
resource_data["meta"] = {"profile": profiles}
50-
else:
51-
resource_data["meta"] = {"profile": profiles}
52-
45+
try:
46+
resource_data = files_to_validate[0].get("fileContent", {})
47+
resource_data = json.loads(resource_data)
48+
except (json.JSONDecodeError, TypeError) as e:
49+
return {
50+
"resource": {},
51+
"file_info": files_to_validate[0],
52+
"session_id": session_id,
53+
"error": f"Invalid JSON: {str(e)}"
54+
}
55+
56+
if "meta" not in resource_data:
57+
resource_data["meta"] = {}
58+
59+
existing_profiles = resource_data["meta"].get("profile", [])
60+
all_profiles = list(set(existing_profiles + profiles))
61+
resource_data["meta"]["profile"] = all_profiles
62+
5363
return {
5464
"resource": resource_data,
5565
"file_info": files_to_validate[0],
5666
"session_id": session_id,
5767
}
58-
59-
return {"resource": {}, "file_info": files_to_validate[0], "session_id": session_id}
68+
69+
return {
70+
"resource": {},
71+
"file_info": files_to_validate[0] if files_to_validate else {},
72+
"session_id": session_id
73+
}
6074

6175

6276
def aidbox_response_to_official_format(

0 commit comments

Comments
 (0)