diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-02-20 23:32:22 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-02-20 23:32:22 +0900 |
| commit | 8e73d12a703e90ad908962143951178c13d0d6fe (patch) | |
| tree | 8bed43aa4b115f8bc50ed258aa192a94b6d2903e /typespec | |
| parent | aa07ba2e0a40b0097a4f9aee3c06dcbd9a749105 (diff) | |
| download | phperkaigi-2026-albatross-8e73d12a703e90ad908962143951178c13d0d6fe.tar.gz phperkaigi-2026-albatross-8e73d12a703e90ad908962143951178c13d0d6fe.tar.zst phperkaigi-2026-albatross-8e73d12a703e90ad908962143951178c13d0d6fe.zip | |
feat: add user submission history page
Allow users to view their own past submissions (code, size, status,
timestamp) for each game. Adds API endpoint, backend handler, SQL query,
and frontend page with expandable code display.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'typespec')
| -rw-r--r-- | typespec/api-server/models.tsp | 11 | ||||
| -rw-r--r-- | typespec/api-server/routes.tsp | 9 |
2 files changed, 20 insertions, 0 deletions
diff --git a/typespec/api-server/models.tsp b/typespec/api-server/models.tsp index 6605767..570977c 100644 --- a/typespec/api-server/models.tsp +++ b/typespec/api-server/models.tsp @@ -119,6 +119,17 @@ model TournamentEntry { seed: integer; } +model Submission { + submission_id: integer; + game_id: integer; + code: string; + code_size: integer; + status: ExecutionStatus; + + @extension("x-go-type", "int64") + created_at: integer; +} + model TournamentMatch { tournament_match_id: integer; round: integer; diff --git a/typespec/api-server/routes.tsp b/typespec/api-server/routes.tsp index a67ab8f..4f90822 100644 --- a/typespec/api-server/routes.tsp +++ b/typespec/api-server/routes.tsp @@ -88,6 +88,15 @@ op postGamePlaySubmit( @statusCode statusCode: 200; } | UnauthorizedError | ForbiddenError | NotFoundError; +@route("/games/{game_id}/play/submissions") +@get +@operationId("getGamePlaySubmissions") +op getGamePlaySubmissions(@path game_id: integer): { + @body body: { + submissions: Submission[]; + }; +} | UnauthorizedError | ForbiddenError | NotFoundError; + // ---------- Watch ---------- @route("/games/{game_id}/watch/ranking") |
