aboutsummaryrefslogtreecommitdiffhomepage
path: root/backend/db/query.sql.go
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-02-20 21:38:58 +0900
committernsfisis <nsfisis@gmail.com>2026-02-20 21:38:58 +0900
commit85b7a14913c05b88b720fc546eaca5575ffe53fd (patch)
treeb19d66d3500bb4b697cf656a769a111411793cf3 /backend/db/query.sql.go
parentfa788237eb5649e08b2a38ec21689b481b10c073 (diff)
downloadphperkaigi-2026-albatross-85b7a14913c05b88b720fc546eaca5575ffe53fd.tar.gz
phperkaigi-2026-albatross-85b7a14913c05b88b720fc546eaca5575ffe53fd.tar.zst
phperkaigi-2026-albatross-85b7a14913c05b88b720fc546eaca5575ffe53fd.zip
feat(admin): add bulk rejudge for game submissions
Extract common rejudge logic into a helper method and add two new endpoints: rejudge-latest (per-user latest only) and rejudge-all. This allows re-running submissions in bulk after testcase changes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'backend/db/query.sql.go')
-rw-r--r--backend/db/query.sql.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/backend/db/query.sql.go b/backend/db/query.sql.go
index 8a13726..02f1abf 100644
--- a/backend/db/query.sql.go
+++ b/backend/db/query.sql.go
@@ -472,6 +472,41 @@ func (q *Queries) GetLatestStatesOfMainPlayers(ctx context.Context, gameID int32
return items, nil
}
+const getLatestSubmissionsByGameID = `-- name: GetLatestSubmissionsByGameID :many
+SELECT DISTINCT ON (user_id) submission_id, game_id, user_id, code, code_size, status, created_at
+FROM submissions
+WHERE game_id = $1
+ORDER BY user_id, created_at DESC
+`
+
+func (q *Queries) GetLatestSubmissionsByGameID(ctx context.Context, gameID int32) ([]Submission, error) {
+ rows, err := q.db.Query(ctx, getLatestSubmissionsByGameID, gameID)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+ var items []Submission
+ for rows.Next() {
+ var i Submission
+ if err := rows.Scan(
+ &i.SubmissionID,
+ &i.GameID,
+ &i.UserID,
+ &i.Code,
+ &i.CodeSize,
+ &i.Status,
+ &i.CreatedAt,
+ ); err != nil {
+ return nil, err
+ }
+ items = append(items, i)
+ }
+ if err := rows.Err(); err != nil {
+ return nil, err
+ }
+ return items, nil
+}
+
const getProblemByID = `-- name: GetProblemByID :one
SELECT problem_id, title, description, language, sample_code FROM problems
WHERE problem_id = $1