fix: save not use soft_delete

This commit is contained in:
kinggo 2021-12-08 13:31:20 +08:00
parent 357c78c673
commit d98390243a
3 changed files with 11 additions and 8 deletions

View File

@ -118,7 +118,7 @@ func Delete(config *Config) func(db *gorm.DB) {
return return
} }
if db.Statement.Schema != nil && !db.Statement.Unscoped { if db.Statement.Schema != nil {
for _, c := range db.Statement.Schema.DeleteClauses { for _, c := range db.Statement.Schema.DeleteClauses {
db.Statement.AddClause(c) db.Statement.AddClause(c)
} }

View File

@ -68,12 +68,15 @@ func Update(config *Config) func(db *gorm.DB) {
return return
} }
if db.Statement.Schema != nil && !db.Statement.Unscoped { }
for _, c := range db.Statement.Schema.UpdateClauses {
db.Statement.AddClause(c)
}
}
if db.Statement.Schema != nil {
for _, c := range db.Statement.Schema.UpdateClauses {
db.Statement.AddClause(c)
}
}
if db.Statement.SQL.Len() == 0 {
db.Statement.Build(db.Statement.BuildClauses...) db.Statement.Build(db.Statement.BuildClauses...)
} }

View File

@ -103,7 +103,7 @@ func (sd SoftDeleteUpdateClause) MergeClause(*clause.Clause) {
} }
func (sd SoftDeleteUpdateClause) ModifyStatement(stmt *Statement) { func (sd SoftDeleteUpdateClause) ModifyStatement(stmt *Statement) {
if stmt.SQL.String() == "" { if stmt.SQL.String() == "" && !stmt.Statement.Unscoped {
if _, ok := stmt.Clauses["WHERE"]; stmt.DB.AllowGlobalUpdate || ok { if _, ok := stmt.Clauses["WHERE"]; stmt.DB.AllowGlobalUpdate || ok {
SoftDeleteQueryClause(sd).ModifyStatement(stmt) SoftDeleteQueryClause(sd).ModifyStatement(stmt)
} }
@ -129,7 +129,7 @@ func (sd SoftDeleteDeleteClause) MergeClause(*clause.Clause) {
} }
func (sd SoftDeleteDeleteClause) ModifyStatement(stmt *Statement) { func (sd SoftDeleteDeleteClause) ModifyStatement(stmt *Statement) {
if stmt.SQL.String() == "" { if stmt.SQL.String() == "" && !stmt.Statement.Unscoped {
curTime := stmt.DB.NowFunc() curTime := stmt.DB.NowFunc()
stmt.AddClause(clause.Set{{Column: clause.Column{Name: sd.Field.DBName}, Value: curTime}}) stmt.AddClause(clause.Set{{Column: clause.Column{Name: sd.Field.DBName}, Value: curTime}})
stmt.SetColumn(sd.Field.DBName, curTime, true) stmt.SetColumn(sd.Field.DBName, curTime, true)