diff --git a/go.mod b/go.mod index 8a4bf5a..016824f 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,10 @@ module github.com/tribalwarshelp/cron go 1.16 require ( - github.com/Kichiyaki/go-pg-logrus-query-logger/v10 v10.0.0-20210428180109-fb97298564d9 + github.com/Kichiyaki/appmode v0.0.0-20210502105643-0a26207c548d + github.com/Kichiyaki/go-pg-logrus-query-logger/v10 v10.0.0-20210502060056-ad595ba7b858 github.com/Kichiyaki/go-php-serialize v0.0.0-20200601110855-47b6982acf83 + github.com/Kichiyaki/goutil v0.0.0-20210502135617-7868852b90cc github.com/go-pg/pg/v10 v10.9.1 github.com/go-redis/redis/v8 v8.8.2 github.com/go-redis/redis_rate/v9 v9.1.1 // indirect diff --git a/go.sum b/go.sum index 9df1318..5049a20 100644 --- a/go.sum +++ b/go.sum @@ -2,11 +2,16 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/Kichiyaki/go-pg-logrus-query-logger/v10 v10.0.0-20210428180109-fb97298564d9 h1:S/08K0AD4bXYeSPJKei8ZbumDy1JNARZsgYbNZgr9Tk= -github.com/Kichiyaki/go-pg-logrus-query-logger/v10 v10.0.0-20210428180109-fb97298564d9/go.mod h1:ADHVWnGlWcRn1aGthuh7I1Lrn6zzsjkVJju151dXyDw= +github.com/Kichiyaki/appmode v0.0.0-20210502105643-0a26207c548d h1:ApX13STtfJc2YPH5D2JnBa6+4AM2vt7a81so/MPr/bA= +github.com/Kichiyaki/appmode v0.0.0-20210502105643-0a26207c548d/go.mod h1:41p1KTy/fiVocPnJR2h/iXh2NvWWVBdNoZrN8TWVXUI= +github.com/Kichiyaki/go-pg-logrus-query-logger/v10 v10.0.0-20210502060056-ad595ba7b858 h1:O7EPPY5lWaKbYB/5yJzE8WMesismUYuje7gOemo1UNo= +github.com/Kichiyaki/go-pg-logrus-query-logger/v10 v10.0.0-20210502060056-ad595ba7b858/go.mod h1:ADHVWnGlWcRn1aGthuh7I1Lrn6zzsjkVJju151dXyDw= github.com/Kichiyaki/go-php-serialize v0.0.0-20200601110855-47b6982acf83 h1:Oa8Bk4LNcknxw50gZOlvPwEreOlAbOnu7V82lUYNbOM= github.com/Kichiyaki/go-php-serialize v0.0.0-20200601110855-47b6982acf83/go.mod h1:+iGkf5HfOVeRVd9K7qQDucIl+/Kt3MyenMa90b/O/c4= +github.com/Kichiyaki/gopgutil/v10 v10.0.0-20210502140321-8b7f2b75ad67 h1:bg+jweFLCKC5X2tKck8IXmAbkOW26hxibg9Od1+eCKA= github.com/Kichiyaki/gopgutil/v10 v10.0.0-20210502140321-8b7f2b75ad67/go.mod h1:Q3QaLlZY3/FcqwmTpdYqoAAGCmPYzrL7hCL7e5kzmjQ= +github.com/Kichiyaki/goutil v0.0.0-20210502095630-318d17091eab/go.mod h1:+HhI932Xb0xrCodNcCv5GPiCjLYhDxWhCtlEqMIJhB4= +github.com/Kichiyaki/goutil v0.0.0-20210502135617-7868852b90cc h1:055XPMujAD91cCD8KhbXgpjekwK0AOLEPN54n6A7308= github.com/Kichiyaki/goutil v0.0.0-20210502135617-7868852b90cc/go.mod h1:+HhI932Xb0xrCodNcCv5GPiCjLYhDxWhCtlEqMIJhB4= github.com/aws/aws-sdk-go v1.35.28 h1:S2LuRnfC8X05zgZLC8gy/Sb82TGv2Cpytzbzz7tkeHc= github.com/aws/aws-sdk-go v1.35.28/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= @@ -113,7 +118,6 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -124,8 +128,6 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc h1:9lRDQMhESg+zvGYmW5DyG0UqvY96Bu5QYsTLvCHdrgo= github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc/go.mod h1:bciPuU6GHm1iF1pBvUfxfsH0Wmnc2VbpgvbI9ZWuIRs= -github.com/tribalwarshelp/shared v0.0.0-20210501144726-b8f533bc97be h1:NSdGqXTiWYk67US87sqE8sHlGEsL/dLIfQpb0jDPbTI= -github.com/tribalwarshelp/shared v0.0.0-20210501144726-b8f533bc97be/go.mod h1:CDQvesBYmSyGDl5X37xfa+ub55ZbikrHDuIZ4AcfM8I= github.com/tribalwarshelp/shared v0.0.0-20210502140609-e137bd656c94 h1:tQysqj1zlVBLFiRqVYRlRd4hPg5EBKGwYav7+gjxQMo= github.com/tribalwarshelp/shared v0.0.0-20210502140609-e137bd656c94/go.mod h1:NDNw8pZ/lbNaORVwGWl22+Czf4pwtwXELR2ExeUn0q0= github.com/vmihailenco/bufpool v0.1.11 h1:gOq2WmBrq0i2yW5QJ16ykccQ4wH9UyEsgLm6czKAd94= diff --git a/internal/cron/cron.go b/internal/cron/cron.go index 1f89068..9eb2be5 100644 --- a/internal/cron/cron.go +++ b/internal/cron/cron.go @@ -6,9 +6,9 @@ import ( "github.com/go-pg/pg/v10" "github.com/pkg/errors" "github.com/sirupsen/logrus" + "github.com/tribalwarshelp/shared/tw/twmodel" "github.com/robfig/cron/v3" - "github.com/tribalwarshelp/shared/models" "github.com/tribalwarshelp/cron/internal/cron/queue" "github.com/tribalwarshelp/cron/internal/cron/tasks" @@ -44,7 +44,7 @@ func New(cfg *Config) (*Cron, error) { } func (c *Cron) init() error { - var versions []*models.Version + var versions []*twmodel.Version if err := c.db.Model(&versions).DistinctOn("timezone").Select(); err != nil { return errors.Wrap(err, "Cron.init: couldn't load versions") } diff --git a/internal/cron/tasks/helpers.go b/internal/cron/tasks/helpers.go index e727803..448d4f4 100644 --- a/internal/cron/tasks/helpers.go +++ b/internal/cron/tasks/helpers.go @@ -1,14 +1,13 @@ package tasks import ( - "github.com/tribalwarshelp/shared/tw/dataloader" + "github.com/tribalwarshelp/shared/tw/twdataloader" + "github.com/tribalwarshelp/shared/tw/twmodel" "net/http" "time" - - "github.com/tribalwarshelp/shared/models" ) -func countPlayerVillages(villages []*models.Village) int { +func countPlayerVillages(villages []*twmodel.Village) int { count := 0 for _, village := range villages { if village.PlayerID != 0 { @@ -39,15 +38,15 @@ func newHTTPClient() *http.Client { } } -func newDataloader(url string) dataloader.DataLoader { - return dataloader.New(&dataloader.Config{ +func newServerDataLoader(url string) twdataloader.ServerDataLoader { + return twdataloader.NewServerDataLoader(&twdataloader.Config{ BaseURL: url, Client: newHTTPClient(), }) } type playersSearchableByID struct { - players []*models.Player + players []*twmodel.Player } func (searchable playersSearchableByID) getID(index int) int { @@ -59,7 +58,7 @@ func (searchable playersSearchableByID) len() int { } type tribesSearchableByID struct { - tribes []*models.Tribe + tribes []*twmodel.Tribe } func (searchable tribesSearchableByID) getID(index int) int { @@ -71,7 +70,7 @@ func (searchable tribesSearchableByID) len() int { } type villagesSearchableByID struct { - villages []*models.Village + villages []*twmodel.Village } func (searchable villagesSearchableByID) getID(index int) int { @@ -83,7 +82,7 @@ func (searchable villagesSearchableByID) len() int { } type ennoblementsSearchableByNewOwnerID struct { - ennoblements []*models.Ennoblement + ennoblements []*twmodel.Ennoblement } func (searchable ennoblementsSearchableByNewOwnerID) getID(index int) int { diff --git a/internal/cron/tasks/task_delete_non_existent_villages.go b/internal/cron/tasks/task_delete_non_existent_villages.go index 79b8cfa..5d88ee7 100644 --- a/internal/cron/tasks/task_delete_non_existent_villages.go +++ b/internal/cron/tasks/task_delete_non_existent_villages.go @@ -4,7 +4,7 @@ import ( "context" "fmt" "github.com/pkg/errors" - "github.com/tribalwarshelp/shared/models" + "github.com/tribalwarshelp/shared/tw/twmodel" "github.com/tribalwarshelp/cron/internal/cron/queue" ) @@ -14,11 +14,11 @@ type taskDeleteNonExistentVillages struct { } func (t *taskDeleteNonExistentVillages) execute() error { - var servers []*models.Server + var servers []*twmodel.Server err := t.db. Model(&servers). Relation("Version"). - Where("status = ?", models.ServerStatusOpen). + Where("status = ?", twmodel.ServerStatusOpen). Relation("Version"). Select() if err != nil { diff --git a/internal/cron/tasks/task_load_servers_and_update_data.go b/internal/cron/tasks/task_load_servers_and_update_data.go index 28acc18..9683b5b 100644 --- a/internal/cron/tasks/task_load_servers_and_update_data.go +++ b/internal/cron/tasks/task_load_servers_and_update_data.go @@ -7,7 +7,7 @@ import ( "github.com/go-pg/pg/v10" "github.com/pkg/errors" "github.com/sirupsen/logrus" - "github.com/tribalwarshelp/shared/models" + "github.com/tribalwarshelp/shared/tw/twmodel" "io/ioutil" "net/http" @@ -23,7 +23,7 @@ type taskLoadServersAndUpdateData struct { *task } -func (t *taskLoadServersAndUpdateData) execute(version *models.Version) error { +func (t *taskLoadServersAndUpdateData) execute(version *twmodel.Version) error { if err := t.validatePayload(version); err != nil { log.Debug(err) return nil @@ -37,14 +37,14 @@ func (t *taskLoadServersAndUpdateData) execute(version *models.Version) error { } var serverKeys []string - var servers []*models.Server + var servers []*twmodel.Server for serverKey := range data { if version.SpecialServers.Contains(serverKey) { continue } - server := &models.Server{ + server := &twmodel.Server{ Key: serverKey, - Status: models.ServerStatusOpen, + Status: twmodel.ServerStatusOpen, VersionCode: version.Code, Version: version, } @@ -59,7 +59,7 @@ func (t *taskLoadServersAndUpdateData) execute(version *models.Version) error { if len(servers) > 0 { if _, err := t.db.Model(&servers). OnConflict("(key) DO UPDATE"). - Set("status = ?", models.ServerStatusOpen). + Set("status = ?", twmodel.ServerStatusOpen). Set("version_code = EXCLUDED.version_code"). Returning("*"). Insert(); err != nil { @@ -69,8 +69,8 @@ func (t *taskLoadServersAndUpdateData) execute(version *models.Version) error { } } - if _, err := t.db.Model(&models.Server{}). - Set("status = ?", models.ServerStatusClosed). + if _, err := t.db.Model(&twmodel.Server{}). + Set("status = ?", twmodel.ServerStatusClosed). Where("key NOT IN (?) AND version_code = ?", pg.In(serverKeys), version.Code). Update(); err != nil { err = errors.Wrap(err, "taskLoadServersAndUpdateData.execute: couldn't update server statuses") @@ -87,14 +87,14 @@ func (t *taskLoadServersAndUpdateData) execute(version *models.Version) error { return nil } -func (t *taskLoadServersAndUpdateData) validatePayload(version *models.Version) error { +func (t *taskLoadServersAndUpdateData) validatePayload(version *twmodel.Version) error { if version == nil { - return errors.New("taskLoadServersAndUpdateData.validatePayload: Expected *models.Version, got nil") + return errors.New("taskLoadServersAndUpdateData.validatePayload: Expected *twmodel.Version, got nil") } return nil } -func (t *taskLoadServersAndUpdateData) getServers(version *models.Version) (map[string]string, error) { +func (t *taskLoadServersAndUpdateData) getServers(version *twmodel.Version) (map[string]string, error) { resp, err := http.Get(fmt.Sprintf("https://%s%s", version.Host, endpointGetServers)) if err != nil { return nil, errors.Wrapf(err, "%s: taskLoadServersAndUpdateData.loadServers couldn't load servers", version.Host) diff --git a/internal/cron/tasks/task_load_versions_and_update_server_data.go b/internal/cron/tasks/task_load_versions_and_update_server_data.go index 0b86027..7875866 100644 --- a/internal/cron/tasks/task_load_versions_and_update_server_data.go +++ b/internal/cron/tasks/task_load_versions_and_update_server_data.go @@ -3,7 +3,7 @@ package tasks import ( "context" "github.com/pkg/errors" - "github.com/tribalwarshelp/shared/models" + "github.com/tribalwarshelp/shared/tw/twmodel" "github.com/tribalwarshelp/cron/internal/cron/queue" ) @@ -13,7 +13,7 @@ type taskLoadVersionsAndUpdateServerData struct { } func (t *taskLoadVersionsAndUpdateServerData) execute() error { - var versions []*models.Version + var versions []*twmodel.Version log.Debug("taskLoadVersionsAndUpdateServerData.execute: Loading versions...") if err := t.db.Model(&versions).Relation("SpecialServers").Select(); err != nil { err = errors.Wrap(err, "taskLoadVersionsAndUpdateServerData.execute: couldn't load versions") diff --git a/internal/cron/tasks/task_server_delete_non_existent_villages.go b/internal/cron/tasks/task_server_delete_non_existent_villages.go index a939ec5..d3985f5 100644 --- a/internal/cron/tasks/task_server_delete_non_existent_villages.go +++ b/internal/cron/tasks/task_server_delete_non_existent_villages.go @@ -3,15 +3,15 @@ package tasks import ( "github.com/go-pg/pg/v10" "github.com/pkg/errors" - "github.com/tribalwarshelp/shared/models" - "github.com/tribalwarshelp/shared/tw/dataloader" + "github.com/tribalwarshelp/shared/tw/twdataloader" + "github.com/tribalwarshelp/shared/tw/twmodel" ) type taskServerDeleteNonExistentVillages struct { *task } -func (t *taskServerDeleteNonExistentVillages) execute(url string, server *models.Server) error { +func (t *taskServerDeleteNonExistentVillages) execute(url string, server *twmodel.Server) error { if err := t.validatePayload(server); err != nil { log.Debug(err) return nil @@ -20,7 +20,7 @@ func (t *taskServerDeleteNonExistentVillages) execute(url string, server *models entry.Infof("taskServerDeleteNonExistentVillages.execute: %s: Deleting non-existent villages...", server.Key) err := (&workerDeleteNonExistentVillages{ db: t.db.WithParam("SERVER", pg.Safe(server.Key)), - dataloader: newDataloader(url), + dataloader: newServerDataLoader(url), server: server, }).delete() if err != nil { @@ -32,9 +32,9 @@ func (t *taskServerDeleteNonExistentVillages) execute(url string, server *models return nil } -func (t *taskServerDeleteNonExistentVillages) validatePayload(server *models.Server) error { +func (t *taskServerDeleteNonExistentVillages) validatePayload(server *twmodel.Server) error { if server == nil { - return errors.New("taskUpdateServerData.validatePayload: Expected *models.Server, got nil") + return errors.New("taskUpdateServerData.validatePayload: Expected *twmodel.Server, got nil") } return nil @@ -42,8 +42,8 @@ func (t *taskServerDeleteNonExistentVillages) validatePayload(server *models.Ser type workerDeleteNonExistentVillages struct { db *pg.DB - dataloader dataloader.DataLoader - server *models.Server + dataloader twdataloader.ServerDataLoader + server *twmodel.Server } func (w *workerDeleteNonExistentVillages) delete() error { @@ -54,9 +54,9 @@ func (w *workerDeleteNonExistentVillages) delete() error { var idsToDelete []int searchableByVillageID := &villagesSearchableByID{villages} if err := w.db. - Model(&models.Village{}). + Model(&twmodel.Village{}). Column("id"). - ForEach(func(village *models.Village) error { + ForEach(func(village *twmodel.Village) error { index := searchByID(searchableByVillageID, village.ID) if index < 0 { idsToDelete = append(idsToDelete, village.ID) @@ -68,7 +68,7 @@ func (w *workerDeleteNonExistentVillages) delete() error { totalDeleted := 0 if len(idsToDelete) > 0 { - result, err := w.db.Model(&models.Village{}).Where("id = ANY(?)", pg.Array(idsToDelete)).Delete() + result, err := w.db.Model(&twmodel.Village{}).Where("id = ANY(?)", pg.Array(idsToDelete)).Delete() if err != nil { return errors.Wrap(err, "workerDeleteNonExistentVillages.delete") } diff --git a/internal/cron/tasks/task_update_ennoblements.go b/internal/cron/tasks/task_update_ennoblements.go index 00c57f9..428a18c 100644 --- a/internal/cron/tasks/task_update_ennoblements.go +++ b/internal/cron/tasks/task_update_ennoblements.go @@ -4,7 +4,7 @@ import ( "context" "fmt" "github.com/pkg/errors" - "github.com/tribalwarshelp/shared/models" + "github.com/tribalwarshelp/shared/tw/twmodel" "github.com/tribalwarshelp/cron/internal/cron/queue" ) @@ -14,11 +14,11 @@ type taskUpdateEnnoblements struct { } func (t *taskUpdateEnnoblements) execute() error { - var servers []*models.Server + var servers []*twmodel.Server err := t.db. Model(&servers). Relation("Version"). - Where("status = ?", models.ServerStatusOpen). + Where("status = ?", twmodel.ServerStatusOpen). Select() if err != nil { err = errors.Wrap(err, "taskUpdateEnnoblements.execute") diff --git a/internal/cron/tasks/task_update_history.go b/internal/cron/tasks/task_update_history.go index ca305c5..bc88d02 100644 --- a/internal/cron/tasks/task_update_history.go +++ b/internal/cron/tasks/task_update_history.go @@ -3,7 +3,7 @@ package tasks import ( "context" "github.com/pkg/errors" - "github.com/tribalwarshelp/shared/models" + "github.com/tribalwarshelp/shared/tw/twmodel" "time" "github.com/tribalwarshelp/cron/internal/cron/queue" @@ -23,12 +23,12 @@ func (t *taskUpdateHistory) execute(timezone string) error { } year, month, day := time.Now().In(location).Date() date := time.Date(year, month, day, 1, 30, 0, 0, location) - var servers []*models.Server + var servers []*twmodel.Server err = t.db. Model(&servers). Where( "status = ? AND (history_updated_at IS NULL OR history_updated_at < ?) AND timezone = ?", - models.ServerStatusOpen, + twmodel.ServerStatusOpen, date, timezone, ). diff --git a/internal/cron/tasks/task_update_server_data.go b/internal/cron/tasks/task_update_server_data.go index b5969fc..b786d02 100644 --- a/internal/cron/tasks/task_update_server_data.go +++ b/internal/cron/tasks/task_update_server_data.go @@ -5,8 +5,8 @@ import ( "github.com/go-pg/pg/v10" "github.com/go-pg/pg/v10/orm" "github.com/pkg/errors" - "github.com/tribalwarshelp/shared/models" - "github.com/tribalwarshelp/shared/tw/dataloader" + "github.com/tribalwarshelp/shared/tw/twdataloader" + "github.com/tribalwarshelp/shared/tw/twmodel" "time" ) @@ -14,7 +14,7 @@ type taskUpdateServerData struct { *task } -func (t *taskUpdateServerData) execute(url string, server *models.Server) error { +func (t *taskUpdateServerData) execute(url string, server *twmodel.Server) error { if err := t.validatePayload(server); err != nil { log.Debug(err) return nil @@ -24,7 +24,7 @@ func (t *taskUpdateServerData) execute(url string, server *models.Server) error entry.Infof("taskUpdateServerData.execute: %s: Update of the server data has started...", server.Key) err := (&workerUpdateServerData{ db: t.db.WithParam("SERVER", pg.Safe(server.Key)), - dataloader: newDataloader(url), + dataloader: newServerDataLoader(url), server: server, }).update() if err != nil { @@ -42,9 +42,9 @@ func (t *taskUpdateServerData) execute(url string, server *models.Server) error return nil } -func (t *taskUpdateServerData) validatePayload(server *models.Server) error { +func (t *taskUpdateServerData) validatePayload(server *twmodel.Server) error { if server == nil { - return errors.New("taskUpdateServerData.validatePayload: Expected *models.Server, got nil") + return errors.New("taskUpdateServerData.validatePayload: Expected *twmodel.Server, got nil") } return nil @@ -52,20 +52,20 @@ func (t *taskUpdateServerData) validatePayload(server *models.Server) error { type workerUpdateServerData struct { db *pg.DB - dataloader dataloader.DataLoader - server *models.Server + dataloader twdataloader.ServerDataLoader + server *twmodel.Server } type loadPlayersResult struct { ids []int - players []*models.Player - playersToServer []*models.PlayerToServer + players []*twmodel.Player + playersToServer []*twmodel.PlayerToServer deletedPlayers []int numberOfPlayers int } -func (w *workerUpdateServerData) loadPlayers(od map[int]*models.OpponentsDefeated) (loadPlayersResult, error) { - var ennoblements []*models.Ennoblement +func (w *workerUpdateServerData) loadPlayers(od map[int]*twmodel.OpponentsDefeated) (loadPlayersResult, error) { + var ennoblements []*twmodel.Ennoblement result := loadPlayersResult{} if err := w.db. Model(&ennoblements). @@ -83,7 +83,7 @@ func (w *workerUpdateServerData) loadPlayers(od map[int]*models.OpponentsDefeate result.numberOfPlayers = len(result.players) now := time.Now() - result.playersToServer = make([]*models.PlayerToServer, result.numberOfPlayers) + result.playersToServer = make([]*twmodel.PlayerToServer, result.numberOfPlayers) result.ids = make([]int, result.numberOfPlayers) searchableByNewOwnerID := &ennoblementsSearchableByNewOwnerID{ennoblements} for index, player := range result.players { @@ -99,7 +99,7 @@ func (w *workerUpdateServerData) loadPlayers(od map[int]*models.OpponentsDefeate player.DailyGrowth = calcPlayerDailyGrowth(diffInDays, player.Points) } - result.playersToServer[index] = &models.PlayerToServer{ + result.playersToServer[index] = &twmodel.PlayerToServer{ PlayerID: player.ID, ServerKey: w.server.Key, } @@ -109,10 +109,10 @@ func (w *workerUpdateServerData) loadPlayers(od map[int]*models.OpponentsDefeate searchablePlayers := &playersSearchableByID{result.players} if err := w.db. - Model(&models.Player{}). + Model(&twmodel.Player{}). Column("id"). Where("exists = true"). - ForEach(func(player *models.Player) error { + ForEach(func(player *twmodel.Player) error { if index := searchByID(searchablePlayers, player.ID); index < 0 { result.deletedPlayers = append(result.deletedPlayers, player.ID) } @@ -126,12 +126,12 @@ func (w *workerUpdateServerData) loadPlayers(od map[int]*models.OpponentsDefeate type loadTribesResult struct { ids []int - tribes []*models.Tribe + tribes []*twmodel.Tribe deletedTribes []int numberOfTribes int } -func (w *workerUpdateServerData) loadTribes(od map[int]*models.OpponentsDefeated, numberOfVillages int) (loadTribesResult, error) { +func (w *workerUpdateServerData) loadTribes(od map[int]*twmodel.OpponentsDefeated, numberOfVillages int) (loadTribesResult, error) { var err error result := loadTribesResult{} result.tribes, err = w.dataloader.LoadTribes() @@ -156,10 +156,10 @@ func (w *workerUpdateServerData) loadTribes(od map[int]*models.OpponentsDefeated searchableTribes := &tribesSearchableByID{result.tribes} if err := w.db. - Model(&models.Tribe{}). + Model(&twmodel.Tribe{}). Column("id"). Where("exists = true"). - ForEach(func(tribe *models.Tribe) error { + ForEach(func(tribe *twmodel.Tribe) error { if index := searchByID(searchableTribes, tribe.ID); index < 0 { result.deletedTribes = append(result.deletedTribes, tribe.ID) } @@ -171,8 +171,8 @@ func (w *workerUpdateServerData) loadTribes(od map[int]*models.OpponentsDefeated return result, nil } -func (w *workerUpdateServerData) calculateODifference(od1 models.OpponentsDefeated, od2 models.OpponentsDefeated) models.OpponentsDefeated { - return models.OpponentsDefeated{ +func (w *workerUpdateServerData) calculateODifference(od1 twmodel.OpponentsDefeated, od2 twmodel.OpponentsDefeated) twmodel.OpponentsDefeated { + return twmodel.OpponentsDefeated{ RankAtt: (od1.RankAtt - od2.RankAtt) * -1, ScoreAtt: od1.ScoreAtt - od2.ScoreAtt, RankDef: (od1.RankDef - od2.RankDef) * -1, @@ -185,16 +185,16 @@ func (w *workerUpdateServerData) calculateODifference(od1 models.OpponentsDefeat } func (w *workerUpdateServerData) calculateTodaysTribeStats( - tribes []*models.Tribe, - history []*models.TribeHistory, -) []*models.DailyTribeStats { - var todaysStats []*models.DailyTribeStats + tribes []*twmodel.Tribe, + history []*twmodel.TribeHistory, +) []*twmodel.DailyTribeStats { + var todaysStats []*twmodel.DailyTribeStats searchableTribes := &tribesSearchableByID{tribes} for _, historyRecord := range history { if index := searchByID(searchableTribes, historyRecord.TribeID); index != -1 { tribe := tribes[index] - todaysStats = append(todaysStats, &models.DailyTribeStats{ + todaysStats = append(todaysStats, &twmodel.DailyTribeStats{ TribeID: tribe.ID, Members: tribe.TotalMembers - historyRecord.TotalMembers, Villages: tribe.TotalVillages - historyRecord.TotalVillages, @@ -212,16 +212,16 @@ func (w *workerUpdateServerData) calculateTodaysTribeStats( } func (w *workerUpdateServerData) calculateDailyPlayerStats( - players []*models.Player, - history []*models.PlayerHistory, -) []*models.DailyPlayerStats { - var todaysStats []*models.DailyPlayerStats + players []*twmodel.Player, + history []*twmodel.PlayerHistory, +) []*twmodel.DailyPlayerStats { + var todaysStats []*twmodel.DailyPlayerStats searchablePlayers := &playersSearchableByID{players} for _, historyRecord := range history { if index := searchByID(searchablePlayers, historyRecord.PlayerID); index != -1 { player := players[index] - todaysStats = append(todaysStats, &models.DailyPlayerStats{ + todaysStats = append(todaysStats, &twmodel.DailyPlayerStats{ PlayerID: player.ID, Villages: player.TotalVillages - historyRecord.TotalVillages, Points: player.Points - historyRecord.Points, @@ -281,7 +281,7 @@ func (w *workerUpdateServerData) update() error { defer cancel() return w.db.RunInTransaction(ctx, func(tx *pg.Tx) error { if len(tribesResult.deletedTribes) > 0 { - if _, err := tx.Model(&models.Tribe{}). + if _, err := tx.Model(&twmodel.Tribe{}). Where("tribe.id = ANY (?)", pg.Array(tribesResult.deletedTribes)). Set("exists = false"). Set("deleted_at = now()"). @@ -309,7 +309,7 @@ func (w *workerUpdateServerData) update() error { return errors.Wrap(err, "couldn't insert tribes") } - var tribesHistory []*models.TribeHistory + var tribesHistory []*twmodel.TribeHistory if err := tx. Model(&tribesHistory). DistinctOn("tribe_id"). @@ -339,7 +339,7 @@ func (w *workerUpdateServerData) update() error { } if len(playersResult.deletedPlayers) > 0 { - if _, err := tx.Model(&models.Player{}). + if _, err := tx.Model(&twmodel.Player{}). Where("player.id = ANY (?)", pg.Array(playersResult.deletedPlayers)). Set("exists = false"). Set("deleted_at = now()"). @@ -365,7 +365,7 @@ func (w *workerUpdateServerData) update() error { return errors.Wrap(err, "couldn't insert players") } - var playerHistory []*models.PlayerHistory + var playerHistory []*twmodel.PlayerHistory if err := tx.Model(&playerHistory). DistinctOn("player_id"). Column("player_history.*"). diff --git a/internal/cron/tasks/task_update_server_ennoblements.go b/internal/cron/tasks/task_update_server_ennoblements.go index addd275..dfcc56f 100644 --- a/internal/cron/tasks/task_update_server_ennoblements.go +++ b/internal/cron/tasks/task_update_server_ennoblements.go @@ -3,15 +3,15 @@ package tasks import ( "github.com/go-pg/pg/v10" "github.com/pkg/errors" - "github.com/tribalwarshelp/shared/models" - "github.com/tribalwarshelp/shared/tw/dataloader" + "github.com/tribalwarshelp/shared/tw/twdataloader" + "github.com/tribalwarshelp/shared/tw/twmodel" ) type taskUpdateServerEnnoblements struct { *task } -func (t *taskUpdateServerEnnoblements) execute(url string, server *models.Server) error { +func (t *taskUpdateServerEnnoblements) execute(url string, server *twmodel.Server) error { if err := t.validatePayload(server); err != nil { log.Debug(err) return nil @@ -20,7 +20,7 @@ func (t *taskUpdateServerEnnoblements) execute(url string, server *models.Server entry.Debugf("%s: update of the ennoblements has started...", server.Key) err := (&workerUpdateServerEnnoblements{ db: t.db.WithParam("SERVER", pg.Safe(server.Key)), - dataloader: newDataloader(url), + dataloader: newServerDataLoader(url), }).update() if err != nil { err = errors.Wrap(err, "taskUpdateServerEnnoblements.execute") @@ -32,9 +32,9 @@ func (t *taskUpdateServerEnnoblements) execute(url string, server *models.Server return nil } -func (t *taskUpdateServerEnnoblements) validatePayload(server *models.Server) error { +func (t *taskUpdateServerEnnoblements) validatePayload(server *twmodel.Server) error { if server == nil { - return errors.Errorf("taskUpdateServerEnnoblements.validatePayload: Expected *models.Server, got nil") + return errors.Errorf("taskUpdateServerEnnoblements.validatePayload: Expected *twmodel.Server, got nil") } return nil @@ -42,11 +42,11 @@ func (t *taskUpdateServerEnnoblements) validatePayload(server *models.Server) er type workerUpdateServerEnnoblements struct { db *pg.DB - dataloader dataloader.DataLoader + dataloader twdataloader.ServerDataLoader } -func (w *workerUpdateServerEnnoblements) loadEnnoblements() ([]*models.Ennoblement, error) { - lastEnnoblement := &models.Ennoblement{} +func (w *workerUpdateServerEnnoblements) loadEnnoblements() ([]*twmodel.Ennoblement, error) { + lastEnnoblement := &twmodel.Ennoblement{} if err := w.db. Model(lastEnnoblement). Limit(1). @@ -55,7 +55,7 @@ func (w *workerUpdateServerEnnoblements) loadEnnoblements() ([]*models.Ennobleme return nil, errors.Wrapf(err, "couldn't load last ennoblement") } - return w.dataloader.LoadEnnoblements(&dataloader.LoadEnnoblementsConfig{ + return w.dataloader.LoadEnnoblements(&twdataloader.LoadEnnoblementsConfig{ EnnobledAtGT: lastEnnoblement.EnnobledAt, }) } diff --git a/internal/cron/tasks/task_update_server_history.go b/internal/cron/tasks/task_update_server_history.go index 4d16b17..7ee8e0d 100644 --- a/internal/cron/tasks/task_update_server_history.go +++ b/internal/cron/tasks/task_update_server_history.go @@ -3,7 +3,7 @@ package tasks import ( "github.com/go-pg/pg/v10" "github.com/pkg/errors" - "github.com/tribalwarshelp/shared/models" + "github.com/tribalwarshelp/shared/tw/twmodel" "time" ) @@ -11,7 +11,7 @@ type taskUpdateServerHistory struct { *task } -func (t *taskUpdateServerHistory) execute(timezone string, server *models.Server) error { +func (t *taskUpdateServerHistory) execute(timezone string, server *twmodel.Server) error { if err := t.validatePayload(server); err != nil { log.Debug(err) return nil @@ -39,9 +39,9 @@ func (t *taskUpdateServerHistory) execute(timezone string, server *models.Server return nil } -func (t *taskUpdateServerHistory) validatePayload(server *models.Server) error { +func (t *taskUpdateServerHistory) validatePayload(server *twmodel.Server) error { if server == nil { - return errors.New("taskUpdateServerHistory.validatePayload: Expected *models.Server, got nil") + return errors.New("taskUpdateServerHistory.validatePayload: Expected *twmodel.Server, got nil") } return nil @@ -49,21 +49,21 @@ func (t *taskUpdateServerHistory) validatePayload(server *models.Server) error { type workerUpdateServerHistory struct { db *pg.DB - server *models.Server + server *twmodel.Server location *time.Location } func (w *workerUpdateServerHistory) update() error { - var players []*models.Player + var players []*twmodel.Player if err := w.db.Model(&players).Where("exists = true").Select(); err != nil { return errors.Wrap(err, "couldn't load players") } now := time.Now().In(w.location) createDate := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.UTC) - var ph []*models.PlayerHistory + var ph []*twmodel.PlayerHistory for _, player := range players { - ph = append(ph, &models.PlayerHistory{ + ph = append(ph, &twmodel.PlayerHistory{ OpponentsDefeated: player.OpponentsDefeated, PlayerID: player.ID, TotalVillages: player.TotalVillages, @@ -74,13 +74,13 @@ func (w *workerUpdateServerHistory) update() error { }) } - var tribes []*models.Tribe + var tribes []*twmodel.Tribe if err := w.db.Model(&tribes).Where("exists = true").Select(); err != nil { return errors.Wrap(err, "couldn't load tribes") } - var th []*models.TribeHistory + var th []*twmodel.TribeHistory for _, tribe := range tribes { - th = append(th, &models.TribeHistory{ + th = append(th, &twmodel.TribeHistory{ OpponentsDefeated: tribe.OpponentsDefeated, TribeID: tribe.ID, TotalMembers: tribe.TotalMembers, @@ -97,7 +97,7 @@ func (w *workerUpdateServerHistory) update() error { if err != nil { return err } - defer func(s *models.Server) { + defer func(s *twmodel.Server) { if err := tx.Close(); err != nil { log.Warn(errors.Wrapf(err, "%s: Couldn't rollback the transaction", s.Key)) } diff --git a/internal/cron/tasks/task_update_server_stats.go b/internal/cron/tasks/task_update_server_stats.go index eee020f..f7501ba 100644 --- a/internal/cron/tasks/task_update_server_stats.go +++ b/internal/cron/tasks/task_update_server_stats.go @@ -3,7 +3,7 @@ package tasks import ( "github.com/go-pg/pg/v10" "github.com/pkg/errors" - "github.com/tribalwarshelp/shared/models" + "github.com/tribalwarshelp/shared/tw/twmodel" "time" ) @@ -11,7 +11,7 @@ type taskUpdateServerStats struct { *task } -func (t *taskUpdateServerStats) execute(timezone string, server *models.Server) error { +func (t *taskUpdateServerStats) execute(timezone string, server *twmodel.Server) error { if err := t.validatePayload(server); err != nil { log.Debug(err) return nil @@ -39,9 +39,9 @@ func (t *taskUpdateServerStats) execute(timezone string, server *models.Server) return nil } -func (t *taskUpdateServerStats) validatePayload(server *models.Server) error { +func (t *taskUpdateServerStats) validatePayload(server *twmodel.Server) error { if server == nil { - return errors.New("taskUpdateServerStats.validatePayload: Expected *models.Server, got nil") + return errors.New("taskUpdateServerStats.validatePayload: Expected *twmodel.Server, got nil") } return nil @@ -49,51 +49,51 @@ func (t *taskUpdateServerStats) validatePayload(server *models.Server) error { type workerUpdateServerStats struct { db *pg.DB - server *models.Server + server *twmodel.Server location *time.Location } -func (w *workerUpdateServerStats) prepare() (*models.ServerStats, error) { - activePlayers, err := w.db.Model(&models.Player{}).Where("exists = true").Count() +func (w *workerUpdateServerStats) prepare() (*twmodel.ServerStats, error) { + activePlayers, err := w.db.Model(&twmodel.Player{}).Where("exists = true").Count() if err != nil { return nil, errors.Wrap(err, "cannot count active players") } - inactivePlayers, err := w.db.Model(&models.Player{}).Where("exists = false").Count() + inactivePlayers, err := w.db.Model(&twmodel.Player{}).Where("exists = false").Count() if err != nil { return nil, errors.Wrap(err, "cannot count inactive players") } players := activePlayers + inactivePlayers - activeTribes, err := w.db.Model(&models.Tribe{}).Where("exists = true").Count() + activeTribes, err := w.db.Model(&twmodel.Tribe{}).Where("exists = true").Count() if err != nil { return nil, errors.Wrap(err, "cannot count active tribes") } - inactiveTribes, err := w.db.Model(&models.Tribe{}).Where("exists = false").Count() + inactiveTribes, err := w.db.Model(&twmodel.Tribe{}).Where("exists = false").Count() if err != nil { return nil, errors.Wrap(err, "cannot count inactive tribes") } tribes := activeTribes + inactiveTribes - barbarianVillages, err := w.db.Model(&models.Village{}).Where("player_id = 0").Count() + barbarianVillages, err := w.db.Model(&twmodel.Village{}).Where("player_id = 0").Count() if err != nil { return nil, errors.Wrap(err, "cannot count barbarian villages") } - bonusVillages, err := w.db.Model(&models.Village{}).Where("bonus <> 0").Count() + bonusVillages, err := w.db.Model(&twmodel.Village{}).Where("bonus <> 0").Count() if err != nil { return nil, errors.Wrap(err, "cannot count bonus villages") } - playerVillages, err := w.db.Model(&models.Village{}).Where("player_id <> 0").Count() + playerVillages, err := w.db.Model(&twmodel.Village{}).Where("player_id <> 0").Count() if err != nil { return nil, errors.Wrap(err, "cannot count player villages") } - villages, err := w.db.Model(&models.Village{}).Count() + villages, err := w.db.Model(&twmodel.Village{}).Count() if err != nil { return nil, errors.Wrap(err, "cannot count villages") } now := time.Now().In(w.location) createDate := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.UTC) - return &models.ServerStats{ + return &twmodel.ServerStats{ ActivePlayers: activePlayers, InactivePlayers: inactivePlayers, Players: players, @@ -120,7 +120,7 @@ func (w *workerUpdateServerStats) update() error { if err != nil { return err } - defer func(s *models.Server) { + defer func(s *twmodel.Server) { if err := tx.Close(); err != nil { log.Warn(errors.Wrapf(err, "%s: Couldn't rollback the transaction", s.Key)) } diff --git a/internal/cron/tasks/task_update_stats.go b/internal/cron/tasks/task_update_stats.go index 1b7aad3..eb63f92 100644 --- a/internal/cron/tasks/task_update_stats.go +++ b/internal/cron/tasks/task_update_stats.go @@ -3,7 +3,7 @@ package tasks import ( "context" "github.com/pkg/errors" - "github.com/tribalwarshelp/shared/models" + "github.com/tribalwarshelp/shared/tw/twmodel" "time" "github.com/tribalwarshelp/cron/internal/cron/queue" @@ -23,12 +23,12 @@ func (t *taskUpdateStats) execute(timezone string) error { } year, month, day := time.Now().In(location).Date() date := time.Date(year, month, day, 1, 45, 0, 0, location) - var servers []*models.Server + var servers []*twmodel.Server err = t.db. Model(&servers). Where( "status = ? AND (stats_updated_at IS NULL OR stats_updated_at < ?) AND timezone = ?", - models.ServerStatusOpen, + twmodel.ServerStatusOpen, date, location.String(), ). diff --git a/internal/cron/tasks/task_vacuum.go b/internal/cron/tasks/task_vacuum.go index d92291a..14ed57c 100644 --- a/internal/cron/tasks/task_vacuum.go +++ b/internal/cron/tasks/task_vacuum.go @@ -3,7 +3,7 @@ package tasks import ( "context" "github.com/pkg/errors" - "github.com/tribalwarshelp/shared/models" + "github.com/tribalwarshelp/shared/tw/twmodel" "github.com/tribalwarshelp/cron/internal/cron/queue" ) @@ -13,7 +13,7 @@ type taskVacuum struct { } func (t *taskVacuum) execute() error { - var servers []*models.Server + var servers []*twmodel.Server err := t.db. Model(&servers). Select() diff --git a/internal/cron/tasks/task_vacuum_server_db.go b/internal/cron/tasks/task_vacuum_server_db.go index 752cd34..32c8c4d 100644 --- a/internal/cron/tasks/task_vacuum_server_db.go +++ b/internal/cron/tasks/task_vacuum_server_db.go @@ -3,7 +3,7 @@ package tasks import ( "github.com/go-pg/pg/v10" "github.com/pkg/errors" - "github.com/tribalwarshelp/shared/models" + "github.com/tribalwarshelp/shared/tw/twmodel" "time" ) @@ -15,7 +15,7 @@ type taskVacuumServerDB struct { *task } -func (t *taskVacuumServerDB) execute(server *models.Server) error { +func (t *taskVacuumServerDB) execute(server *twmodel.Server) error { if err := t.validatePayload(server); err != nil { log.Debug(err) return nil @@ -36,9 +36,9 @@ func (t *taskVacuumServerDB) execute(server *models.Server) error { return nil } -func (t *taskVacuumServerDB) validatePayload(server *models.Server) error { +func (t *taskVacuumServerDB) validatePayload(server *twmodel.Server) error { if server == nil { - return errors.New("taskVacuumServerDB.validatePayload: Expected *models.Server, got nil") + return errors.New("taskVacuumServerDB.validatePayload: Expected *twmodel.Server, got nil") } return nil @@ -46,7 +46,7 @@ func (t *taskVacuumServerDB) validatePayload(server *models.Server) error { type workerVacuumServerDB struct { db *pg.DB - server *models.Server + server *twmodel.Server } func (w *workerVacuumServerDB) vacuum() error { @@ -54,16 +54,16 @@ func (w *workerVacuumServerDB) vacuum() error { if err != nil { return err } - defer func(s *models.Server) { + defer func(s *twmodel.Server) { if err := tx.Close(); err != nil { log.Warn(errors.Wrapf(err, "%s: Couldn't rollback the transaction", s.Key)) } }(w.server) - withNonExistentPlayers := w.db.Model(&models.Player{}).Column("id").Where("exists = false and NOW() - deleted_at > '14 days'") - withNonExistentTribes := w.db.Model(&models.Tribe{}).Column("id").Where("exists = false and NOW() - deleted_at > '1 days'") + withNonExistentPlayers := w.db.Model(&twmodel.Player{}).Column("id").Where("exists = false and NOW() - deleted_at > '14 days'") + withNonExistentTribes := w.db.Model(&twmodel.Tribe{}).Column("id").Where("exists = false and NOW() - deleted_at > '1 days'") - _, err = tx.Model(&models.PlayerHistory{}). + _, err = tx.Model(&twmodel.PlayerHistory{}). With("players", withNonExistentPlayers). Where("player_id IN (Select id FROM players) OR player_history.create_date < ?", time.Now().Add(-1*day*180)). Delete() @@ -71,7 +71,7 @@ func (w *workerVacuumServerDB) vacuum() error { return errors.Wrap(err, "couldn't delete the old player history records") } - _, err = tx.Model(&models.TribeHistory{}). + _, err = tx.Model(&twmodel.TribeHistory{}). With("tribes", withNonExistentTribes). Where("tribe_id IN (Select id FROM tribes) OR tribe_history.create_date < ?", time.Now().Add(-1*day*180)). Delete() @@ -79,7 +79,7 @@ func (w *workerVacuumServerDB) vacuum() error { return errors.Wrap(err, "couldn't delete the old tribe history records") } - _, err = tx.Model(&models.DailyPlayerStats{}). + _, err = tx.Model(&twmodel.DailyPlayerStats{}). With("players", withNonExistentPlayers). Where("player_id IN (Select id FROM players) OR daily_player_stats.create_date < ?", time.Now().Add(-1*day*180)). Delete() @@ -87,7 +87,7 @@ func (w *workerVacuumServerDB) vacuum() error { return errors.Wrap(err, "couldn't delete the old player stats records") } - _, err = tx.Model(&models.DailyTribeStats{}). + _, err = tx.Model(&twmodel.DailyTribeStats{}). With("tribes", withNonExistentTribes). Where("tribe_id IN (Select id FROM tribes) OR daily_tribe_stats.create_date < ?", time.Now().Add(-1*day*180)). Delete() diff --git a/internal/cron/tasks/tasks.go b/internal/cron/tasks/tasks.go index a9c8d29..6330ad0 100644 --- a/internal/cron/tasks/tasks.go +++ b/internal/cron/tasks/tasks.go @@ -113,10 +113,7 @@ func Get(taskName string) *taskq.Task { } func validateConfig(cfg *Config) error { - if cfg == nil { - return errors.New("Config hasn't been provided") - } - if cfg.DB == nil { + if cfg == nil || cfg.DB == nil { return errors.New("cfg.DB is required") } if cfg.Queue == nil { diff --git a/internal/db/db.go b/internal/db/db.go index 546fc07..f08160e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -2,14 +2,13 @@ package db import ( "fmt" - gopglogrusquerylogger "github.com/Kichiyaki/go-pg-logrus-query-logger/v10" + "github.com/Kichiyaki/go-pg-logrus-query-logger/v10" + "github.com/Kichiyaki/goutil/envutil" "github.com/go-pg/pg/v10" "github.com/go-pg/pg/v10/orm" "github.com/pkg/errors" "github.com/sirupsen/logrus" - "github.com/tribalwarshelp/shared/models" - - envutils "github.com/tribalwarshelp/cron/internal/utils/env" + "github.com/tribalwarshelp/shared/tw/twmodel" ) var log = logrus.WithField("package", "db") @@ -22,7 +21,7 @@ func New(cfg *Config) (*pg.DB, error) { db := pg.Connect(prepareOptions()) if cfg != nil && cfg.LogQueries { - db.AddQueryHook(gopglogrusquerylogger.QueryLogger{ + db.AddQueryHook(querylogger.Logger{ Log: log, MaxQueryLength: 5000, }) @@ -37,11 +36,11 @@ func New(cfg *Config) (*pg.DB, error) { func prepareOptions() *pg.Options { return &pg.Options{ - User: envutils.GetenvString("DB_USER"), - Password: envutils.GetenvString("DB_PASSWORD"), - Database: envutils.GetenvString("DB_NAME"), - Addr: envutils.GetenvString("DB_HOST") + ":" + envutils.GetenvString("DB_PORT"), - PoolSize: envutils.GetenvInt("DB_POOL_SIZE"), + User: envutil.GetenvString("DB_USER"), + Password: envutil.GetenvString("DB_PASSWORD"), + Database: envutil.GetenvString("DB_NAME"), + Addr: envutil.GetenvString("DB_HOST") + ":" + envutil.GetenvString("DB_PORT"), + PoolSize: envutil.GetenvInt("DB_POOL_SIZE"), } } @@ -57,11 +56,11 @@ func prepareDB(db *pg.DB) error { }() dbModels := []interface{}{ - (*models.SpecialServer)(nil), - (*models.Server)(nil), - (*models.Version)(nil), - (*models.PlayerToServer)(nil), - (*models.PlayerNameChange)(nil), + (*twmodel.SpecialServer)(nil), + (*twmodel.Server)(nil), + (*twmodel.Version)(nil), + (*twmodel.PlayerToServer)(nil), + (*twmodel.PlayerNameChange)(nil), } for _, model := range dbModels { @@ -105,7 +104,7 @@ func prepareDB(db *pg.DB) error { return errors.Wrap(err, "Couldn't commit changes") } - var servers []*models.Server + var servers []*twmodel.Server if err := db.Model(&servers).Select(); err != nil { return errors.Wrap(err, "Couldn't load servers") } @@ -119,7 +118,7 @@ func prepareDB(db *pg.DB) error { return nil } -func CreateSchema(db *pg.DB, server *models.Server) error { +func CreateSchema(db *pg.DB, server *twmodel.Server) error { return createSchema(db, server, false) } @@ -135,7 +134,7 @@ func SchemaExists(db *pg.DB, schemaName string) bool { return exists } -func createSchema(db *pg.DB, server *models.Server, init bool) error { +func createSchema(db *pg.DB, server *twmodel.Server, init bool) error { if !init && SchemaExists(db, server.Key) { return nil } @@ -155,16 +154,16 @@ func createSchema(db *pg.DB, server *models.Server, init bool) error { } dbModels := []interface{}{ - (*models.Tribe)(nil), - (*models.Player)(nil), - (*models.Village)(nil), - (*models.Ennoblement)(nil), - (*models.ServerStats)(nil), - (*models.TribeHistory)(nil), - (*models.PlayerHistory)(nil), - (*models.TribeChange)(nil), - (*models.DailyPlayerStats)(nil), - (*models.DailyTribeStats)(nil), + (*twmodel.Tribe)(nil), + (*twmodel.Player)(nil), + (*twmodel.Village)(nil), + (*twmodel.Ennoblement)(nil), + (*twmodel.ServerStats)(nil), + (*twmodel.TribeHistory)(nil), + (*twmodel.PlayerHistory)(nil), + (*twmodel.TribeChange)(nil), + (*twmodel.DailyPlayerStats)(nil), + (*twmodel.DailyTribeStats)(nil), } for _, model := range dbModels { diff --git a/internal/utils/env/env.go b/internal/utils/env/env.go deleted file mode 100644 index 626395c..0000000 --- a/internal/utils/env/env.go +++ /dev/null @@ -1,30 +0,0 @@ -package envutils - -import ( - "os" - "strconv" -) - -func GetenvInt(key string) int { - str := GetenvString(key) - if str == "" { - return 0 - } - i, err := strconv.Atoi(str) - if err != nil { - return 0 - } - return i -} - -func GetenvBool(key string) bool { - str := GetenvString(key) - if str == "" { - return false - } - return str == "true" || str == "1" -} - -func GetenvString(key string) string { - return os.Getenv(key) -} diff --git a/main.go b/main.go index 19b603a..636be1a 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,8 @@ package main import ( "context" + "github.com/Kichiyaki/appmode" + "github.com/Kichiyaki/goutil/envutil" "github.com/go-redis/redis/v8" "github.com/pkg/errors" "os" @@ -10,11 +12,9 @@ import ( "time" "github.com/sirupsen/logrus" - "github.com/tribalwarshelp/shared/mode" twhelpcron "github.com/tribalwarshelp/cron/internal/cron" "github.com/tribalwarshelp/cron/internal/db" - envutils "github.com/tribalwarshelp/cron/internal/utils/env" "github.com/joho/godotenv" "github.com/robfig/cron/v3" @@ -38,7 +38,7 @@ func main() { } }() - dbConn, err := db.New(&db.Config{LogQueries: envutils.GetenvBool("LOG_DB_QUERIES")}) + dbConn, err := db.New(&db.Config{LogQueries: envutil.GetenvBool("LOG_DB_QUERIES")}) if err != nil { logrus.Fatal(errors.Wrap(err, "Couldn't connect to the db")) } @@ -50,9 +50,9 @@ func main() { c, err := twhelpcron.New(&twhelpcron.Config{ DB: dbConn, - RunOnInit: envutils.GetenvBool("RUN_ON_INIT"), + RunOnInit: envutil.GetenvBool("RUN_ON_INIT"), Redis: redisClient, - WorkerLimit: envutils.GetenvInt("WORKER_LIMIT"), + WorkerLimit: envutil.GetenvInt("WORKER_LIMIT"), Opts: []cron.Option{ cron.WithChain( cron.SkipIfStillRunning( @@ -86,7 +86,7 @@ func setupENVs() error { return errors.Wrap(err, "setupENVs") } - if mode.Get() == mode.DevelopmentMode { + if appmode.Equals(appmode.DevelopmentMode) { err := godotenv.Load(".env.local") if err != nil { return errors.Wrap(err, "setupENVs") @@ -97,12 +97,12 @@ func setupENVs() error { } func setupLogger() { - if mode.Get() == mode.DevelopmentMode { + if appmode.Equals(appmode.DevelopmentMode) { logrus.SetLevel(logrus.DebugLevel) } timestampFormat := "2006-01-02 15:04:05" - if mode.Get() == mode.ProductionMode { + if appmode.Equals(appmode.ProductionMode) { customFormatter := new(logrus.JSONFormatter) customFormatter.TimestampFormat = timestampFormat logrus.SetFormatter(customFormatter) @@ -116,10 +116,10 @@ func setupLogger() { func initializeRedis() (redis.UniversalClient, error) { client := redis.NewClient(&redis.Options{ - Addr: envutils.GetenvString("REDIS_ADDR"), - Username: envutils.GetenvString("REDIS_USERNAME"), - Password: envutils.GetenvString("REDIS_PASSWORD"), - DB: envutils.GetenvInt("REDIS_DB"), + Addr: envutil.GetenvString("REDIS_ADDR"), + Username: envutil.GetenvString("REDIS_USERNAME"), + Password: envutil.GetenvString("REDIS_PASSWORD"), + DB: envutil.GetenvInt("REDIS_DB"), }) ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel()