diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-02-20 21:38:58 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-02-20 21:38:58 +0900 |
| commit | 85b7a14913c05b88b720fc546eaca5575ffe53fd (patch) | |
| tree | b19d66d3500bb4b697cf656a769a111411793cf3 /backend/db/query.sql.go | |
| parent | fa788237eb5649e08b2a38ec21689b481b10c073 (diff) | |
| download | phperkaigi-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.go | 35 |
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 |
