62 lines
1.8 KiB
Go
62 lines
1.8 KiB
Go
package model
|
|
|
|
import (
|
|
"git.lehouerou.net/laurent/sorare/football"
|
|
)
|
|
|
|
type GamePlayer struct {
|
|
GameId string `bun:"game_id,pk" json:"gameId"`
|
|
PlayerSlug string `bun:"player_slug,pk" json:"playerSlug"`
|
|
Status string `bun:"status" json:"status"`
|
|
TeamSlug string `bun:"team_slug" json:"teamSlug"`
|
|
|
|
Game *Game `bun:"rel:has-one,join:game_id=id" json:"game"`
|
|
Player *Player `bun:"rel:has-one,join:player_slug=slug" json:"player"`
|
|
Score *GamePlayerScore `bun:"rel:has-one,join:game_id=game_id,join:player_slug=player_slug" json:"score"`
|
|
}
|
|
|
|
func ExtractPlayersFromGameWithFormation(
|
|
gameWithFormation football.GameFormation,
|
|
) []GamePlayer {
|
|
var res []GamePlayer
|
|
for _, p := range gameWithFormation.HomeFormation.Bench {
|
|
res = append(res, GamePlayer{
|
|
GameId: gameWithFormation.Id.Value,
|
|
PlayerSlug: p.Slug,
|
|
TeamSlug: gameWithFormation.HomeTeam.Team.Slug,
|
|
Status: "bench",
|
|
})
|
|
}
|
|
for _, p := range gameWithFormation.HomeFormation.StartingLineup {
|
|
for _, q := range p {
|
|
res = append(res, GamePlayer{
|
|
GameId: gameWithFormation.Id.Value,
|
|
PlayerSlug: q.Slug,
|
|
TeamSlug: gameWithFormation.HomeTeam.Team.Slug,
|
|
Status: "starting",
|
|
})
|
|
}
|
|
}
|
|
for _, p := range gameWithFormation.AwayFormation.Bench {
|
|
res = append(res, GamePlayer{
|
|
GameId: gameWithFormation.Id.Value,
|
|
PlayerSlug: p.Slug,
|
|
TeamSlug: gameWithFormation.AwayTeam.Team.Slug,
|
|
Status: "bench",
|
|
})
|
|
}
|
|
for _, p := range gameWithFormation.AwayFormation.StartingLineup {
|
|
for _, q := range p {
|
|
res = append(res, GamePlayer{
|
|
GameId: gameWithFormation.Id.Value,
|
|
PlayerSlug: q.Slug,
|
|
TeamSlug: gameWithFormation.AwayTeam.Team.Slug,
|
|
Status: "starting",
|
|
})
|
|
}
|
|
}
|
|
|
|
return res
|
|
|
|
}
|