package models import ( "time" "github.com/google/uuid" ) type CreateGameRequest struct { Name string `json:"name" validate:"required"` Type string `json:"type" validate:"required,oneof=SPIN RAFFLE MINIGAME"` IsActive bool `json:"is_active"` Metadata map[string]interface{} `json:"metadata"` } type UpdateGameRequest struct { Name *string `json:"name,omitempty" validate:"omitempty,required"` Type *string `json:"type,omitempty" validate:"omitempty,oneof=SPIN RAFFLE MINIGAME"` IsActive *bool `json:"is_active,omitempty"` Metadata map[string]interface{} `json:"metadata,omitempty"` } type GameResponse struct { ID uuid.UUID `json:"id"` Name string `json:"name"` Type string `json:"type"` IsActive bool `json:"is_active"` Metadata map[string]interface{} `json:"metadata"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type ListGamesQuery struct { Page int `query:"page" validate:"min=1"` Limit int `query:"limit" validate:"min=1,max=100"` Search string `query:"search"` Type string `query:"type" validate:"omitempty,oneof=SPIN RAFFLE MINIGAME"` IsActive *bool `query:"is_active"` SortBy string `query:"sort_by" validate:"omitempty,oneof=name type created_at updated_at"` SortOrder string `query:"sort_order" validate:"omitempty,oneof=asc desc"` }