123456789101112131415161718192021222324252627282930313233343536373839 |
- package migrations
- import (
- "fmt"
- "gorm.io/gorm"
- )
- func addUserPublicEmail(db *gorm.DB) error {
- type User struct {
- PublicEmail string // 不能使用NOT NULL
- }
- type UserNotNull struct {
- PublicEmail string `xorm:"NOT NULL" gorm:"not null"`
- }
- if db.Migrator().HasColumn(&User{}, "PublicEmail") {
- return errMigrationSkipped
- }
- return db.Transaction(func(tx *gorm.DB) error {
- err := tx.Migrator().AddColumn(&User{}, "PublicEmail")
- if err != nil {
- return fmt.Errorf("add column user.public_email error: %s", err.Error())
- }
- err = tx.Exec("UPDATE `user` SET `public_email` = `email` WHERE `public_email` = '' AND `type` = 0").Error
- if err != nil {
- return fmt.Errorf("update public_email error: %s", err.Error())
- }
- err = tx.Debug().Migrator().AlterColumn(&UserNotNull{}, "PublicEmail")
- if err != nil {
- return fmt.Errorf("alter column user.public_email error: %s", err.Error())
- }
- return nil
- })
- }
|