add multi games formation query
This commit is contained in:
parent
026bd11ebc
commit
11a67f038c
@ -17,6 +17,7 @@ type Football struct {
|
|||||||
ClubsReady *graphql.Query[[]Club, graphql.EmptyParams]
|
ClubsReady *graphql.Query[[]Club, graphql.EmptyParams]
|
||||||
Competition *graphql.Query[Competition, graphql.SlugParams]
|
Competition *graphql.Query[Competition, graphql.SlugParams]
|
||||||
Game *graphql.Query[GameWithFormation, graphql.IdParams]
|
Game *graphql.Query[GameWithFormation, graphql.IdParams]
|
||||||
|
GamesFormation *GamesFormationQuery
|
||||||
MyLiveGames *graphql.Query[[]Game, graphql.EmptyParams]
|
MyLiveGames *graphql.Query[[]Game, graphql.EmptyParams]
|
||||||
NationalTeam *graphql.Query[NationalTeam, graphql.SlugParams]
|
NationalTeam *graphql.Query[NationalTeam, graphql.SlugParams]
|
||||||
NationalTeams *graphql.Query[[]NationalTeam, graphql.SlugsParams]
|
NationalTeams *graphql.Query[[]NationalTeam, graphql.SlugsParams]
|
||||||
@ -77,6 +78,9 @@ func NewFootball(c *graphql.Client) *Football {
|
|||||||
"game",
|
"game",
|
||||||
[]string{"football"},
|
[]string{"football"},
|
||||||
),
|
),
|
||||||
|
GamesFormation: NewGamesFormationQuery(
|
||||||
|
c,
|
||||||
|
),
|
||||||
MyLiveGames: graphql.NewQuery[[]Game, graphql.EmptyParams](
|
MyLiveGames: graphql.NewQuery[[]Game, graphql.EmptyParams](
|
||||||
c,
|
c,
|
||||||
"myLiveGames",
|
"myLiveGames",
|
||||||
|
74
football/games_formation_query.go
Normal file
74
football/games_formation_query.go
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
package football
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
|
||||||
|
"git.lehouerou.net/laurent/sorare/graphql"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GamesFormationQuery struct {
|
||||||
|
c *graphql.Client
|
||||||
|
}
|
||||||
|
|
||||||
|
type GameFormation struct {
|
||||||
|
Id graphql.Id `graphql:"id"`
|
||||||
|
AwayTeam struct {
|
||||||
|
Team struct {
|
||||||
|
Slug string `graphql:"slug"`
|
||||||
|
} `graphql:"... on TeamInterface"`
|
||||||
|
} `graphql:"awayTeam"`
|
||||||
|
AwayFormation struct {
|
||||||
|
Bench []struct {
|
||||||
|
Slug string `graphql:"slug"`
|
||||||
|
} `graphql:"bench"`
|
||||||
|
StartingLineup [][]struct {
|
||||||
|
Slug string `graphql:"slug"`
|
||||||
|
} `graphql:"startingLineup"`
|
||||||
|
} `graphql:"awayFormation"`
|
||||||
|
HomeTeam struct {
|
||||||
|
Team struct {
|
||||||
|
Slug string `graphql:"slug"`
|
||||||
|
} `graphql:"... on TeamInterface"`
|
||||||
|
} `graphql:"homeTeam"`
|
||||||
|
|
||||||
|
HomeFormation struct {
|
||||||
|
Bench []struct {
|
||||||
|
Slug string `graphql:"slug"`
|
||||||
|
} `graphql:"bench"`
|
||||||
|
StartingLineup [][]struct {
|
||||||
|
Slug string `graphql:"slug"`
|
||||||
|
} `graphql:"startingLineup"`
|
||||||
|
} `graphql:"homeFormation"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewGamesFormationQuery(c *graphql.Client) *GamesFormationQuery {
|
||||||
|
return &GamesFormationQuery{
|
||||||
|
c: c,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *GamesFormationQuery) Get(ctx context.Context, gameIds []string) ([]GameFormation, error) {
|
||||||
|
var q struct {
|
||||||
|
Football [][2]interface{} `graphql:"football"`
|
||||||
|
}
|
||||||
|
|
||||||
|
q.Football = make([][2]interface{}, len(gameIds))
|
||||||
|
|
||||||
|
for i, id := range gameIds {
|
||||||
|
var game GameFormation
|
||||||
|
q.Football[i] = [2]interface{}{fmt.Sprintf("game%d:game(id:\"%s\")", i, id), &game}
|
||||||
|
}
|
||||||
|
|
||||||
|
err := r.c.Query(ctx, &q, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "querying games")
|
||||||
|
}
|
||||||
|
var res []GameFormation
|
||||||
|
for _, g := range q.Football {
|
||||||
|
res = append(res, *g[1].(*GameFormation))
|
||||||
|
}
|
||||||
|
return res, nil
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user