From d98390243a903ac98da717718fca9c1a45924174 Mon Sep 17 00:00:00 2001 From: kinggo <> Date: Wed, 8 Dec 2021 13:31:20 +0800 Subject: [PATCH] fix: save not use soft_delete --- callbacks/delete.go | 2 +- callbacks/update.go | 13 ++++++++----- soft_delete.go | 4 ++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/callbacks/delete.go b/callbacks/delete.go index b05a9d08..b50a782c 100644 --- a/callbacks/delete.go +++ b/callbacks/delete.go @@ -118,7 +118,7 @@ func Delete(config *Config) func(db *gorm.DB) { return } - if db.Statement.Schema != nil && !db.Statement.Unscoped { + if db.Statement.Schema != nil { for _, c := range db.Statement.Schema.DeleteClauses { db.Statement.AddClause(c) } diff --git a/callbacks/update.go b/callbacks/update.go index 8e8174e1..aed47003 100644 --- a/callbacks/update.go +++ b/callbacks/update.go @@ -68,12 +68,15 @@ func Update(config *Config) func(db *gorm.DB) { 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...) } diff --git a/soft_delete.go b/soft_delete.go index 11c4fafc..a8ad4499 100644 --- a/soft_delete.go +++ b/soft_delete.go @@ -103,7 +103,7 @@ func (sd SoftDeleteUpdateClause) MergeClause(*clause.Clause) { } 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 { SoftDeleteQueryClause(sd).ModifyStatement(stmt) } @@ -129,7 +129,7 @@ func (sd SoftDeleteDeleteClause) MergeClause(*clause.Clause) { } func (sd SoftDeleteDeleteClause) ModifyStatement(stmt *Statement) { - if stmt.SQL.String() == "" { + if stmt.SQL.String() == "" && !stmt.Statement.Unscoped { curTime := stmt.DB.NowFunc() stmt.AddClause(clause.Set{{Column: clause.Column{Name: sd.Field.DBName}, Value: curTime}}) stmt.SetColumn(sd.Field.DBName, curTime, true)