From 604c932a4c0fae7660dc63fb04ef151a13a41ab0 Mon Sep 17 00:00:00 2001 From: Kichiyaki Date: Wed, 24 Jun 2020 16:50:29 +0200 Subject: [PATCH] refactor --- cron/cron.go | 18 ++++++++++-------- cron/handler.go | 50 ++++++++++++++++++++++++------------------------- cron/helpers.go | 3 +-- 3 files changed, 35 insertions(+), 36 deletions(-) diff --git a/cron/cron.go b/cron/cron.go index 072965c..eaaaf75 100644 --- a/cron/cron.go +++ b/cron/cron.go @@ -21,15 +21,17 @@ type Config struct { func Attach(c *cron.Cron, cfg Config) { h := &handler{ - lastEnnobledAt: make(map[string]time.Time), - serverRepo: cfg.ServerRepo, - observationRepo: cfg.ObservationRepo, - discord: cfg.Discord, - api: cfg.API, + lastEnnoblementAt: make(map[string]time.Time), + serverRepo: cfg.ServerRepo, + observationRepo: cfg.ObservationRepo, + discord: cfg.Discord, + api: cfg.API, } c.AddFunc("@every 1m", h.checkLastEnnoblements) - go h.checkBotMembershipOnServers() c.AddFunc("@every 30m", h.checkBotMembershipOnServers) - go h.deleteClosedTribalwarsWorlds() - c.AddFunc("@every 2h", h.deleteClosedTribalwarsWorlds) + c.AddFunc("@every 2h", h.deleteClosedTribalWarsServers) + go func() { + h.checkBotMembershipOnServers() + h.deleteClosedTribalWarsServers() + }() } diff --git a/cron/handler.go b/cron/handler.go index 6138768..2f3de23 100644 --- a/cron/handler.go +++ b/cron/handler.go @@ -16,11 +16,11 @@ import ( ) type handler struct { - lastEnnobledAt map[string]time.Time - serverRepo server.Repository - observationRepo observation.Repository - discord *discord.Session - api *sdk.SDK + lastEnnoblementAt map[string]time.Time + serverRepo server.Repository + observationRepo observation.Repository + discord *discord.Session + api *sdk.SDK } func (h *handler) loadEnnoblements(worlds []string) map[string]ennoblements { @@ -43,18 +43,18 @@ func (h *handler) loadEnnoblements(worlds []string) map[string]ennoblements { continue } - lastEnnobledAt, ok := h.lastEnnobledAt[w] + lastEnnoblementAt, ok := h.lastEnnoblementAt[w] if !ok { - lastEnnobledAt = time.Now().Add(-1 * time.Minute) + lastEnnoblementAt = time.Now().Add(-60 * time.Minute) } - m[w] = filterEnnoblements(es, lastEnnobledAt) + m[w] = filterEnnoblements(es, lastEnnoblementAt) lastEnnoblement := m[w].getLastEnnoblement() if lastEnnoblement != nil { - lastEnnobledAt = lastEnnoblement.EnnobledAt.In(time.UTC) + lastEnnoblementAt = lastEnnoblement.EnnobledAt } - h.lastEnnobledAt[w] = lastEnnobledAt + h.lastEnnoblementAt[w] = lastEnnoblementAt } return m @@ -89,7 +89,7 @@ func (h *handler) loadLangVersions(worlds []string) map[shared_models.LanguageTa func (h *handler) checkLastEnnoblements() { worlds, err := h.observationRepo.FetchWorlds(context.Background()) if err != nil { - log.Print("checkLastEnnoblements: " + err.Error()) + log.Print("checkLastEnnoblements error: " + err.Error()) return } log.Print("checkLastEnnoblements: worlds: ", worlds) @@ -99,23 +99,21 @@ func (h *handler) checkLastEnnoblements() { log.Print("checkLastEnnoblements error: " + err.Error()) return } - log.Print("checkLastEnnoblements: total number of loaded discord servers: ", total) + log.Print("checkLastEnnoblements: number of loaded discord servers: ", total) langVersions := h.loadLangVersions(worlds) - - ennoblements := h.loadEnnoblements(worlds) - log.Println("checkLastEnnoblements: loaded ennoblements from", len(ennoblements), "tribalwars servers") + ennoblementsByServerKey := h.loadEnnoblements(worlds) for _, server := range servers { if server.ConqueredVillagesChannelID == "" && server.LostVillagesChannelID == "" { continue } for _, tribe := range server.Observations { - es, ok := ennoblements[tribe.World] + ennoblements, ok := ennoblementsByServerKey[tribe.World] langVersion, ok2 := langVersions[utils.LanguageTagFromWorldName(tribe.World)] if ok && ok2 { if server.LostVillagesChannelID != "" { - for _, ennoblement := range es.getLostVillagesByTribe(tribe.TribeID) { + for _, ennoblement := range ennoblements.getLostVillagesByTribe(tribe.TribeID) { if !isPlayerTribeNil(ennoblement.NewOwner) && server.Observations.Contains(tribe.World, ennoblement.NewOwner.Tribe.ID) { continue @@ -137,7 +135,7 @@ func (h *handler) checkLastEnnoblements() { } if server.ConqueredVillagesChannelID != "" { - for _, ennoblement := range es.getConqueredVillagesByTribe(tribe.TribeID) { + for _, ennoblement := range ennoblements.getConqueredVillagesByTribe(tribe.TribeID) { if !isPlayerTribeNil(ennoblement.OldOwner) && server.Observations.Contains(tribe.World, ennoblement.OldOwner.Tribe.ID) { continue @@ -189,20 +187,20 @@ func (h *handler) checkBotMembershipOnServers() { } } -func (h *handler) deleteClosedTribalwarsWorlds() { - worlds, err := h.observationRepo.FetchWorlds(context.Background()) +func (h *handler) deleteClosedTribalWarsServers() { + servers, err := h.observationRepo.FetchWorlds(context.Background()) if err != nil { - log.Print("deleteClosedTribalwarsWorlds: " + err.Error()) + log.Print("deleteClosedTribalWarsServers: " + err.Error()) return } - log.Print("deleteClosedTribalwarsWorlds: worlds: ", worlds) + log.Print("deleteClosedTribalWarsServers: servers: ", servers) list, err := h.api.Servers.Browse(&shared_models.ServerFilter{ - Key: worlds, + Key: servers, Status: []shared_models.ServerStatus{shared_models.ServerStatusClosed}, }, nil) if err != nil { - log.Print("deleteClosedTribalwarsWorlds: " + err.Error()) + log.Print("deleteClosedTribalWarsServers: " + err.Error()) return } @@ -216,9 +214,9 @@ func (h *handler) deleteClosedTribalwarsWorlds() { World: keys, }) if err != nil { - log.Print("deleteClosedTribalwarsWorlds error: " + err.Error()) + log.Print("deleteClosedTribalWarsServers error: " + err.Error()) } else { - log.Printf("deleteClosedTribalwarsWorlds: total number of deleted observations: %d", len(deleted)) + log.Printf("deleteClosedTribalWarsServers: total number of deleted observations: %d", len(deleted)) } } } diff --git a/cron/helpers.go b/cron/helpers.go index 2eaa4d7..3bc46d3 100644 --- a/cron/helpers.go +++ b/cron/helpers.go @@ -9,8 +9,7 @@ import ( func filterEnnoblements(ennoblements []*shared_models.LiveEnnoblement, t time.Time) []*shared_models.LiveEnnoblement { filtered := []*shared_models.LiveEnnoblement{} for _, ennoblement := range ennoblements { - utc := ennoblement.EnnobledAt.In(time.UTC) - if utc.Before(t) || utc.Equal(t) { + if ennoblement.EnnobledAt.Before(t) || ennoblement.EnnobledAt.Equal(t) { continue } filtered = append(filtered, ennoblement)