Skip to content

Commit e58d601

Browse files
committed
Made grade params not required
1 parent 74ea84b commit e58d601

File tree

1 file changed

+41
-13
lines changed

1 file changed

+41
-13
lines changed

app.py

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,46 @@ def fetch_data(conn: Connection, sql_limit: int, eval_function_name: str, grade_
4747
"""
4848
limit = max(1, min(sql_limit, DEFAULT_SQL_LIMIT))
4949

50-
sql_query_template = """
51-
SELECT DISTINCT ON (S.submission, RA."partId")
52-
S.submission, S.answer, S.grade, RA."gradeParams"::json as grade_params, RA."partId"
53-
FROM "Submission" S
54-
INNER JOIN public."ResponseArea" RA ON S."responseAreaId" = RA.id
55-
INNER JOIN "EvaluationFunction" EF ON RA."evaluationFunctionId" = EF.id
56-
WHERE
57-
EF.name = :name_param AND
58-
RA."gradeParams"::jsonb = (:params_param)::jsonb
59-
LIMIT :limit_param;
60-
"""
50+
# Start with mandatory filters
51+
where_clauses = ["EF.name = :name_param"]
52+
params = {
53+
"name_param": eval_function_name,
54+
"limit_param": limit
55+
}
56+
57+
# Conditionally add the gradeParams filter
58+
if grade_params_json:
59+
where_clauses.append("RA.\"gradeParams\"::jsonb = (:params_param)::jsonb")
60+
params["params_param"] = grade_params_json
61+
62+
# Combine clauses with AND
63+
where_sql = " AND ".join(where_clauses)
64+
65+
# Start with mandatory filters
66+
where_clauses = ["EF.name = :name_param"]
67+
params = {
68+
"name_param": eval_function_name,
69+
"limit_param": limit
70+
}
71+
72+
# Conditionally add the gradeParams filter
73+
if grade_params_json:
74+
where_clauses.append("RA.\"gradeParams\"::jsonb = (:params_param)::jsonb")
75+
params["params_param"] = grade_params_json
76+
77+
# Combine clauses with AND
78+
where_sql = " AND ".join(where_clauses)
79+
80+
sql_query_template = f"""
81+
SELECT
82+
S.submission, S.answer, S.grade, RA."gradeParams"::json as grade_params
83+
FROM "Submission" S
84+
INNER JOIN public."ResponseArea" RA ON S."responseAreaId" = RA.id
85+
INNER JOIN "EvaluationFunction" EF ON RA."evaluationFunctionId" = EF.id
86+
WHERE
87+
{where_sql}
88+
LIMIT :limit_param;
89+
"""
6190

6291
data_records = []
6392
try:
@@ -228,11 +257,10 @@ def lambda_handler(event: Dict[str, Any], context: Any) -> Dict[str, Any]:
228257
eval_function_name = payload.get('eval_function_name')
229258
grade_params_json = payload.get('grade_params_json')
230259

231-
if not endpoint_to_test or not eval_function_name or not grade_params_json:
260+
if not endpoint_to_test or not eval_function_name:
232261
missing_fields = []
233262
if not endpoint_to_test: missing_fields.append("'endpoint'")
234263
if not eval_function_name: missing_fields.append("'eval_function_name'")
235-
if not grade_params_json: missing_fields.append("'grade_params_json'")
236264
raise ValueError(f"Missing required input fields: {', '.join(missing_fields)}")
237265

238266
conn = get_db_connection()

0 commit comments

Comments
 (0)