ed53e25e57
CI / changes (pull_request) Successful in 5s
CI / unit (pull_request) Successful in 11s
CI / integration (pull_request) Successful in 20s
CI / ui (pull_request) Has been skipped
CI / conformance (pull_request) Successful in 11s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 2m41s
Cap a player's simultaneous unfinished games per kind (vs_ai, random, friends) with independent guest and durable-account tiers, held in a new single-row backend.config table (-1 = unlimited) behind an in-memory cache and editable live in the admin console (/_gm/limits). Each game is tagged with games.game_kind on creation. This replaces the earlier flat MaxActiveQuickGames=10 combined cap: the per-tier/kind config is the single mechanism, enforced at the same handler gate (ensureUnderGameLimit by kind on lobby/enqueue) plus the durable friends cap in CreateInvitation. game.Service.AtGameLimit only resolves the tier and counts; the limit policy stays at the request edge. Guests are now refused friend requests, friend-code redemption, befriend-in-game and invitation creation outright (403 guest_forbidden) -- previously only the UI hid these. Admin: a kind column in both game lists and the config editor. Defaults: guest 1 vs_ai / 1 random / 0 friends; durable 10 / 10 / 10.
38 lines
880 B
Go
38 lines
880 B
Go
//
|
|
// Code generated by go-jet DO NOT EDIT.
|
|
//
|
|
// WARNING: Changes to this file may cause incorrect behavior
|
|
// and will be lost if the code is regenerated
|
|
//
|
|
|
|
package model
|
|
|
|
import (
|
|
"github.com/google/uuid"
|
|
"time"
|
|
)
|
|
|
|
type Games struct {
|
|
GameID uuid.UUID `sql:"primary_key"`
|
|
Variant string
|
|
DictVersion string
|
|
Seed int64
|
|
Status string
|
|
Players int16
|
|
ToMove int16
|
|
TurnStartedAt time.Time
|
|
TurnTimeoutSecs int32
|
|
HintsAllowed bool
|
|
HintsPerPlayer int16
|
|
MoveCount int32
|
|
EndReason *string
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
FinishedAt *time.Time
|
|
OpenDeadlineAt *time.Time
|
|
DropoutTiles string
|
|
MultipleWordsPerTurn bool
|
|
VsAi bool
|
|
GameKind int16
|
|
}
|