61 lines
1.9 KiB
Go
61 lines
1.9 KiB
Go
package contract
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
// Request Contracts
|
|
type GetCustomerGamesRequest struct {
|
|
// No additional fields needed - customer ID comes from JWT token
|
|
}
|
|
|
|
// Response Contracts
|
|
type GetCustomerGamesResponse struct {
|
|
Status string `json:"status"`
|
|
Message string `json:"message"`
|
|
Data *GetCustomerGamesResponseData `json:"data,omitempty"`
|
|
}
|
|
|
|
type GetCustomerGamesResponseData struct {
|
|
Games []CustomerGameResponse `json:"games"`
|
|
}
|
|
|
|
type CustomerGameResponse 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,omitempty"`
|
|
Prizes []CustomerGamePrizeResponse `json:"prizes,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type CustomerGamePrizeResponse struct {
|
|
ID uuid.UUID `json:"id"`
|
|
GameID uuid.UUID `json:"game_id"`
|
|
Name string `json:"name"`
|
|
Image *string `json:"image,omitempty"`
|
|
Metadata *map[string]interface{} `json:"metadata,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
// Ferris Wheel Game Contracts
|
|
type GetFerrisWheelGameRequest struct {
|
|
// No additional fields needed - customer ID comes from JWT token
|
|
}
|
|
|
|
type GetFerrisWheelGameResponse struct {
|
|
Status string `json:"status"`
|
|
Message string `json:"message"`
|
|
Data *GetFerrisWheelGameResponseData `json:"data,omitempty"`
|
|
}
|
|
|
|
type GetFerrisWheelGameResponseData struct {
|
|
Game CustomerGameResponse `json:"game"`
|
|
Prizes []CustomerGamePrizeResponse `json:"prizes"`
|
|
}
|