core/internal/bun/bunmodel/tribe_change.go

61 lines
1.5 KiB
Go

package bunmodel
import (
"fmt"
"time"
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
"github.com/uptrace/bun"
)
type TribeChange struct {
bun.BaseModel `bun:"table:tribe_changes,alias:tc"`
ID int `bun:"id,pk,autoincrement,identity"`
ServerKey string `bun:"server_key,nullzero"`
PlayerID int `bun:"player_id,nullzero"`
Player Player `bun:"player,rel:belongs-to,join:player_id=id,join:server_key=server_key"`
NewTribeID int `bun:"new_tribe_id,nullzero"`
NewTribe Tribe `bun:"new_tribe,rel:belongs-to,join:new_tribe_id=id,join:server_key=server_key"`
OldTribeID int `bun:"old_tribe_id,nullzero"`
OldTribe Tribe `bun:"old_tribe,rel:belongs-to,join:old_tribe_id=id,join:server_key=server_key"`
CreatedAt time.Time `bun:"created_at,nullzero"`
}
func (tc TribeChange) ToDomain() (domain.TribeChange, error) {
converted, err := domain.UnmarshalTribeChangeFromDatabase(
tc.ID,
tc.ServerKey,
tc.PlayerID,
tc.OldTribeID,
tc.NewTribeID,
tc.CreatedAt,
)
if err != nil {
return domain.TribeChange{}, fmt.Errorf(
"couldn't construct domain.TribeChange (id=%d): %w",
tc.ID,
err,
)
}
return converted, nil
}
type TribeChanges []TribeChange
func (tcs TribeChanges) ToDomain() (domain.TribeChanges, error) {
res := make(domain.TribeChanges, 0, len(tcs))
for _, tc := range tcs {
converted, err := tc.ToDomain()
if err != nil {
return nil, err
}
res = append(res, converted)
}
return res, nil
}