package domain import "time" // TODO: turn status into an enum // Status represents the status of an event. // 0 Not Started // 1 InPlay // 2 TO BE FIXED // 3 Ended // 4 Postponed // 5 Cancelled // 6 Walkover // 7 Interrupted // 8 Abandoned // 9 Retired // 10 Suspended // 11 Decided by FA // 99 Removed type EventStatus string const ( STATUS_PENDING EventStatus = "upcoming" STATUS_IN_PLAY EventStatus = "in_play" STATUS_TO_BE_FIXED EventStatus = "to_be_fixed" STATUS_ENDED EventStatus = "ended" STATUS_POSTPONED EventStatus = "postponed" STATUS_CANCELLED EventStatus = "cancelled" STATUS_WALKOVER EventStatus = "walkover" STATUS_INTERRUPTED EventStatus = "interrupted" STATUS_ABANDONED EventStatus = "abandoned" STATUS_RETIRED EventStatus = "retired" STATUS_SUSPENDED EventStatus = "suspended" STATUS_DECIDED_BY_FA EventStatus = "decided_by_fa" STATUS_REMOVED EventStatus = "removed" ) type Event struct { ID string SportID int32 MatchName string HomeTeam string AwayTeam string HomeTeamID int32 AwayTeamID int32 HomeKitImage string AwayKitImage string LeagueID int32 LeagueName string LeagueCC string StartTime string Score string MatchMinute int TimerStatus string AddedTime int MatchPeriod int IsLive bool Status string Source string } type BetResult struct { Success int `json:"success"` Pager struct { Page int `json:"page"` PerPage int `json:"per_page"` Total int `json:"total"` } Results []struct { ID string `json:"id"` SportID string `json:"sport_id"` Time string `json:"time"` League struct { ID string `json:"id"` Name string `json:"name"` } `json:"league"` Home struct { ID string `json:"id"` Name string `json:"name"` } `json:"home"` Away *struct { ID string `json:"id"` Name string `json:"name"` } `json:"away"` } `json:"results"` } type UpcomingEvent struct { ID string `json:"id"` // Event ID SportID int32 `json:"sport_id"` // Sport ID MatchName string `json:"match_name"` // Match or event name HomeTeam string `json:"home_team"` // Home team name (if available) AwayTeam string `json:"away_team"` // Away team name (can be empty/null) HomeTeamID int32 `json:"home_team_id"` // Home team ID AwayTeamID int32 `json:"away_team_id"` // Away team ID (can be empty/null) HomeKitImage string `json:"home_kit_image"` // Kit or image for home team (optional) AwayKitImage string `json:"away_kit_image"` // Kit or image for away team (optional) LeagueID int32 `json:"league_id"` // League ID LeagueName string `json:"league_name"` // League name LeagueCC string `json:"league_cc"` // League country code StartTime time.Time `json:"start_time"` // Converted from "time" field in UNIX format Source string `json:"source"` // bet api provider (bet365, betfair) Status EventStatus `json:"status"` //Match Status for event } type MatchResult struct { EventID string FullScore string HalfScore string Status string Scores map[string]map[string]string } type Odds struct { ID int64 `json:"id"` EventID string `json:"event_id"` MarketType string `json:"market_type"` Name string `json:"name"` HitStatus string `json:"hit_status"` } type EventFilter struct { SportID ValidInt32 LeagueID ValidInt32 CountryCode ValidString FirstStartTime ValidTime LastStartTime ValidTime Limit ValidInt64 Offset ValidInt64 MatchStatus ValidString // e.g., "upcoming", "in_play", "ended" }