sorarebuddy/sorare_utils/fixture.go

40 lines
1.2 KiB
Go
Raw Normal View History

2024-03-21 17:57:17 +00:00
package sorare_utils
import (
"context"
"git.lehouerou.net/laurent/sorare"
"git.lehouerou.net/laurent/sorare/football"
"git.lehouerou.net/laurent/sorare/graphql"
"github.com/pkg/errors"
"github.com/rs/zerolog/log"
"github.com/samber/lo"
)
func GetGamesFromFixtures(
ctx context.Context,
s *sorare.Sorare,
fixtureSlugs []string,
) ([]football.Game, error) {
var games []football.Game
for _, slug := range fixtureSlugs {
log.Debug().Msgf("getting games for fixture %s...", slug)
g, err := s.Football.So5.FixtureGames(slug).Get(ctx, graphql.EmptyParams{})
if err != nil {
return nil, errors.Wrapf(err, "getting games for fixture %s", slug)
}
log.Debug().Msgf("found %d games", len(g))
games = append(games, g...)
}
log.Debug().Msgf("found total of %d games before filtering", len(games))
games = lo.Filter(games, func(game football.Game, index int) bool {
return game.Id.Value != ""
})
log.Debug().Msgf("found total of %d games after filtering empty ids", len(games))
games = lo.UniqBy(games, func(game football.Game) string {
return game.Id.Value
})
log.Debug().Msgf("found total of %d games after filtering duplicate ids", len(games))
return games, nil
}