diff options
| author | Claude <noreply@anthropic.com> | 2026-02-24 12:19:35 +0000 |
|---|---|---|
| committer | Claude <noreply@anthropic.com> | 2026-02-24 12:19:35 +0000 |
| commit | 6a939257294655dd5c1b5ada323dfdc7dfc013f3 (patch) | |
| tree | 138dc38f5bf2d5d53b2eca16ab7c271c128c9f28 /backend/admin/handler.go | |
| parent | 6232e2f3094d53151a17db9c36f35e192d9d304d (diff) | |
| download | phperkaigi-2026-albatross-6a939257294655dd5c1b5ada323dfdc7dfc013f3.tar.gz phperkaigi-2026-albatross-6a939257294655dd5c1b5ada323dfdc7dfc013f3.tar.zst phperkaigi-2026-albatross-6a939257294655dd5c1b5ada323dfdc7dfc013f3.zip | |
fix(admin): show username in submissions and add testcase links to problems list
Submissions list and detail pages now display the username alongside the
user ID instead of showing only a numeric ID. The problems list page now
includes a direct link to each problem's testcases for easier navigation.
https://claude.ai/code/session_01JF5ZmGAQ4zNbhV5DM729Fw
Diffstat (limited to 'backend/admin/handler.go')
| -rw-r--r-- | backend/admin/handler.go | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/backend/admin/handler.go b/backend/admin/handler.go index f115745..fcf85a3 100644 --- a/backend/admin/handler.go +++ b/backend/admin/handler.go @@ -530,16 +530,28 @@ func (h *Handler) getSubmissions(c echo.Context) error { return echo.NewHTTPError(http.StatusBadRequest, "Invalid game_id") } - submissions, err := h.q.GetSubmissionsByGameID(c.Request().Context(), int32(gameID)) + ctx := c.Request().Context() + + submissions, err := h.q.GetSubmissionsByGameID(ctx, int32(gameID)) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) } + userRows, err := h.q.ListUsers(ctx) + if err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) + } + usernameMap := make(map[int32]string, len(userRows)) + for _, u := range userRows { + usernameMap[u.UserID] = u.Username + } + entries := make([]echo.Map, len(submissions)) for i, r := range submissions { entries[i] = echo.Map{ "SubmissionID": r.SubmissionID, "UserID": r.UserID, + "Username": usernameMap[r.UserID], "Status": r.Status, "CodeSize": r.CodeSize, "CreatedAt": r.CreatedAt.Time.In(jst).Format("2006-01-02T15:04"), @@ -565,7 +577,9 @@ func (h *Handler) getSubmissionDetail(c echo.Context) error { return echo.NewHTTPError(http.StatusBadRequest, "Invalid submission_id") } - submission, err := h.q.GetSubmissionByID(c.Request().Context(), int32(submissionID)) + ctx := c.Request().Context() + + submission, err := h.q.GetSubmissionByID(ctx, int32(submissionID)) if err != nil { if errors.Is(err, pgx.ErrNoRows) { return echo.NewHTTPError(http.StatusNotFound) @@ -573,7 +587,17 @@ func (h *Handler) getSubmissionDetail(c echo.Context) error { return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) } - testcaseResultRows, err := h.q.GetTestcaseResultsBySubmissionID(c.Request().Context(), int32(submissionID)) + var username string + user, err := h.q.GetUserByID(ctx, submission.UserID) + if err != nil { + if !errors.Is(err, pgx.ErrNoRows) { + return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) + } + } else { + username = user.Username + } + + testcaseResultRows, err := h.q.GetTestcaseResultsBySubmissionID(ctx, int32(submissionID)) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) } @@ -596,6 +620,7 @@ func (h *Handler) getSubmissionDetail(c echo.Context) error { "Submission": echo.Map{ "SubmissionID": submission.SubmissionID, "UserID": submission.UserID, + "Username": username, "Status": submission.Status, "CodeSize": submission.CodeSize, "CreatedAt": submission.CreatedAt.Time.In(jst).Format("2006-01-02T15:04"), |
