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) {
|
) (domain.ListEnnoblementsWithRelationsResult, error) {
|
||||||
var ennoblements bunmodel.Ennoblements
|
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().
|
if err := repo.db.NewSelect().
|
||||||
Model(&ennoblements).
|
Model(&ennoblements).
|
||||||
Apply(listEnnoblementsParamsApplier{params: params}.apply).
|
Apply(listEnnoblementsParamsApplier{params: params}.apply).
|
||||||
|
|
|
@ -58,10 +58,14 @@ func (e Ennoblement) ToDomainWithRelations() (domain.EnnoblementWithRelations, e
|
||||||
return domain.EnnoblementWithRelations{}, err
|
return domain.EnnoblementWithRelations{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
village, err := e.Village.ToMeta()
|
// 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 {
|
if err != nil {
|
||||||
return domain.EnnoblementWithRelations{}, err
|
return domain.EnnoblementWithRelations{}, err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var newOwner domain.NullPlayerMeta
|
var newOwner domain.NullPlayerMeta
|
||||||
if e.NewOwner.ID > 0 {
|
if e.NewOwner.ID > 0 {
|
||||||
|
|
|
@ -125,6 +125,9 @@ func (p BasePlayer) OD() OpponentsDefeated {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p BasePlayer) ProfileURL() *url.URL {
|
func (p BasePlayer) ProfileURL() *url.URL {
|
||||||
|
if p.profileURL == nil {
|
||||||
|
return &url.URL{}
|
||||||
|
}
|
||||||
return p.profileURL
|
return p.profileURL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -159,6 +159,9 @@ func (t BaseTribe) OD() OpponentsDefeated {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t BaseTribe) ProfileURL() *url.URL {
|
func (t BaseTribe) ProfileURL() *url.URL {
|
||||||
|
if t.profileURL == nil {
|
||||||
|
return &url.URL{}
|
||||||
|
}
|
||||||
return t.profileURL
|
return t.profileURL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,6 +147,9 @@ func (v BaseVillage) PlayerID() int {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v BaseVillage) ProfileURL() *url.URL {
|
func (v BaseVillage) ProfileURL() *url.URL {
|
||||||
|
if v.profileURL == nil {
|
||||||
|
return &url.URL{}
|
||||||
|
}
|
||||||
return v.profileURL
|
return v.profileURL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -142,6 +142,9 @@ func (p Player) OD() OpponentsDefeated {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p Player) ProfileURL() *url.URL {
|
func (p Player) ProfileURL() *url.URL {
|
||||||
|
if p.profileURL == nil {
|
||||||
|
return &url.URL{}
|
||||||
|
}
|
||||||
return p.profileURL
|
return p.profileURL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -337,6 +340,9 @@ func (p PlayerMeta) Name() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p PlayerMeta) ProfileURL() *url.URL {
|
func (p PlayerMeta) ProfileURL() *url.URL {
|
||||||
|
if p.profileURL == nil {
|
||||||
|
return &url.URL{}
|
||||||
|
}
|
||||||
return p.profileURL
|
return p.profileURL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -158,6 +158,9 @@ func (t Tribe) OD() OpponentsDefeated {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t Tribe) ProfileURL() *url.URL {
|
func (t Tribe) ProfileURL() *url.URL {
|
||||||
|
if t.profileURL == nil {
|
||||||
|
return &url.URL{}
|
||||||
|
}
|
||||||
return t.profileURL
|
return t.profileURL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -316,6 +319,9 @@ func (t TribeMeta) Tag() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t TribeMeta) ProfileURL() *url.URL {
|
func (t TribeMeta) ProfileURL() *url.URL {
|
||||||
|
if t.profileURL == nil {
|
||||||
|
return &url.URL{}
|
||||||
|
}
|
||||||
return t.profileURL
|
return t.profileURL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -137,6 +137,9 @@ func (v Village) PlayerID() int {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v Village) ProfileURL() *url.URL {
|
func (v Village) ProfileURL() *url.URL {
|
||||||
|
if v.profileURL == nil {
|
||||||
|
return &url.URL{}
|
||||||
|
}
|
||||||
return v.profileURL
|
return v.profileURL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -306,6 +309,9 @@ func (v VillageMeta) Continent() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v VillageMeta) ProfileURL() *url.URL {
|
func (v VillageMeta) ProfileURL() *url.URL {
|
||||||
|
if v.profileURL == nil {
|
||||||
|
return &url.URL{}
|
||||||
|
}
|
||||||
return v.profileURL
|
return v.profileURL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,10 @@ func (h *apiHTTPHandler) ListEnnoblements(
|
||||||
) {
|
) {
|
||||||
domainParams := domain.NewListEnnoblementsParams()
|
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)
|
h.errorRenderer.withErrorPathFormatter(formatListEnnoblementsErrorPath).render(w, r, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,10 @@ func TestListEnnoblements(t *testing.T) {
|
||||||
assert.NotZero(t, body.Cursor.Self)
|
assert.NotZero(t, body.Cursor.Self)
|
||||||
assert.NotZero(t, body.Data)
|
assert.NotZero(t, body.Data)
|
||||||
assert.True(t, slices.IsSortedFunc(body.Data, func(a, b apimodel.Ennoblement) int {
|
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
Block a user