package model import "time" // GameGiftCatalog is the model-first editable, server-version-fenced gift draft. type GameGiftCatalog struct { ID string `json:"id" db:"id"` ServerInstanceID string `json:"serverInstanceId" db:"server_instance_id"` Name string `json:"name" db:"name"` GameVersion string `json:"gameVersion" db:"game_version"` LatestRevisionID string `json:"latestRevisionId" db:"latest_revision_id"` CreatedBy string `json:"createdBy" db:"created_by"` CreatedAt time.Time `json:"createdAt" db:"created_at"` UpdatedAt time.Time `json:"updatedAt" db:"updated_at"` } func (GameGiftCatalog) TableName() string { return "game_gift_catalogs" } // GameGiftRevision is an immutable gift item snapshot. type GameGiftRevision struct { ID string `json:"id" db:"id"` CatalogID string `json:"catalogId" db:"catalog_id"` ServerInstanceID string `json:"serverInstanceId" db:"server_instance_id"` Revision int `json:"revision" db:"revision"` GameVersion string `json:"gameVersion" db:"game_version"` PublishedBy string `json:"publishedBy" db:"published_by"` PublishedAt time.Time `json:"publishedAt" db:"published_at"` } func (GameGiftRevision) TableName() string { return "game_gift_revisions" } // GameGiftGrant records a directed frozen gift lifecycle without raw game commands. type GameGiftGrant struct { ID string `json:"id" db:"id"` ServerInstanceID string `json:"serverInstanceId" db:"server_instance_id"` RevisionID string `json:"revisionId" db:"revision_id"` GamePlayerRecordID string `json:"gamePlayerRecordId" db:"game_player_record_id"` Status string `json:"status" db:"status"` DeliveryCommandID string `json:"deliveryCommandId" db:"delivery_command_id"` NotificationCommandID string `json:"notificationCommandId" db:"notification_command_id"` CreatedAt time.Time `json:"createdAt" db:"created_at"` UpdatedAt time.Time `json:"updatedAt" db:"updated_at"` } func (GameGiftGrant) TableName() string { return "game_gift_grants" }