1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package migrate
- import (
- "github.com/0xJacky/Nginx-UI/model"
- "github.com/go-gormigrate/gormigrate/v2"
- "gorm.io/gorm"
- )
- var SiteCategoryToEnvGroup = &gormigrate.Migration{
- ID: "20250405000001",
- Migrate: func(tx *gorm.DB) error {
- // Step 1: Create new env_groups table
- if err := tx.Migrator().AutoMigrate(&model.EnvGroup{}); err != nil {
- return err
- }
- // Step 2: Copy data from site_categories to env_groups
- if tx.Migrator().HasTable("site_categories") {
- var siteCategories []map[string]interface{}
- if err := tx.Table("site_categories").Find(&siteCategories).Error; err != nil {
- return err
- }
- for _, sc := range siteCategories {
- if err := tx.Table("env_groups").Create(sc).Error; err != nil {
- return err
- }
- }
- // Step 3: Update sites table to use env_group_id instead of site_category_id
- if tx.Migrator().HasColumn("sites", "site_category_id") {
- // First add the new column if it doesn't exist
- if !tx.Migrator().HasColumn("sites", "env_group_id") {
- if err := tx.Exec("ALTER TABLE sites ADD COLUMN env_group_id bigint").Error; err != nil {
- return err
- }
- }
- // Copy the values from site_category_id to env_group_id
- if err := tx.Exec("UPDATE sites SET env_group_id = site_category_id").Error; err != nil {
- return err
- }
- }
- }
- return nil
- },
- }
|