package football import ( "fmt" "time" "git.lehouerou.net/laurent/sorare/graphql" "git.lehouerou.net/laurent/sorare/types" ) type GameWithFormation struct { Game AwayFormation struct { Bench []struct { Slug string `graphql:"slug"` } `graphql:"bench"` StartingLineup [][]struct { Slug string `graphql:"slug"` } `graphql:"startingLineup"` } `graphql:"awayFormation"` HomeFormation struct { Bench []struct { Slug string `graphql:"slug"` } `graphql:"bench"` StartingLineup [][]struct { Slug string `graphql:"slug"` } `graphql:"startingLineup"` } `graphql:"homeFormation"` } type Game struct { Id graphql.Id `graphql:"id"` AwayGoals int `graphql:"awayGoals"` AwayTeam struct { TypeName string `graphql:"__typename"` Team struct { Slug string `graphql:"slug"` } `graphql:"... on TeamInterface"` } `graphql:"awayTeam"` Competition struct { Slug string `graphql:"slug"` } `graphql:"competition"` CoverageStatus string `graphql:"coverageStatus"` Date time.Time `graphql:"date"` ExtraTimeScoreAway int `graphql:"extraTimeScoreAway"` ExtraTimeScoreHome int `graphql:"extraTimeScoreHome"` HomeGoals int `graphql:"homeGoals"` HomeTeam struct { TypeName string `graphql:"__typename"` Team struct { Slug string `graphql:"slug"` } `graphql:"... on TeamInterface"` } `graphql:"homeTeam"` LowCoverage bool `graphql:"lowCoverage"` Minute int `graphql:"minute"` PenaltyScoreAway int `graphql:"penaltyScoreAway"` PenaltyScoreHome int `graphql:"penaltyScoreHome"` PeriodType string `graphql:"periodType"` Scored bool `graphql:"scored"` So5Fixture struct { Slug string `graphql:"slug"` } `graphql:"so5Fixture"` Status string `graphql:"status"` Winner struct { TypeName string `graphql:"__typename"` Team struct { Slug string `graphql:"slug"` } `graphql:"... on TeamInterface"` } `graphql:"winner"` } type ClubGamesParams struct { StartDate types.ISO8601DateTime `graphql:"startDate"` EndDate types.ISO8601DateTime `graphql:"endDate"` } func (f *Football) NewClubGamesQuery( clubSlug string, ) *graphql.PaginatedQuery[Game, ClubGamesParams] { return graphql.NewPaginatedQuery[Game, ClubGamesParams]( f.c, "games", []string{"football", "club(slug:$slug)"}, ).WithQueryParam("slug", clubSlug) } func (g *Game) String() string { return fmt.Sprintf( "%s | %s %d - %d %s", g.Date.Format("2006-01-02"), g.HomeTeam.Team.Slug, g.HomeGoals, g.AwayGoals, g.AwayTeam.Team.Slug, ) }