aboutsummaryrefslogtreecommitdiffhomepage
path: root/backend/query.sql
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-08-08 19:30:20 +0900
committernsfisis <nsfisis@gmail.com>2024-08-08 19:30:20 +0900
commit9e5500269746d3826382a6dec78f0e82cfda0d42 (patch)
treed8f15d4081132d6cfff3ea3b02f197b2d6bad700 /backend/query.sql
parent401a28944fc0408811aedadd1c3104e2e2d4d7fe (diff)
parent113c83b19acc58fbd46e8acdac67ff1a112d0d8c (diff)
downloadphperkaigi-2025-albatross-9e5500269746d3826382a6dec78f0e82cfda0d42.tar.gz
phperkaigi-2025-albatross-9e5500269746d3826382a6dec78f0e82cfda0d42.tar.zst
phperkaigi-2025-albatross-9e5500269746d3826382a6dec78f0e82cfda0d42.zip
Merge branch 'feat/taskqueue'
Diffstat (limited to 'backend/query.sql')
-rw-r--r--backend/query.sql22
1 files changed, 20 insertions, 2 deletions
diff --git a/backend/query.sql b/backend/query.sql
index ea04c08..e767746 100644
--- a/backend/query.sql
+++ b/backend/query.sql
@@ -68,6 +68,24 @@ SELECT * FROM testcases
WHERE testcases.problem_id = (SELECT problem_id FROM games WHERE game_id = $1)
ORDER BY testcases.testcase_id;
--- name: CreateTestcaseExecution :exec
-INSERT INTO testcase_executions (submission_id, testcase_id, status, stdout, stderr)
+-- name: CreateSubmissionResult :exec
+INSERT INTO submission_results (submission_id, status, stdout, stderr)
+VALUES ($1, $2, $3, $4);
+
+-- name: CreateTestcaseResult :exec
+INSERT INTO testcase_results (submission_id, testcase_id, status, stdout, stderr)
VALUES ($1, $2, $3, $4, $5);
+
+-- name: AggregateTestcaseResults :one
+SELECT
+ CASE
+ WHEN COUNT(CASE WHEN r.status IS NULL THEN 1 END) > 0 THEN 'running'
+ WHEN COUNT(CASE WHEN r.status = 'internal_error' THEN 1 END) > 0 THEN 'internal_error'
+ WHEN COUNT(CASE WHEN r.status = 'timeout' THEN 1 END) > 0 THEN 'timeout'
+ WHEN COUNT(CASE WHEN r.status = 'runtime_error' THEN 1 END) > 0 THEN 'runtime_error'
+ WHEN COUNT(CASE WHEN r.status = 'wrong_answer' THEN 1 END) > 0 THEN 'wrong_answer'
+ ELSE 'success'
+ END AS status
+FROM testcases
+LEFT JOIN testcase_results AS r ON testcases.testcase_id = r.testcase_id
+WHERE r.submission_id = $1;