117 lines
3.6 KiB
Go
117 lines
3.6 KiB
Go
|
package football
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
|
||
|
gql "github.com/llehouerou/go-graphql-client"
|
||
|
|
||
|
"git.lehouerou.net/laurent/sorare/graphql"
|
||
|
"git.lehouerou.net/laurent/sorare/types"
|
||
|
)
|
||
|
|
||
|
type Injury struct {
|
||
|
Id graphql.Id `graphql:"id"`
|
||
|
Active bool `graphql:"active"`
|
||
|
StartDate time.Time `graphql:"startDate"`
|
||
|
ExpectedEndDate time.Time `graphql:"expectedEndDate"`
|
||
|
Kind string `graphql:"kind"`
|
||
|
}
|
||
|
|
||
|
type Suspension struct {
|
||
|
Id graphql.Id `graphql:"id"`
|
||
|
Active bool `graphql:"active"`
|
||
|
StartDate time.Time `graphql:"startDate"`
|
||
|
EndDate time.Time `graphql:"endDate"`
|
||
|
Kind string `graphql:"kind"`
|
||
|
Matches int `graphql:"matches"`
|
||
|
Reason string `graphql:"reason"`
|
||
|
Competition struct {
|
||
|
Slug string `graphql:"slug"`
|
||
|
} `graphql:"competition"`
|
||
|
}
|
||
|
|
||
|
type Player struct {
|
||
|
ActiveClub struct {
|
||
|
Slug string `graphql:"slug"`
|
||
|
ActiveCompetitions []struct {
|
||
|
Slug string `graphql:"slug"`
|
||
|
Format string `graphql:"format"`
|
||
|
} `graphql:"activeCompetitions"`
|
||
|
} `graphql:"activeClub"`
|
||
|
ActiveNationalTeam struct {
|
||
|
Slug string `graphql:"slug"`
|
||
|
} `graphql:"activeNationalTeam"`
|
||
|
ActiveInjuries []Injury `graphql:"activeInjuries"`
|
||
|
ActiveSuspensions []Suspension `graphql:"activeSuspensions"`
|
||
|
Age int `graphql:"age"`
|
||
|
Appearances int `graphql:"appearances"`
|
||
|
BestFoot string `graphql:"bestFoot"`
|
||
|
BirthDate time.Time `graphql:"birthDate"`
|
||
|
CardPositions []types.Position `graphql:"cardPositions"`
|
||
|
Id graphql.Id `graphql:"id"`
|
||
|
Slug string `graphql:"slug"`
|
||
|
DisplayName string `graphql:"displayName"`
|
||
|
FirstName string `graphql:"firstName"`
|
||
|
Height int `graphql:"height"`
|
||
|
Injuries []Injury `graphql:"injuries"`
|
||
|
LastClub struct {
|
||
|
Slug string `graphql:"slug"`
|
||
|
} `graphql:"lastClub"`
|
||
|
LastName string `graphql:"lastName"`
|
||
|
MatchName string `graphql:"matchName"`
|
||
|
PictureUrl string `graphql:"pictureUrl"`
|
||
|
PlayingStatus types.PlayerPlayingStatus `graphql:"playingStatus"`
|
||
|
Country struct {
|
||
|
Slug string `graphql:"slug"`
|
||
|
Code string `graphql:"code"`
|
||
|
}
|
||
|
AvatarUrl string `graphql:"avatar:pictureUrl(derivative:\"avatar\")"`
|
||
|
|
||
|
Position types.Position `graphql:"position"`
|
||
|
ShirtNumber int `graphql:"shirtNumber"`
|
||
|
Suspensions []Suspension `graphql:"suspensions"`
|
||
|
User struct {
|
||
|
Slug string `graphql:"slug"`
|
||
|
} `graphql:"user"`
|
||
|
Weight int `graphql:"weight"`
|
||
|
}
|
||
|
|
||
|
type PlayerScore struct {
|
||
|
Slug string `graphql:"slug"`
|
||
|
So5Score So5Score `graphql:"so5Score(gameId:$gameId)"`
|
||
|
}
|
||
|
|
||
|
func (f *Football) PlayerCards(
|
||
|
playerSlug string,
|
||
|
) *graphql.PaginatedQuery[Card, CardsParams] {
|
||
|
return graphql.NewPaginatedQuery[Card, CardsParams](
|
||
|
f.c,
|
||
|
"cards",
|
||
|
[]string{"football", "player(slug:$slug)"},
|
||
|
).WithQueryParam("slug", playerSlug)
|
||
|
}
|
||
|
|
||
|
func (f *Football) PlayersGameScores(
|
||
|
gameId gql.ID,
|
||
|
) *graphql.Query[[]PlayerScore, graphql.SlugsParams] {
|
||
|
return graphql.NewQuery[[]PlayerScore, graphql.SlugsParams](
|
||
|
f.c,
|
||
|
"players",
|
||
|
[]string{"football"},
|
||
|
).WithQueryParam("gameId", gameId)
|
||
|
}
|
||
|
|
||
|
type So5ScoresParams struct {
|
||
|
Position *types.Position `graphql:"position"`
|
||
|
}
|
||
|
|
||
|
func (f *Football) PlayerAllSo5Scores(
|
||
|
playerSlug string,
|
||
|
) *graphql.PaginatedQuery[So5Score, So5ScoresParams] {
|
||
|
return graphql.NewPaginatedQuery[So5Score, So5ScoresParams](
|
||
|
f.c,
|
||
|
"allSo5Scores",
|
||
|
[]string{"football", "player(slug:$slug)"},
|
||
|
).WithQueryParam("slug", playerSlug)
|
||
|
}
|