package api import ( "context" "database/sql" "time" "github.com/cosmic-clash/cosmic-clash/server/store" ) // AssignmentProviderFromStore adapts the durable player-scoped assignment // projection to the HTTP boundary. The store query filters expiry and binds // both match and player; the API still performs its response-shape checks. func AssignmentProviderFromStore(db *sql.DB) AssignmentProvider { return func(ctx context.Context, playerID, matchID string, now time.Time) (AssignmentView, error) { assignment, err := store.GetAssignment(ctx, db, playerID, matchID, now) if err != nil { return AssignmentView{}, err } return AssignmentView{ MatchID: assignment.MatchID, ServerID: assignment.ServerID, PlayerID: assignment.PlayerID, Slot: assignment.Slot, ExpiresAt: assignment.ExpiresAt, ProtocolVersion: assignment.ProtocolVersion, Transport: assignment.Transport, JoinAuthorisation: assignment.JoinAuthorisation, }, nil } }