optimize updateServerData

This commit is contained in:
Dawid Wysokiński 2020-07-06 17:54:32 +02:00 committed by Kichiyaki
parent d90c603aa9
commit 9c78f11b51
1 changed files with 7 additions and 12 deletions

View File

@ -550,7 +550,7 @@ func (h *updateServerDataHandler) update() error {
}
tribesHistory := []*models.TribeHistory{}
if err := tx.Model(&tribesHistory).
if err := h.db.Model(&tribesHistory).
DistinctOn("tribe_id").
Column("*").
Where("tribe_id IN (?)", pg.In(ids)).
@ -603,7 +603,7 @@ func (h *updateServerDataHandler) update() error {
}
playerHistory := []*models.PlayerHistory{}
if err := tx.Model(&playerHistory).
if err := h.db.Model(&playerHistory).
DistinctOn("player_id").
Column("*").
Where("player_id IN (?)", pg.In(ids)).
@ -626,6 +626,11 @@ func (h *updateServerDataHandler) update() error {
}
}
if len(villages) > 0 {
if _, err := tx.Model(&models.Village{}).
Where("true").
Delete(); err != nil && err != pg.ErrNoRows {
return errors.Wrap(err, "cannot delete villages")
}
if _, err := tx.Model(&villages).
OnConflict("(id) DO UPDATE").
Set("name = EXCLUDED.name").
@ -637,16 +642,6 @@ func (h *updateServerDataHandler) update() error {
Insert(); err != nil {
return errors.Wrap(err, "cannot insert villages")
}
ids := []int{}
for _, village := range villages {
ids = append(ids, village.ID)
}
if _, err := tx.Model(&models.Village{}).
Where("id NOT IN (?)", pg.In(ids)).
Delete(); err != nil && err != pg.ErrNoRows {
return errors.Wrap(err, "cannot delete not exist villages")
}
}
if len(ennoblements) > 0 {
if _, err := tx.Model(&ennoblements).Insert(); err != nil {