core/internal/bun/bunmodel/ennoblement.go

70 lines
1.9 KiB
Go

package bunmodel
import (
"fmt"
"time"
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
"github.com/uptrace/bun"
)
type Ennoblement struct {
bun.BaseModel `bun:"table:ennoblements,alias:ennoblement"`
ID int `bun:"id,pk,autoincrement,identity"`
ServerKey string `bun:"server_key,nullzero"`
VillageID int `bun:"village_id,nullzero"`
Village Village `bun:"village,rel:belongs-to,join:village_id=id,join:server_key=server_key"`
NewOwnerID int `bun:"new_owner_id,nullzero"`
NewOwner Player `bun:"new_owner,rel:belongs-to,join:new_owner_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"`
OldOwnerID int `bun:"old_owner_id,nullzero"`
OldOwner Player `bun:"old_owner,rel:belongs-to,join:old_owner_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"`
Points int `bun:"points"`
CreatedAt time.Time `bun:"created_at,nullzero"`
}
func (e Ennoblement) ToDomain() (domain.Ennoblement, error) {
converted, err := domain.UnmarshalEnnoblementFromDatabase(
e.ID,
e.ServerKey,
e.VillageID,
e.NewOwnerID,
e.NewTribeID,
e.OldOwnerID,
e.OldTribeID,
e.Points,
e.CreatedAt,
)
if err != nil {
return domain.Ennoblement{}, fmt.Errorf(
"couldn't construct domain.Ennoblement (id=%d,serverKey=%s): %w",
e.ID,
e.ServerKey,
err,
)
}
return converted, nil
}
type Ennoblements []Ennoblement
func (es Ennoblements) ToDomain() (domain.Ennoblements, error) {
res := make(domain.Ennoblements, 0, len(es))
for _, e := range es {
converted, err := e.ToDomain()
if err != nil {
return nil, err
}
res = append(res, converted)
}
return res, nil
}