mirror of
https://github.com/muety/wakapi.git
synced 2023-08-10 21:12:56 +03:00
59 lines
1.8 KiB
Go
59 lines
1.8 KiB
Go
package migrations
|
||
|
||
import (
|
||
"github.com/emvi/logbuch"
|
||
"github.com/muety/wakapi/config"
|
||
"github.com/muety/wakapi/models"
|
||
"gorm.io/gorm"
|
||
)
|
||
|
||
func init() {
|
||
f := migrationFunc{
|
||
name: "20210206_drop_badges_column_add_sharing_flags",
|
||
f: func(db *gorm.DB, cfg *config.Config) error {
|
||
migrator := db.Migrator()
|
||
|
||
if !migrator.HasColumn(&models.User{}, "badges_enabled") {
|
||
// empty database or already migrated, nothing to migrate
|
||
return nil
|
||
}
|
||
|
||
if err := db.Exec("UPDATE users SET share_data_max_days = 30 WHERE badges_enabled = TRUE").Error; err != nil {
|
||
return err
|
||
}
|
||
if err := db.Exec("UPDATE users SET share_editors = TRUE WHERE badges_enabled = TRUE").Error; err != nil {
|
||
return err
|
||
}
|
||
if err := db.Exec("UPDATE users SET share_languages = TRUE WHERE badges_enabled = TRUE").Error; err != nil {
|
||
return err
|
||
}
|
||
if err := db.Exec("UPDATE users SET share_projects = TRUE WHERE badges_enabled = TRUE").Error; err != nil {
|
||
return err
|
||
}
|
||
if err := db.Exec("UPDATE users SET share_oss = TRUE WHERE badges_enabled = TRUE").Error; err != nil {
|
||
return err
|
||
}
|
||
if err := db.Exec("UPDATE users SET share_machines = TRUE WHERE badges_enabled = TRUE").Error; err != nil {
|
||
return err
|
||
}
|
||
|
||
// do not drop column for sqlite, fixes #128:
|
||
// [ERROR] migration '20210206_drop_badges_column_add_sharing_flags' failed – table users already exists
|
||
// https://stackoverflow.com/a/8442173
|
||
if cfg.Db.Dialect == config.SQLDialectSqlite {
|
||
logbuch.Info("not attempting to drop and regenerate constraints on sqlite")
|
||
return nil
|
||
}
|
||
|
||
if err := migrator.DropColumn(&models.User{}, "badges_enabled"); err != nil {
|
||
return err
|
||
}
|
||
logbuch.Info("dropped column 'badges_enabled' after substituting it by sharing indicators")
|
||
|
||
return nil
|
||
},
|
||
}
|
||
|
||
registerPostMigration(f)
|
||
}
|