From 1c1758ce7dcfa6142ab408e3efead68d2e5ddcdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Wysoki=C5=84ski?= Date: Sat, 4 May 2024 05:26:22 +0000 Subject: [PATCH] refactor: server - rename *_updated_at columns (#45) Reviewed-on: https://gitea.dwysokinski.me/twhelp/core/pulls/45 --- internal/adapter/repository_bun_server.go | 12 ++--- internal/adapter/testdata/fixture.yml | 32 ++++++------- internal/bun/bunmodel/server.go | 48 +++++++++---------- ...51104_servers_rename_updated_at_columns.go | 44 +++++++++++++++++ internal/port/testdata/api/fixture.yml | 40 ++++++++-------- internal/port/testdata/cleanup/fixture.yml | 8 ++-- .../testdata/snapshotcreation/fixture.yml | 8 ++-- 7 files changed, 114 insertions(+), 78 deletions(-) create mode 100644 internal/bun/migrations/20240504051104_servers_rename_updated_at_columns.go diff --git a/internal/adapter/repository_bun_server.go b/internal/adapter/repository_bun_server.go index 68a9f91..7e6ff75 100644 --- a/internal/adapter/repository_bun_server.go +++ b/internal/adapter/repository_bun_server.go @@ -131,8 +131,7 @@ func (a updateServerParamsApplier) apply(q *bun.UpdateQuery) *bun.UpdateQuery { } if tribeDataSyncedAt := a.params.TribeDataSyncedAt(); tribeDataSyncedAt.Valid { - // TODO: rename this column to tribe_data_synced_at - q = q.Set("tribe_data_updated_at = ?", tribeDataSyncedAt.V) + q = q.Set("tribe_data_synced_at = ?", tribeDataSyncedAt.V) } if numPlayers := a.params.NumPlayers(); numPlayers.Valid { @@ -140,8 +139,7 @@ func (a updateServerParamsApplier) apply(q *bun.UpdateQuery) *bun.UpdateQuery { } if playerDataSyncedAt := a.params.PlayerDataSyncedAt(); playerDataSyncedAt.Valid { - // TODO: rename this column to player_data_synced_at - q = q.Set("player_data_updated_at = ?", playerDataSyncedAt.V) + q = q.Set("player_data_synced_at = ?", playerDataSyncedAt.V) } if numVillages := a.params.NumVillages(); numVillages.Valid { @@ -161,13 +159,11 @@ func (a updateServerParamsApplier) apply(q *bun.UpdateQuery) *bun.UpdateQuery { } if villageDataSyncedAt := a.params.VillageDataSyncedAt(); villageDataSyncedAt.Valid { - // TODO: rename this column to village_data_synced_at - q = q.Set("village_data_updated_at = ?", villageDataSyncedAt.V) + q = q.Set("village_data_synced_at = ?", villageDataSyncedAt.V) } if ennoblementDataSyncedAt := a.params.EnnoblementDataSyncedAt(); ennoblementDataSyncedAt.Valid { - // TODO: rename this column to ennoblement_data_synced_at - q = q.Set("ennoblement_data_updated_at = ?", ennoblementDataSyncedAt.V) + q = q.Set("ennoblement_data_synced_at = ?", ennoblementDataSyncedAt.V) } if tribeSnapshotsCreatedAt := a.params.TribeSnapshotsCreatedAt(); tribeSnapshotsCreatedAt.Valid { diff --git a/internal/adapter/testdata/fixture.yml b/internal/adapter/testdata/fixture.yml index 69eb532..48808a0 100644 --- a/internal/adapter/testdata/fixture.yml +++ b/internal/adapter/testdata/fixture.yml @@ -12,12 +12,12 @@ num_barbarian_villages: 1180 num_bonus_villages: 512 created_at: 2022-03-19T12:00:54.000Z - player_data_updated_at: 2022-03-19T12:00:54.000Z + player_data_synced_at: 2022-03-19T12:00:54.000Z player_snapshots_created_at: 2022-03-19T12:00:54.000Z - tribe_data_updated_at: 2022-03-19T12:00:54.000Z + tribe_data_synced_at: 2022-03-19T12:00:54.000Z tribe_snapshots_created_at: 2022-03-19T12:00:54.000Z - village_data_updated_at: 2022-03-19T12:00:54.000Z - ennoblement_data_updated_at: 2022-03-19T12:00:54.000Z + village_data_synced_at: 2022-03-19T12:00:54.000Z + ennoblement_data_synced_at: 2022-03-19T12:00:54.000Z version_code: de - _id: en113 key: en113 @@ -31,12 +31,12 @@ num_barbarian_villages: 700 num_bonus_villages: 1024 created_at: 2021-04-02T16:01:25.000Z - player_data_updated_at: 2021-04-02T16:01:25.000Z + player_data_synced_at: 2021-04-02T16:01:25.000Z player_snapshots_created_at: 2021-04-02T16:01:25.000Z - tribe_data_updated_at: 2021-04-02T16:01:25.000Z + tribe_data_synced_at: 2021-04-02T16:01:25.000Z tribe_snapshots_created_at: 2021-04-02T16:01:25.000Z - village_data_updated_at: 2021-04-02T16:01:25.000Z - ennoblement_data_updated_at: 2021-04-02T16:01:25.000Z + village_data_synced_at: 2021-04-02T16:01:25.000Z + ennoblement_data_synced_at: 2021-04-02T16:01:25.000Z version_code: en - _id: it70 key: it70 @@ -50,12 +50,12 @@ num_barbarian_villages: 1682 num_bonus_villages: 256 created_at: 2022-03-19T12:00:04.000Z - player_data_updated_at: 2022-03-19T12:00:04.000Z + player_data_synced_at: 2022-03-19T12:00:04.000Z player_snapshots_created_at: 2022-03-19T12:00:04.000Z - tribe_data_updated_at: 2022-03-19T12:00:04.000Z + tribe_data_synced_at: 2022-03-19T12:00:04.000Z tribe_snapshots_created_at: 2022-03-19T12:00:04.000Z - village_data_updated_at: 2022-03-19T12:00:04.000Z - ennoblement_data_updated_at: 2022-03-19T12:00:04.000Z + village_data_synced_at: 2022-03-19T12:00:04.000Z + ennoblement_data_synced_at: 2022-03-19T12:00:04.000Z version_code: it - _id: pl169 key: pl169 @@ -69,12 +69,12 @@ num_barbarian_villages: 1574 num_bonus_villages: 2048 created_at: 2022-03-19T12:01:39.000Z - player_data_updated_at: 2022-03-19T12:01:39.000Z + player_data_synced_at: 2022-03-19T12:01:39.000Z player_snapshots_created_at: 2022-03-19T12:01:39.000Z - tribe_data_updated_at: 2022-03-19T12:01:39.000Z + tribe_data_synced_at: 2022-03-19T12:01:39.000Z tribe_snapshots_created_at: 2022-03-19T12:01:39.000Z - village_data_updated_at: 2022-03-19T12:01:39.000Z - ennoblement_data_updated_at: 2022-03-19T12:01:39.000Z + village_data_synced_at: 2022-03-19T12:01:39.000Z + ennoblement_data_synced_at: 2022-03-19T12:01:39.000Z version_code: pl - model: Tribe rows: diff --git a/internal/bun/bunmodel/server.go b/internal/bun/bunmodel/server.go index 63491b2..1dde5f1 100644 --- a/internal/bun/bunmodel/server.go +++ b/internal/bun/bunmodel/server.go @@ -11,32 +11,28 @@ import ( var ServerMetaColumns = []string{"key", "url", "open"} type Server struct { - bun.BaseModel `bun:"table:servers,alias:server"` - Key string `bun:"key,nullzero,pk"` - URL string `bun:"url,nullzero"` - Open bool `bun:"open"` - Special bool `bun:"special"` - NumPlayers int `bun:"num_players"` - NumTribes int `bun:"num_tribes"` - NumVillages int `bun:"num_villages"` - NumPlayerVillages int `bun:"num_player_villages"` - NumBarbarianVillages int `bun:"num_barbarian_villages"` - NumBonusVillages int `bun:"num_bonus_villages"` - Config ServerConfig `bun:"config"` - BuildingInfo BuildingInfo `bun:"building_info"` - UnitInfo UnitInfo `bun:"unit_info"` - CreatedAt time.Time `bun:"created_at,nullzero"` - // TODO: rename this column to player_data_synced_at - PlayerDataUpdatedAt time.Time `bun:"player_data_updated_at,nullzero"` - PlayerSnapshotsCreatedAt time.Time `bun:"player_snapshots_created_at,nullzero"` - // TODO: rename this column to tribe_data_synced_at - TribeDataUpdatedAt time.Time `bun:"tribe_data_updated_at,nullzero"` - TribeSnapshotsCreatedAt time.Time `bun:"tribe_snapshots_created_at,nullzero"` - // TODO: rename this column to village_data_synced_at - VillageDataUpdatedAt time.Time `bun:"village_data_updated_at,nullzero"` - // TODO: rename this column to ennoblement_data_synced_at - EnnoblementDataUpdatedAt time.Time `bun:"ennoblement_data_updated_at,nullzero"` - VersionCode string `bun:"version_code,nullzero"` + bun.BaseModel `bun:"table:servers,alias:server"` + Key string `bun:"key,nullzero,pk"` + URL string `bun:"url,nullzero"` + Open bool `bun:"open"` + Special bool `bun:"special"` + NumPlayers int `bun:"num_players"` + NumTribes int `bun:"num_tribes"` + NumVillages int `bun:"num_villages"` + NumPlayerVillages int `bun:"num_player_villages"` + NumBarbarianVillages int `bun:"num_barbarian_villages"` + NumBonusVillages int `bun:"num_bonus_villages"` + Config ServerConfig `bun:"config"` + BuildingInfo BuildingInfo `bun:"building_info"` + UnitInfo UnitInfo `bun:"unit_info"` + CreatedAt time.Time `bun:"created_at,nullzero"` + PlayerDataUpdatedAt time.Time `bun:"player_data_synced_at,nullzero"` + PlayerSnapshotsCreatedAt time.Time `bun:"player_snapshots_created_at,nullzero"` + TribeDataUpdatedAt time.Time `bun:"tribe_data_synced_at,nullzero"` + TribeSnapshotsCreatedAt time.Time `bun:"tribe_snapshots_created_at,nullzero"` + VillageDataUpdatedAt time.Time `bun:"village_data_synced_at,nullzero"` + EnnoblementDataUpdatedAt time.Time `bun:"ennoblement_data_synced_at,nullzero"` + VersionCode string `bun:"version_code,nullzero"` } func (s Server) ToDomain() (domain.Server, error) { diff --git a/internal/bun/migrations/20240504051104_servers_rename_updated_at_columns.go b/internal/bun/migrations/20240504051104_servers_rename_updated_at_columns.go new file mode 100644 index 0000000..1523a22 --- /dev/null +++ b/internal/bun/migrations/20240504051104_servers_rename_updated_at_columns.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "context" + "database/sql" + "fmt" + + "github.com/uptrace/bun" +) + +func init() { + migrations.MustRegister(func(ctx context.Context, db *bun.DB) error { + return db.RunInTx(ctx, &sql.TxOptions{}, func(ctx context.Context, tx bun.Tx) error { + for oldColumn, newColumn := range getColumnsToRename20240504051104() { + _, err := tx.ExecContext(ctx, "ALTER TABLE servers RENAME COLUMN ? TO ?", bun.Safe(oldColumn), bun.Safe(newColumn)) + if err != nil { + return fmt.Errorf("%s: %w", oldColumn, err) + } + } + + return nil + }) + }, func(ctx context.Context, db *bun.DB) error { + return db.RunInTx(ctx, &sql.TxOptions{}, func(ctx context.Context, tx bun.Tx) error { + for oldColumn, newColumn := range getColumnsToRename20240504051104() { + _, err := tx.ExecContext(ctx, "ALTER TABLE servers RENAME COLUMN ? TO ?", bun.Safe(newColumn), bun.Safe(oldColumn)) + if err != nil { + return fmt.Errorf("%s: %w", newColumn, err) + } + } + + return nil + }) + }) +} + +func getColumnsToRename20240504051104() map[string]string { + return map[string]string{ + "player_data_updated_at": "player_data_synced_at", + "tribe_data_updated_at": "tribe_data_synced_at", + "village_data_updated_at": "village_data_synced_at", + "ennoblement_data_updated_at": "ennoblement_data_synced_at", + } +} diff --git a/internal/port/testdata/api/fixture.yml b/internal/port/testdata/api/fixture.yml index 256d950..0722943 100644 --- a/internal/port/testdata/api/fixture.yml +++ b/internal/port/testdata/api/fixture.yml @@ -12,12 +12,12 @@ num_barbarian_villages: 44 num_bonus_villages: 0 created_at: 2022-01-19T12:00:54.000Z - player_data_updated_at: 2022-01-19T12:00:54.000Z + player_data_synced_at: 2022-01-19T12:00:54.000Z player_snapshots_created_at: 2022-01-19T12:00:54.000Z - tribe_data_updated_at: 2022-01-19T12:00:54.000Z + tribe_data_synced_at: 2022-01-19T12:00:54.000Z tribe_snapshots_created_at: 2022-01-19T12:00:54.000Z - village_data_updated_at: 2022-01-19T12:00:54.000Z - ennoblement_data_updated_at: 2022-01-19T12:00:54.000Z + village_data_synced_at: 2022-01-19T12:00:54.000Z + ennoblement_data_synced_at: 2022-01-19T12:00:54.000Z version_code: de - _id: de188 key: de188 @@ -31,12 +31,12 @@ num_barbarian_villages: 1180 num_bonus_villages: 512 created_at: 2022-03-19T12:00:54.000Z - player_data_updated_at: 2022-03-19T12:00:54.000Z + player_data_synced_at: 2022-03-19T12:00:54.000Z player_snapshots_created_at: 2022-03-19T12:00:54.000Z - tribe_data_updated_at: 2022-03-19T12:00:54.000Z + tribe_data_synced_at: 2022-03-19T12:00:54.000Z tribe_snapshots_created_at: 2022-03-19T12:00:54.000Z - village_data_updated_at: 2022-03-19T12:00:54.000Z - ennoblement_data_updated_at: 2022-03-19T12:00:54.000Z + village_data_synced_at: 2022-03-19T12:00:54.000Z + ennoblement_data_synced_at: 2022-03-19T12:00:54.000Z version_code: de - _id: en113 key: en113 @@ -50,12 +50,12 @@ num_barbarian_villages: 700 num_bonus_villages: 1024 created_at: 2021-04-02T16:01:25.000Z - player_data_updated_at: 2021-04-02T16:01:25.000Z + player_data_synced_at: 2021-04-02T16:01:25.000Z player_snapshots_created_at: 2021-04-02T16:01:25.000Z - tribe_data_updated_at: 2021-04-02T16:01:25.000Z + tribe_data_synced_at: 2021-04-02T16:01:25.000Z tribe_snapshots_created_at: 2021-04-02T16:01:25.000Z - village_data_updated_at: 2021-04-02T16:01:25.000Z - ennoblement_data_updated_at: 2021-04-02T16:01:25.000Z + village_data_synced_at: 2021-04-02T16:01:25.000Z + ennoblement_data_synced_at: 2021-04-02T16:01:25.000Z version_code: en - _id: it70 key: it70 @@ -69,12 +69,12 @@ num_barbarian_villages: 1682 num_bonus_villages: 256 created_at: 2022-03-19T12:00:04.000Z - player_data_updated_at: 2022-03-19T12:00:04.000Z + player_data_synced_at: 2022-03-19T12:00:04.000Z player_snapshots_created_at: 2022-03-19T12:00:04.000Z - tribe_data_updated_at: 2022-03-19T12:00:04.000Z + tribe_data_synced_at: 2022-03-19T12:00:04.000Z tribe_snapshots_created_at: 2022-03-19T12:00:04.000Z - village_data_updated_at: 2022-03-19T12:00:04.000Z - ennoblement_data_updated_at: 2022-03-19T12:00:04.000Z + village_data_synced_at: 2022-03-19T12:00:04.000Z + ennoblement_data_synced_at: 2022-03-19T12:00:04.000Z version_code: it - _id: pl169 key: pl169 @@ -88,12 +88,12 @@ num_barbarian_villages: 1574 num_bonus_villages: 2048 created_at: 2022-03-19T12:01:39.000Z - player_data_updated_at: 2022-03-19T12:01:39.000Z + player_data_synced_at: 2022-03-19T12:01:39.000Z player_snapshots_created_at: 2022-03-19T12:01:39.000Z - tribe_data_updated_at: 2022-03-19T12:01:39.000Z + tribe_data_synced_at: 2022-03-19T12:01:39.000Z tribe_snapshots_created_at: 2022-03-19T12:01:39.000Z - village_data_updated_at: 2022-03-19T12:01:39.000Z - ennoblement_data_updated_at: 2022-03-19T12:01:39.000Z + village_data_synced_at: 2022-03-19T12:01:39.000Z + ennoblement_data_synced_at: 2022-03-19T12:01:39.000Z version_code: pl - model: Tribe rows: diff --git a/internal/port/testdata/cleanup/fixture.yml b/internal/port/testdata/cleanup/fixture.yml index 8922b3a..3048e3c 100644 --- a/internal/port/testdata/cleanup/fixture.yml +++ b/internal/port/testdata/cleanup/fixture.yml @@ -36,12 +36,12 @@ num_bonus_villages: 13379 created_at: version_code: pl - player_data_updated_at: "{{ now }}" + player_data_synced_at: "{{ now }}" player_snapshots_created_at: "{{ now }}" - tribe_data_updated_at: "{{ now }}" + tribe_data_synced_at: "{{ now }}" tribe_snapshots_created_at: "{{ now }}" - village_data_updated_at: "{{ now }}" - ennoblement_data_updated_at: "{{ now }}" + village_data_synced_at: "{{ now }}" + ennoblement_data_synced_at: "{{ now }}" - model: Ennoblement rows: # pl181 diff --git a/internal/port/testdata/snapshotcreation/fixture.yml b/internal/port/testdata/snapshotcreation/fixture.yml index 32c413a..5db1616 100644 --- a/internal/port/testdata/snapshotcreation/fixture.yml +++ b/internal/port/testdata/snapshotcreation/fixture.yml @@ -12,12 +12,12 @@ num_barbarian_villages: 1574 num_bonus_villages: 2048 created_at: 2022-03-19T12:01:39.000Z - player_data_updated_at: 2022-03-19T12:01:39.000Z + player_data_synced_at: 2022-03-19T12:01:39.000Z player_snapshots_created_at: 2022-03-19T12:01:39.000Z - tribe_data_updated_at: 2022-03-19T12:01:39.000Z + tribe_data_synced_at: 2022-03-19T12:01:39.000Z tribe_snapshots_created_at: 2022-03-19T12:01:39.000Z - village_data_updated_at: 2022-03-19T12:01:39.000Z - ennoblement_data_updated_at: 2022-03-19T12:01:39.000Z + village_data_synced_at: 2022-03-19T12:01:39.000Z + ennoblement_data_synced_at: 2022-03-19T12:01:39.000Z version_code: pl - model: Tribe rows: