99 lines
2.5 KiB
Go
99 lines
2.5 KiB
Go
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,
|
|
)
|
|
}
|