more refactors

This commit is contained in:
2026-02-08 19:57:12 +11:00
parent e94a212a08
commit d038f7a42d
17 changed files with 334 additions and 308 deletions

View File

@@ -2,7 +2,6 @@ package db
import (
"context"
"database/sql"
"strings"
"time"
@@ -22,12 +21,6 @@ type Season struct {
FinalsEndDate bun.NullTime `bun:"finals_end_date"`
}
type SeasonList struct {
Seasons []*Season
Total int
PageOpts PageOpts
}
func NewSeason(ctx context.Context, tx bun.Tx, name, shortname string, start time.Time) (*Season, error) {
if name == "" {
return nil, errors.New("name cannot be empty")
@@ -50,40 +43,19 @@ func NewSeason(ctx context.Context, tx bun.Tx, name, shortname string, start tim
return season, nil
}
func ListSeasons(ctx context.Context, tx bun.Tx, pageOpts *PageOpts) (*SeasonList, error) {
seasons := new([]*Season)
query := tx.NewSelect().
Model(seasons)
total, err := query.Count(ctx)
if err != nil {
return nil, errors.Wrap(err, "query.Count")
func ListSeasons(ctx context.Context, tx bun.Tx, pageOpts *PageOpts) (*List[Season], error) {
defaults := &PageOpts{
1,
10,
bun.OrderDesc,
"start_date",
}
query, pageOpts = setPageOpts(query, pageOpts, 1, 10, bun.OrderDesc, "start_date")
err = query.Scan(ctx)
if err != nil && err != sql.ErrNoRows {
return nil, errors.Wrap(err, "query.Scan")
}
sl := &SeasonList{
Seasons: *seasons,
Total: total,
PageOpts: *pageOpts,
}
return sl, nil
return GetList[Season](tx, pageOpts, defaults).GetAll(ctx)
}
func GetSeason(ctx context.Context, tx bun.Tx, shortname string) (*Season, error) {
season := new(Season)
err := tx.NewSelect().
Model(season).
Where("short_name = ?", strings.ToUpper(shortname)).
Limit(1).
Scan(ctx)
if err != nil {
if err == sql.ErrNoRows {
return nil, nil
}
return nil, errors.Wrap(err, "tx.NewSelect")
if shortname == "" {
return nil, errors.New("short_name not provided")
}
return season, nil
return GetByField[Season](tx, "short_name", shortname).GetFirst(ctx)
}