From 8a21be430635ee8562d5e6b8b54aaf818b531862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferdinand=20M=C3=BCtsch?= Date: Sun, 16 Oct 2022 18:59:00 +0200 Subject: [PATCH] fix: ignore rank column in migrations --- migrations/20221016_drop_rank_column.go | 35 +++++++++++++++++++++++++ models/leaderboard.go | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 migrations/20221016_drop_rank_column.go diff --git a/migrations/20221016_drop_rank_column.go b/migrations/20221016_drop_rank_column.go new file mode 100644 index 0000000..89a78c7 --- /dev/null +++ b/migrations/20221016_drop_rank_column.go @@ -0,0 +1,35 @@ +package migrations + +import ( + "github.com/emvi/logbuch" + "github.com/muety/wakapi/config" + "github.com/muety/wakapi/models" + "gorm.io/gorm" +) + +func init() { + const name = "20221016-drop_rank_column" + f := migrationFunc{ + name: name, + f: func(db *gorm.DB, cfg *config.Config) error { + if hasRun(name, db) { + return nil + } + + migrator := db.Migrator() + + if migrator.HasTable(&models.LeaderboardItem{}) && migrator.HasColumn(&models.LeaderboardItem{}, "rank") { + logbuch.Info("running migration '%s'", name) + + if err := migrator.DropColumn(&models.LeaderboardItem{}, "rank"); err != nil { + logbuch.Warn("failed to drop 'rank' column (%v)", err) + } + } + + setHasRun(name, db) + return nil + }, + } + + registerPostMigration(f) +} diff --git a/models/leaderboard.go b/models/leaderboard.go index 17f1771..b09b907 100644 --- a/models/leaderboard.go +++ b/models/leaderboard.go @@ -11,7 +11,7 @@ type LeaderboardItem struct { ID uint `json:"-" gorm:"primary_key; size:32"` User *User `json:"-" gorm:"not null; constraint:OnUpdate:CASCADE,OnDelete:CASCADE"` UserID string `json:"user_id" gorm:"not null; index:idx_leaderboard_user"` - Rank uint `json:"rank" gorm:"->"` + Rank uint `json:"rank" gorm:"-:migration"` Interval string `json:"interval" gorm:"not null; size:32; index:idx_leaderboard_combined"` By *uint8 `json:"aggregated_by" gorm:"index:idx_leaderboard_combined"` // pointer because nullable Total time.Duration `json:"total" gorm:"not null" swaggertype:"primitive,integer"`