nginx-ui/internal/migrate/3.rename_auths_to_users.go

44 lines
1.2 KiB
Go

package migrate
import (
"github.com/go-gormigrate/gormigrate/v2"
"gorm.io/gorm"
)
var RenameAuthsToUsers = &gormigrate.Migration{
ID: "20250405000002",
Migrate: func(tx *gorm.DB) error {
// Check if both tables exist
hasAuthsTable := tx.Migrator().HasTable("auths")
hasUsersTable := tx.Migrator().HasTable("users")
if hasAuthsTable {
if hasUsersTable {
// Both tables exist - we need to check if users table is empty
var count int64
if err := tx.Table("users").Count(&count).Error; err != nil {
return err
}
if count > 0 {
// Users table has data - drop auths table as users table is now the source of truth
return tx.Migrator().DropTable("auths")
} else {
// Users table is empty - drop it and rename auths to users
return tx.Transaction(func(ttx *gorm.DB) error {
if err := ttx.Migrator().DropTable("users"); err != nil {
return err
}
return ttx.Migrator().RenameTable("auths", "users")
})
}
} else {
// Only auths table exists - simply rename it
return tx.Migrator().RenameTable("auths", "users")
}
}
// If auths table doesn't exist, nothing to do
return nil
},
}