core/internal/bun/bunmodel/tribe_snapshot.go

69 lines
1.5 KiB
Go

package bunmodel
import (
"fmt"
"time"
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
"github.com/uptrace/bun"
)
type TribeSnapshot struct {
bun.BaseModel `bun:"table:tribe_snapshots,alias:ts"`
ID int `bun:"id,pk,autoincrement,identity"`
TribeID int `bun:"tribe_id,nullzero"`
ServerKey string `bun:"server_key,nullzero"`
NumMembers int `bun:"num_members"`
NumVillages int `bun:"num_villages"`
Points int `bun:"points"`
AllPoints int `bun:"all_points"`
Rank int `bun:"rank"`
Dominance float64 `bun:"dominance"`
Date time.Time `bun:"date,nullzero"`
CreatedAt time.Time `bun:"created_at,nullzero"`
OpponentsDefeated
}
func (ts TribeSnapshot) ToDomain() (domain.TribeSnapshot, error) {
od, err := ts.OpponentsDefeated.ToDomain()
if err != nil {
return domain.TribeSnapshot{}, fmt.Errorf(
"couldn't construct domain.TribeSnapshot (id=%d): %w",
ts.ID,
err,
)
}
converted, err := domain.UnmarshalTribeSnapshotFromDatabase(
ts.ID,
ts.TribeID,
ts.ServerKey,
ts.NumMembers,
ts.NumVillages,
ts.Points,
ts.AllPoints,
ts.Rank,
od,
ts.Dominance,
ts.Date,
ts.CreatedAt,
)
if err != nil {
return domain.TribeSnapshot{}, fmt.Errorf(
"couldn't construct domain.TribeSnapshot (id=%d): %w",
ts.ID,
err,
)
}
return converted, nil
}
type TribeSnapshots []TribeSnapshot
func (tss TribeSnapshots) ToDomain() (domain.TribeSnapshots, error) {
return sliceToDomain(tss)
}