added team view to season_leagues
This commit is contained in:
@@ -2,6 +2,7 @@ package db
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
|
||||
"git.haelnorr.com/h/oslstats/internal/permissions"
|
||||
"github.com/pkg/errors"
|
||||
@@ -15,8 +16,36 @@ type SeasonLeague struct {
|
||||
League *League `bun:"rel:belongs-to,join:league_id=id"`
|
||||
}
|
||||
|
||||
// GetSeasonLeague retrieves a specific season-league combination with teams
|
||||
func GetSeasonLeague(ctx context.Context, tx bun.Tx, seasonShortName, leagueShortName string) (*Season, *League, []*Team, error) {
|
||||
// GetSeasonLeague retrieves a specific season-league combination
|
||||
func GetSeasonLeague(ctx context.Context, tx bun.Tx, seasonShortName, leagueShortName string) (*SeasonLeague, error) {
|
||||
if seasonShortName == "" {
|
||||
return nil, errors.New("season short_name cannot be empty")
|
||||
}
|
||||
if leagueShortName == "" {
|
||||
return nil, errors.New("league short_name cannot be empty")
|
||||
}
|
||||
|
||||
sl := new(SeasonLeague)
|
||||
err := tx.NewSelect().
|
||||
Model(sl).
|
||||
Relation("Season", func(q *bun.SelectQuery) *bun.SelectQuery {
|
||||
return q.Where("season.short_name = ?", seasonShortName)
|
||||
}).
|
||||
Relation("League", func(q *bun.SelectQuery) *bun.SelectQuery {
|
||||
return q.Where("league.short_name = ?", leagueShortName)
|
||||
}).Scan(ctx)
|
||||
if err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
return nil, BadRequestNotFound("season_league", "season.short_name,league.short_name", seasonShortName+","+leagueShortName)
|
||||
}
|
||||
return nil, errors.Wrap(err, "tx.NewSelect")
|
||||
}
|
||||
|
||||
return sl, nil
|
||||
}
|
||||
|
||||
// GetSeasonLeagueWithTeams retrieves a specific season-league combination with teams
|
||||
func GetSeasonLeagueWithTeams(ctx context.Context, tx bun.Tx, seasonShortName, leagueShortName string) (*Season, *League, []*Team, error) {
|
||||
if seasonShortName == "" {
|
||||
return nil, nil, nil, errors.New("season short_name cannot be empty")
|
||||
}
|
||||
@@ -41,6 +70,9 @@ func GetSeasonLeague(ctx context.Context, tx bun.Tx, seasonShortName, leagueShor
|
||||
Join("INNER JOIN team_participations AS tp ON tp.team_id = t.id").
|
||||
Where("tp.season_id = ? AND tp.league_id = ?", season.ID, league.ID).
|
||||
Order("t.name ASC").
|
||||
Relation("Players", func(q *bun.SelectQuery) *bun.SelectQuery {
|
||||
return q.Where("season_id = ? AND league_id = ?", season.ID, league.ID)
|
||||
}).
|
||||
Scan(ctx)
|
||||
if err != nil {
|
||||
return nil, nil, nil, errors.Wrap(err, "tx.Select teams")
|
||||
|
||||
Reference in New Issue
Block a user