ecfb2d3351
Tests · Go / test (push) Successful in 1m58s
Add the games, runtime, and engine-version pages over the existing lobby,
runtime, and engine-version services (no new business logic).
- GET/POST /_gm/games list + create public game
- GET /_gm/games/{id} detail incl. runtime snapshot
- POST /_gm/games/{id}/force-start|stop game state actions
- POST /_gm/games/{id}/ban-member ban a member (uuid + reason)
- POST /_gm/games/{id}/runtime/restart|patch|force-next-turn
- GET/POST /_gm/engine-versions registry + register
- POST /_gm/engine-versions/{ver}/disable disable a version
Console depends on GameAdmin / RuntimeAdmin / EngineVersionAdmin interfaces
(satisfied by the concrete services) so the pages render in tests without a
database. Collection-mutating POSTs are mounted on the collection path to avoid
a static-vs-param route conflict in gin. Writes flow through the CSRF guard and
redirect back; the create form parses datetime-local as UTC.
Tests: list/detail (with and without a runtime), create (visibility/owner/time
assertions), force-start (+ bad-CSRF), ban-member (+ bad uuid), runtime patch
(+ missing version), engine-version list/register/disable, and unavailable.
Docs: backend/docs/admin-console.md page inventory extended.
68 lines
1.6 KiB
Go
68 lines
1.6 KiB
Go
package adminconsole
|
|
|
|
// GameRow is one line in the games list table.
|
|
type GameRow struct {
|
|
GameID string
|
|
GameName string
|
|
Visibility string
|
|
Status string
|
|
Owner string
|
|
Players string
|
|
TurnSchedule string
|
|
CreatedAt string
|
|
}
|
|
|
|
// GamesListData is the view model for the paginated games list.
|
|
type GamesListData struct {
|
|
Items []GameRow
|
|
Page int
|
|
PageSize int
|
|
Total int
|
|
HasPrev bool
|
|
HasNext bool
|
|
PrevPage int
|
|
NextPage int
|
|
}
|
|
|
|
// GameDetailData is the view model for a single game, combining the lobby
|
|
// record with the runtime snapshot and the available actions.
|
|
type GameDetailData struct {
|
|
GameID string
|
|
GameName string
|
|
Description string
|
|
Visibility string
|
|
Status string
|
|
Owner string
|
|
MinPlayers int32
|
|
MaxPlayers int32
|
|
StartGapHours int32
|
|
StartGapPlayers int32
|
|
TurnSchedule string
|
|
TargetEngineVersion string
|
|
EnrollmentEndsAt string
|
|
CreatedAt string
|
|
StartedAt string
|
|
FinishedAt string
|
|
|
|
HasRuntime bool
|
|
RuntimeStatus string
|
|
CurrentEngineVersion string
|
|
EngineHealth string
|
|
CurrentTurn int32
|
|
NextGenerationAt string
|
|
Paused bool
|
|
}
|
|
|
|
// EngineVersionRow is one line in the engine-version registry table.
|
|
type EngineVersionRow struct {
|
|
Version string
|
|
ImageRef string
|
|
Enabled bool
|
|
CreatedAt string
|
|
}
|
|
|
|
// EngineVersionsData is the view model for the engine-version registry page.
|
|
type EngineVersionsData struct {
|
|
Items []EngineVersionRow
|
|
}
|