diff --git a/cron/handler.go b/cron/handler.go index 0644be5..48b2b7b 100644 --- a/cron/handler.go +++ b/cron/handler.go @@ -42,7 +42,7 @@ func (h *handler) init() error { models := []interface{}{ (*models.SpecialServer)(nil), (*models.Server)(nil), - (*models.LangVersion)(nil), + (*models.Version)(nil), (*models.PlayerToServer)(nil), (*models.PlayerNameChange)(nil), } @@ -107,7 +107,7 @@ func (h *handler) createSchema(server *models.Server) error { serverPGTriggers, serverPGDefaultValues, } { - if _, err := tx.Exec(statement, pg.Safe(server.Key), server.LangVersionTag); err != nil { + if _, err := tx.Exec(statement, pg.Safe(server.Key), server.VersionCode); err != nil { return err } } @@ -116,44 +116,44 @@ func (h *handler) createSchema(server *models.Server) error { } func (h *handler) getServers() ([]*models.Server, map[string]string, error) { - langVersions := []*models.LangVersion{} - if err := h.db.Model(&langVersions).Relation("SpecialServers").Order("tag ASC").Select(); err != nil { + versions := []*models.Version{} + if err := h.db.Model(&versions).Relation("SpecialServers").Order("code ASC").Select(); err != nil { return nil, nil, errors.Wrap(err, "getServers") } serverKeys := []string{} servers := []*models.Server{} urls := make(map[string]string) - loadedLangVersions := []models.LanguageTag{} - for _, langVersion := range langVersions { - log := log.WithField("host", langVersion.Host) - log.Infof("Loading servers from %s", langVersion.Host) - resp, err := http.Get(fmt.Sprintf("https://%s%s", langVersion.Host, endpointGetServers)) + loadedVersions := []models.VersionCode{} + for _, version := range versions { + log := log.WithField("host", version.Host) + log.Infof("Loading servers from %s", version.Host) + resp, err := http.Get(fmt.Sprintf("https://%s%s", version.Host, endpointGetServers)) if err != nil { - log.Errorln(errors.Wrapf(err, "Cannot fetch servers from %s", langVersion.Host)) + log.Errorln(errors.Wrapf(err, "Cannot fetch servers from %s", version.Host)) continue } defer resp.Body.Close() bodyBytes, err := ioutil.ReadAll(resp.Body) if err != nil { - log.Errorln(errors.Wrapf(err, "Cannot read response body from %s", langVersion.Host)) + log.Errorln(errors.Wrapf(err, "Cannot read response body from %s", version.Host)) continue } body, err := phpserialize.Decode(string(bodyBytes)) if err != nil { - log.Errorln(errors.Wrapf(err, "Cannot serialize body from %s into go value", langVersion.Host)) + log.Errorln(errors.Wrapf(err, "Cannot serialize body from %s into go value", version.Host)) continue } for serverKey, url := range body.(map[interface{}]interface{}) { serverKeyStr := serverKey.(string) - if langVersion.SpecialServers.Contains(serverKeyStr) { + if version.SpecialServers.Contains(serverKeyStr) { continue } server := &models.Server{ - Key: serverKeyStr, - Status: models.ServerStatusOpen, - LangVersionTag: langVersion.Tag, - LangVersion: langVersion, + Key: serverKeyStr, + Status: models.ServerStatusOpen, + VersionCode: version.Code, + Version: version, } if err := h.createSchema(server); err != nil { log.WithField("serverKey", serverKey).Errorln(errors.Wrapf(err, "Cannot create schema for %s", serverKey)) @@ -163,14 +163,14 @@ func (h *handler) getServers() ([]*models.Server, map[string]string, error) { urls[serverKeyStr] = url.(string) servers = append(servers, server) } - loadedLangVersions = append(loadedLangVersions, langVersion.Tag) + loadedVersions = append(loadedVersions, version.Code) } if len(servers) > 0 { if _, err := h.db.Model(&servers). OnConflict("(key) DO UPDATE"). Set("status = ?", models.ServerStatusOpen). - Set("lang_version_tag = EXCLUDED.lang_version_tag"). + Set("version_code = EXCLUDED.version_code"). Returning("*"). Insert(); err != nil { return nil, nil, err @@ -179,7 +179,7 @@ func (h *handler) getServers() ([]*models.Server, map[string]string, error) { if _, err := h.db.Model(&models.Server{}). Set("status = ?", models.ServerStatusClosed). - Where("key NOT IN (?) AND lang_version_tag IN (?)", pg.In(serverKeys), pg.In(loadedLangVersions)). + Where("key NOT IN (?) AND version_code IN (?)", pg.In(serverKeys), pg.In(loadedVersions)). Update(); err != nil { return nil, nil, err } diff --git a/cron/sql_statements.go b/cron/sql_statements.go index e2de397..f8f775e 100644 --- a/cron/sql_statements.go +++ b/cron/sql_statements.go @@ -2,45 +2,45 @@ package cron const ( allSpecialServersPGInsertStatements = ` - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('pl', 'pls1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('en', 'ens1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('uk', 'uks1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('uk', 'master') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('it', 'its1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('hu', 'hus1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('fr', 'frs1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('us', 'uss1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('nl', 'nls1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('es', 'ess1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('ro', 'ros1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('gr', 'grs1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('br', 'brs1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('tr', 'trs1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('cs', 'css1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('de', 'des1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('ru', 'rus1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('ch', 'chs1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; - INSERT INTO public.special_servers (lang_version_tag, key) VALUES ('pt', 'pts1') ON CONFLICT ON CONSTRAINT special_servers_lang_version_tag_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('pl', 'pls1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('en', 'ens1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('uk', 'uks1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('uk', 'master') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('it', 'its1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('hu', 'hus1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('fr', 'frs1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('us', 'uss1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('nl', 'nls1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('es', 'ess1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('ro', 'ros1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('gr', 'grs1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('br', 'brs1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('tr', 'trs1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('cs', 'css1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('de', 'des1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('ru', 'rus1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('ch', 'chs1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; + INSERT INTO public.special_servers (version_code, key) VALUES ('pt', 'pts1') ON CONFLICT ON CONSTRAINT special_servers_version_code_key_key DO NOTHING; ` allVersionsPGInsertStatements = ` - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('pl', 'Polska', 'plemiona.pl', 'Europe/Warsaw') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('uk', 'United Kingdom', 'tribalwars.co.uk', 'Europe/London') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('hu', 'Hungary', 'klanhaboru.hu', 'Europe/Budapest') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('it', 'Italy', 'tribals.it', 'Europe/Rome') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('fr', 'France', 'guerretribale.fr', 'Europe/Paris') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('us', 'United States', 'tribalwars.us', 'America/Washington') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('nl', 'The Netherlands', 'tribalwars.nl', 'Europe/Amsterdam') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('es', 'Spain', 'guerrastribales.es', 'Europe/Madrid') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('ro', 'Romania', 'triburile.ro', 'Europe/Bucharest') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('gr', 'Greece', 'fyletikesmaxes.gr', 'Europe/Athens') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('br', 'Brazil', 'tribalwars.com.br', 'America/Sao_Paulo') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('tr', 'Turkey', 'klanlar.org', 'Europe/Instanbul') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('cs', 'Czech Republic', 'divokekmeny.cz', 'Europe/Prague') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('ru', 'Russia', 'voyna-plemyon.ru', 'Europe/Moscow') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('ch', 'Switerzland', 'staemme.ch', 'Europe/Zurich') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('pt', 'Portugal', 'tribalwars.com.pt', 'Europe/Lisbon') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('en', 'International', 'tribalwars.net', 'Europe/London') ON CONFLICT (tag) DO NOTHING; - INSERT INTO public.lang_versions (tag, name, host, timezone) VALUES ('de', 'Germany', 'die-staemme.de', 'Europe/Berlin') ON CONFLICT (tag) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('pl', 'Polska', 'plemiona.pl', 'Europe/Warsaw') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('uk', 'United Kingdom', 'tribalwars.co.uk', 'Europe/London') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('hu', 'Hungary', 'klanhaboru.hu', 'Europe/Budapest') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('it', 'Italy', 'tribals.it', 'Europe/Rome') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('fr', 'France', 'guerretribale.fr', 'Europe/Paris') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('us', 'United States', 'tribalwars.us', 'America/Washington') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('nl', 'The Netherlands', 'tribalwars.nl', 'Europe/Amsterdam') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('es', 'Spain', 'guerrastribales.es', 'Europe/Madrid') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('ro', 'Romania', 'triburile.ro', 'Europe/Bucharest') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('gr', 'Greece', 'fyletikesmaxes.gr', 'Europe/Athens') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('br', 'Brazil', 'tribalwars.com.br', 'America/Sao_Paulo') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('tr', 'Turkey', 'klanlar.org', 'Europe/Instanbul') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('cs', 'Czech Republic', 'divokekmeny.cz', 'Europe/Prague') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('ru', 'Russia', 'voyna-plemyon.ru', 'Europe/Moscow') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('ch', 'Switerzland', 'staemme.ch', 'Europe/Zurich') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('pt', 'Portugal', 'tribalwars.com.pt', 'Europe/Lisbon') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('en', 'International', 'tribalwars.net', 'Europe/London') ON CONFLICT (code) DO NOTHING; + INSERT INTO public.versions (code, name, host, timezone) VALUES ('de', 'Germany', 'die-staemme.de', 'Europe/Berlin') ON CONFLICT (code) DO NOTHING; ` serverPGFunctions = ` CREATE OR REPLACE FUNCTION ?0.log_tribe_change_on_insert() @@ -76,7 +76,7 @@ const ( $BODY$ BEGIN IF NEW.name <> OLD.name THEN - INSERT INTO player_name_changes(lang_version_tag,player_id,old_name,new_name,change_date) + INSERT INTO player_name_changes(version_code,player_id,old_name,new_name,change_date) VALUES(?1,NEW.id,OLD.name,NEW.name,CURRENT_DATE) ON CONFLICT DO NOTHING; END IF; diff --git a/go.mod b/go.mod index 777106a..65c0002 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/robfig/cron/v3 v3.0.1 github.com/sirupsen/logrus v1.7.0 - github.com/tribalwarshelp/shared v0.0.0-20201031105753-5d4d8b307747 + github.com/tribalwarshelp/shared v0.0.0-20201106181031-7c5891c02013 github.com/vmihailenco/tagparser v0.1.2 // indirect go.opentelemetry.io/otel v0.13.0 // indirect golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 // indirect diff --git a/go.sum b/go.sum index 414649e..2e95145 100644 --- a/go.sum +++ b/go.sum @@ -82,6 +82,10 @@ github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc h1:9lRDQMhESg+zvGYm github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc/go.mod h1:bciPuU6GHm1iF1pBvUfxfsH0Wmnc2VbpgvbI9ZWuIRs= github.com/tribalwarshelp/shared v0.0.0-20201031105753-5d4d8b307747 h1:ef1VuyVNNxa6ALTPS5X8dPEsAI7KuA3/umNNkrI4fIk= github.com/tribalwarshelp/shared v0.0.0-20201031105753-5d4d8b307747/go.mod h1:Lxk6zaQhPTPrgz9ksMgg51m8XgflrCo/kRBx2cM3yfk= +github.com/tribalwarshelp/shared v0.0.0-20201106180434-6c4f27f3d226 h1:8NGC6rJ9XeKKghtvjMSwbse47y+sEVYSzsmsUF4AaY8= +github.com/tribalwarshelp/shared v0.0.0-20201106180434-6c4f27f3d226/go.mod h1:Lxk6zaQhPTPrgz9ksMgg51m8XgflrCo/kRBx2cM3yfk= +github.com/tribalwarshelp/shared v0.0.0-20201106181031-7c5891c02013 h1:6KWK3MWsTfIIWeRfC6+Ba+GvlwbV9Mq+HefbE+QcU2s= +github.com/tribalwarshelp/shared v0.0.0-20201106181031-7c5891c02013/go.mod h1:Lxk6zaQhPTPrgz9ksMgg51m8XgflrCo/kRBx2cM3yfk= github.com/vmihailenco/bufpool v0.1.11 h1:gOq2WmBrq0i2yW5QJ16ykccQ4wH9UyEsgLm6czKAd94= github.com/vmihailenco/bufpool v0.1.11/go.mod h1:AFf/MOy3l2CFTKbxwt0mp2MwnqjNEs5H/UxrkA5jxTQ= github.com/vmihailenco/msgpack/v4 v4.3.11 h1:Q47CePddpNGNhk4GCnAx9DDtASi2rasatE0cd26cZoE=