From 59770f0cda9007eb91559a15449446749903e957 Mon Sep 17 00:00:00 2001 From: kinggo <> Date: Wed, 8 Dec 2021 13:46:00 +0800 Subject: [PATCH] fix: save not use soft_delete --- callbacks/create.go | 2 +- callbacks/delete.go | 17 ++++++++++------- callbacks/query.go | 2 +- callbacks/update.go | 2 +- soft_delete.go | 4 ++-- 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/callbacks/create.go b/callbacks/create.go index 9dc5b8b1..29113128 100644 --- a/callbacks/create.go +++ b/callbacks/create.go @@ -57,7 +57,7 @@ func Create(config *Config) func(db *gorm.DB) { } } - if db.Statement.SQL.String() == "" { + if db.Statement.SQL.Len() == 0 { db.Statement.SQL.Grow(180) db.Statement.AddClauseIfNotExists(clause.Insert{}) db.Statement.AddClause(ConvertToCreateValues(db.Statement)) diff --git a/callbacks/delete.go b/callbacks/delete.go index b50a782c..7f1e09ce 100644 --- a/callbacks/delete.go +++ b/callbacks/delete.go @@ -118,13 +118,7 @@ func Delete(config *Config) func(db *gorm.DB) { return } - if db.Statement.Schema != nil { - for _, c := range db.Statement.Schema.DeleteClauses { - db.Statement.AddClause(c) - } - } - - if db.Statement.SQL.String() == "" { + if db.Statement.SQL.Len() == 0 { db.Statement.SQL.Grow(100) db.Statement.AddClauseIfNotExists(clause.Delete{}) @@ -147,6 +141,15 @@ func Delete(config *Config) func(db *gorm.DB) { } db.Statement.AddClauseIfNotExists(clause.From{}) + } + + if db.Statement.Schema != nil { + for _, c := range db.Statement.Schema.DeleteClauses { + db.Statement.AddClause(c) + } + } + + if db.Statement.SQL.Len() == 0 { db.Statement.Build(db.Statement.BuildClauses...) } diff --git a/callbacks/query.go b/callbacks/query.go index 2f98a4b6..efb08609 100644 --- a/callbacks/query.go +++ b/callbacks/query.go @@ -33,7 +33,7 @@ func BuildQuerySQL(db *gorm.DB) { } } - if db.Statement.SQL.String() == "" { + if db.Statement.SQL.Len() == 0 { db.Statement.SQL.Grow(100) clauseSelect := clause.Select{Distinct: db.Statement.Distinct} diff --git a/callbacks/update.go b/callbacks/update.go index aed47003..b3eaaf11 100644 --- a/callbacks/update.go +++ b/callbacks/update.go @@ -59,7 +59,7 @@ func Update(config *Config) func(db *gorm.DB) { return } - if db.Statement.SQL.String() == "" { + if db.Statement.SQL.Len() == 0 { db.Statement.SQL.Grow(180) db.Statement.AddClauseIfNotExists(clause.Update{}) if set := ConvertToAssignments(db.Statement); len(set) != 0 { diff --git a/soft_delete.go b/soft_delete.go index a8ad4499..4e236fc4 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() == "" && !stmt.Statement.Unscoped { + if stmt.SQL.Len() == 0 && !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() == "" && !stmt.Statement.Unscoped { + if stmt.SQL.Len() == 0 && !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)