mirror of
https://github.com/moul/sshportal.git
synced 2025-09-13 08:04:41 +08:00
Switch to hard delete
This commit is contained in:
parent
bd158819d3
commit
b093f61fb5
1 changed files with 31 additions and 6 deletions
37
dbinit.go
37
dbinit.go
|
@ -11,6 +11,8 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func dbInit(db *gorm.DB) error {
|
func dbInit(db *gorm.DB) error {
|
||||||
|
db.Callback().Delete().Replace("gorm:delete", hardDeleteCallback)
|
||||||
|
|
||||||
m := gormigrate.New(db, gormigrate.DefaultOptions, []*gormigrate.Migration{
|
m := gormigrate.New(db, gormigrate.DefaultOptions, []*gormigrate.Migration{
|
||||||
{
|
{
|
||||||
ID: "1",
|
ID: "1",
|
||||||
|
@ -152,7 +154,7 @@ func dbInit(db *gorm.DB) error {
|
||||||
ID: "9",
|
ID: "9",
|
||||||
Migrate: func(tx *gorm.DB) error {
|
Migrate: func(tx *gorm.DB) error {
|
||||||
db.Model(&Setting{}).RemoveIndex("uix_settings_name")
|
db.Model(&Setting{}).RemoveIndex("uix_settings_name")
|
||||||
return db.Model(&Setting{}).Where(`"deleted_at" IS NULL`).AddUniqueIndex("uix_settings_name", "name").Error
|
return db.Model(&Setting{}).AddUniqueIndex("uix_settings_name", "name").Error
|
||||||
},
|
},
|
||||||
Rollback: func(tx *gorm.DB) error {
|
Rollback: func(tx *gorm.DB) error {
|
||||||
return db.Model(&Setting{}).RemoveIndex("uix_settings_name").Error
|
return db.Model(&Setting{}).RemoveIndex("uix_settings_name").Error
|
||||||
|
@ -161,7 +163,7 @@ func dbInit(db *gorm.DB) error {
|
||||||
ID: "10",
|
ID: "10",
|
||||||
Migrate: func(tx *gorm.DB) error {
|
Migrate: func(tx *gorm.DB) error {
|
||||||
db.Model(&SSHKey{}).RemoveIndex("uix_keys_name")
|
db.Model(&SSHKey{}).RemoveIndex("uix_keys_name")
|
||||||
return db.Model(&SSHKey{}).Where(`"deleted_at" IS NULL`).AddUniqueIndex("uix_keys_name", "name").Error
|
return db.Model(&SSHKey{}).AddUniqueIndex("uix_keys_name", "name").Error
|
||||||
},
|
},
|
||||||
Rollback: func(tx *gorm.DB) error {
|
Rollback: func(tx *gorm.DB) error {
|
||||||
return db.Model(&SSHKey{}).RemoveIndex("uix_keys_name").Error
|
return db.Model(&SSHKey{}).RemoveIndex("uix_keys_name").Error
|
||||||
|
@ -170,7 +172,7 @@ func dbInit(db *gorm.DB) error {
|
||||||
ID: "11",
|
ID: "11",
|
||||||
Migrate: func(tx *gorm.DB) error {
|
Migrate: func(tx *gorm.DB) error {
|
||||||
db.Model(&Host{}).RemoveIndex("uix_hosts_name")
|
db.Model(&Host{}).RemoveIndex("uix_hosts_name")
|
||||||
return db.Model(&Host{}).Where(`"deleted_at" IS NULL`).AddUniqueIndex("uix_hosts_name", "name").Error
|
return db.Model(&Host{}).AddUniqueIndex("uix_hosts_name", "name").Error
|
||||||
},
|
},
|
||||||
Rollback: func(tx *gorm.DB) error {
|
Rollback: func(tx *gorm.DB) error {
|
||||||
return db.Model(&Host{}).RemoveIndex("uix_hosts_name").Error
|
return db.Model(&Host{}).RemoveIndex("uix_hosts_name").Error
|
||||||
|
@ -179,7 +181,7 @@ func dbInit(db *gorm.DB) error {
|
||||||
ID: "12",
|
ID: "12",
|
||||||
Migrate: func(tx *gorm.DB) error {
|
Migrate: func(tx *gorm.DB) error {
|
||||||
db.Model(&User{}).RemoveIndex("uix_users_name")
|
db.Model(&User{}).RemoveIndex("uix_users_name")
|
||||||
return db.Model(&User{}).Where(`"deleted_at" IS NULL`).AddUniqueIndex("uix_users_name", "name").Error
|
return db.Model(&User{}).AddUniqueIndex("uix_users_name", "name").Error
|
||||||
},
|
},
|
||||||
Rollback: func(tx *gorm.DB) error {
|
Rollback: func(tx *gorm.DB) error {
|
||||||
return db.Model(&User{}).RemoveIndex("uix_users_name").Error
|
return db.Model(&User{}).RemoveIndex("uix_users_name").Error
|
||||||
|
@ -188,7 +190,7 @@ func dbInit(db *gorm.DB) error {
|
||||||
ID: "13",
|
ID: "13",
|
||||||
Migrate: func(tx *gorm.DB) error {
|
Migrate: func(tx *gorm.DB) error {
|
||||||
db.Model(&UserGroup{}).RemoveIndex("uix_usergroups_name")
|
db.Model(&UserGroup{}).RemoveIndex("uix_usergroups_name")
|
||||||
return db.Model(&UserGroup{}).Where(`"deleted_at" IS NULL`).AddUniqueIndex("uix_usergroups_name", "name").Error
|
return db.Model(&UserGroup{}).AddUniqueIndex("uix_usergroups_name", "name").Error
|
||||||
},
|
},
|
||||||
Rollback: func(tx *gorm.DB) error {
|
Rollback: func(tx *gorm.DB) error {
|
||||||
return db.Model(&UserGroup{}).RemoveIndex("uix_usergroups_name").Error
|
return db.Model(&UserGroup{}).RemoveIndex("uix_usergroups_name").Error
|
||||||
|
@ -197,7 +199,7 @@ func dbInit(db *gorm.DB) error {
|
||||||
ID: "14",
|
ID: "14",
|
||||||
Migrate: func(tx *gorm.DB) error {
|
Migrate: func(tx *gorm.DB) error {
|
||||||
db.Model(&HostGroup{}).RemoveIndex("uix_hostgroups_name")
|
db.Model(&HostGroup{}).RemoveIndex("uix_hostgroups_name")
|
||||||
return db.Model(&HostGroup{}).Where(`"deleted_at" IS NULL`).AddUniqueIndex("uix_hostgroups_name", "name").Error
|
return db.Model(&HostGroup{}).AddUniqueIndex("uix_hostgroups_name", "name").Error
|
||||||
},
|
},
|
||||||
Rollback: func(tx *gorm.DB) error {
|
Rollback: func(tx *gorm.DB) error {
|
||||||
return db.Model(&HostGroup{}).RemoveIndex("uix_hostgroups_name").Error
|
return db.Model(&HostGroup{}).RemoveIndex("uix_hostgroups_name").Error
|
||||||
|
@ -456,3 +458,26 @@ func dbInit(db *gorm.DB) error {
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func hardDeleteCallback(scope *gorm.Scope) {
|
||||||
|
if !scope.HasError() {
|
||||||
|
var extraOption string
|
||||||
|
if str, ok := scope.Get("gorm:delete_option"); ok {
|
||||||
|
extraOption = fmt.Sprint(str)
|
||||||
|
}
|
||||||
|
|
||||||
|
scope.Raw(fmt.Sprintf(
|
||||||
|
"DELETE FROM %v%v%v",
|
||||||
|
scope.QuotedTableName(),
|
||||||
|
addExtraSpaceIfExist(scope.CombinedConditionSql()),
|
||||||
|
addExtraSpaceIfExist(extraOption),
|
||||||
|
)).Exec()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func addExtraSpaceIfExist(str string) string {
|
||||||
|
if str != "" {
|
||||||
|
return " " + str
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue