refactor: prevent ProfileURL methods panic
This commit is contained in:
parent
fc5f531ce7
commit
a86acd760a
|
@ -78,25 +78,6 @@ func (repo *EnnoblementBunRepository) ListWithRelations(
|
|||
) (domain.ListEnnoblementsWithRelationsResult, error) {
|
||||
var ennoblements bunmodel.Ennoblements
|
||||
|
||||
fmt.Println(repo.db.NewSelect().
|
||||
Model(&ennoblements).
|
||||
Apply(listEnnoblementsParamsApplier{params: params}.apply).
|
||||
Relation("Village", func(q *bun.SelectQuery) *bun.SelectQuery {
|
||||
return q.Column(bunmodel.VillageMetaColumns...)
|
||||
}).
|
||||
Relation("NewOwner", func(q *bun.SelectQuery) *bun.SelectQuery {
|
||||
return q.Column(bunmodel.PlayerMetaColumns...)
|
||||
}).
|
||||
Relation("NewTribe", func(q *bun.SelectQuery) *bun.SelectQuery {
|
||||
return q.Column(bunmodel.TribeMetaColumns...)
|
||||
}).
|
||||
Relation("OldOwner", func(q *bun.SelectQuery) *bun.SelectQuery {
|
||||
return q.Column(bunmodel.PlayerMetaColumns...)
|
||||
}).
|
||||
Relation("OldTribe", func(q *bun.SelectQuery) *bun.SelectQuery {
|
||||
return q.Column(bunmodel.TribeMetaColumns...)
|
||||
}).String())
|
||||
|
||||
if err := repo.db.NewSelect().
|
||||
Model(&ennoblements).
|
||||
Apply(listEnnoblementsParamsApplier{params: params}.apply).
|
||||
|
|
|
@ -58,9 +58,13 @@ func (e Ennoblement) ToDomainWithRelations() (domain.EnnoblementWithRelations, e
|
|||
return domain.EnnoblementWithRelations{}, err
|
||||
}
|
||||
|
||||
village, err := e.Village.ToMeta()
|
||||
if err != nil {
|
||||
return domain.EnnoblementWithRelations{}, err
|
||||
// in some cases there is no corresponding village in the db (for example, for old ennoblements)
|
||||
var village domain.VillageMeta
|
||||
if e.Village.ID > 0 {
|
||||
village, err = e.Village.ToMeta()
|
||||
if err != nil {
|
||||
return domain.EnnoblementWithRelations{}, err
|
||||
}
|
||||
}
|
||||
|
||||
var newOwner domain.NullPlayerMeta
|
||||
|
|
|
@ -125,6 +125,9 @@ func (p BasePlayer) OD() OpponentsDefeated {
|
|||
}
|
||||
|
||||
func (p BasePlayer) ProfileURL() *url.URL {
|
||||
if p.profileURL == nil {
|
||||
return &url.URL{}
|
||||
}
|
||||
return p.profileURL
|
||||
}
|
||||
|
||||
|
|
|
@ -159,6 +159,9 @@ func (t BaseTribe) OD() OpponentsDefeated {
|
|||
}
|
||||
|
||||
func (t BaseTribe) ProfileURL() *url.URL {
|
||||
if t.profileURL == nil {
|
||||
return &url.URL{}
|
||||
}
|
||||
return t.profileURL
|
||||
}
|
||||
|
||||
|
|
|
@ -147,6 +147,9 @@ func (v BaseVillage) PlayerID() int {
|
|||
}
|
||||
|
||||
func (v BaseVillage) ProfileURL() *url.URL {
|
||||
if v.profileURL == nil {
|
||||
return &url.URL{}
|
||||
}
|
||||
return v.profileURL
|
||||
}
|
||||
|
||||
|
|
|
@ -142,6 +142,9 @@ func (p Player) OD() OpponentsDefeated {
|
|||
}
|
||||
|
||||
func (p Player) ProfileURL() *url.URL {
|
||||
if p.profileURL == nil {
|
||||
return &url.URL{}
|
||||
}
|
||||
return p.profileURL
|
||||
}
|
||||
|
||||
|
@ -337,6 +340,9 @@ func (p PlayerMeta) Name() string {
|
|||
}
|
||||
|
||||
func (p PlayerMeta) ProfileURL() *url.URL {
|
||||
if p.profileURL == nil {
|
||||
return &url.URL{}
|
||||
}
|
||||
return p.profileURL
|
||||
}
|
||||
|
||||
|
|
|
@ -158,6 +158,9 @@ func (t Tribe) OD() OpponentsDefeated {
|
|||
}
|
||||
|
||||
func (t Tribe) ProfileURL() *url.URL {
|
||||
if t.profileURL == nil {
|
||||
return &url.URL{}
|
||||
}
|
||||
return t.profileURL
|
||||
}
|
||||
|
||||
|
@ -316,6 +319,9 @@ func (t TribeMeta) Tag() string {
|
|||
}
|
||||
|
||||
func (t TribeMeta) ProfileURL() *url.URL {
|
||||
if t.profileURL == nil {
|
||||
return &url.URL{}
|
||||
}
|
||||
return t.profileURL
|
||||
}
|
||||
|
||||
|
|
|
@ -137,6 +137,9 @@ func (v Village) PlayerID() int {
|
|||
}
|
||||
|
||||
func (v Village) ProfileURL() *url.URL {
|
||||
if v.profileURL == nil {
|
||||
return &url.URL{}
|
||||
}
|
||||
return v.profileURL
|
||||
}
|
||||
|
||||
|
@ -306,6 +309,9 @@ func (v VillageMeta) Continent() string {
|
|||
}
|
||||
|
||||
func (v VillageMeta) ProfileURL() *url.URL {
|
||||
if v.profileURL == nil {
|
||||
return &url.URL{}
|
||||
}
|
||||
return v.profileURL
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,10 @@ func (h *apiHTTPHandler) ListEnnoblements(
|
|||
) {
|
||||
domainParams := domain.NewListEnnoblementsParams()
|
||||
|
||||
if err := domainParams.SetSort([]domain.EnnoblementSort{domain.EnnoblementSortIDASC}); err != nil {
|
||||
if err := domainParams.SetSort([]domain.EnnoblementSort{
|
||||
domain.EnnoblementSortCreatedAtASC,
|
||||
domain.EnnoblementSortIDASC,
|
||||
}); err != nil {
|
||||
h.errorRenderer.withErrorPathFormatter(formatListEnnoblementsErrorPath).render(w, r, err)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -45,7 +45,10 @@ func TestListEnnoblements(t *testing.T) {
|
|||
assert.NotZero(t, body.Cursor.Self)
|
||||
assert.NotZero(t, body.Data)
|
||||
assert.True(t, slices.IsSortedFunc(body.Data, func(a, b apimodel.Ennoblement) int {
|
||||
return cmp.Compare(a.Id, b.Id)
|
||||
return cmp.Or(
|
||||
a.CreatedAt.Compare(b.CreatedAt),
|
||||
cmp.Compare(a.Id, b.Id),
|
||||
)
|
||||
}))
|
||||
},
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue