mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-11 10:25:52 +02:00
44 lines
1.2 KiB
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
|
|
},
|
|
}
|