summaryrefslogtreecommitdiff
path: root/vendor/github.com/uptrace/bun/query_delete.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/uptrace/bun/query_delete.go')
-rw-r--r--vendor/github.com/uptrace/bun/query_delete.go22
1 files changed, 19 insertions, 3 deletions
diff --git a/vendor/github.com/uptrace/bun/query_delete.go b/vendor/github.com/uptrace/bun/query_delete.go
index c0c5039c7..bcdf9c501 100644
--- a/vendor/github.com/uptrace/bun/query_delete.go
+++ b/vendor/github.com/uptrace/bun/query_delete.go
@@ -3,6 +3,7 @@ package bun
import (
"context"
"database/sql"
+ "time"
"github.com/uptrace/bun/dialect/feature"
"github.com/uptrace/bun/internal"
@@ -135,15 +136,18 @@ func (q *DeleteQuery) AppendQuery(fmter schema.Formatter, b []byte) (_ []byte, e
fmter = formatterWithModel(fmter, q)
if q.isSoftDelete() {
- if err := q.tableModel.updateSoftDeleteField(); err != nil {
+ now := time.Now()
+
+ if err := q.tableModel.updateSoftDeleteField(now); err != nil {
return nil, err
}
- upd := UpdateQuery{
+ upd := &UpdateQuery{
whereBaseQuery: q.whereBaseQuery,
returningQuery: q.returningQuery,
}
- upd.Column(q.table.SoftDeleteField.Name)
+ upd.Set(q.softDeleteSet(fmter, now))
+
return upd.AppendQuery(fmter, b)
}
@@ -193,6 +197,18 @@ func (q *DeleteQuery) isSoftDelete() bool {
return q.tableModel != nil && q.table.SoftDeleteField != nil && !q.flags.Has(forceDeleteFlag)
}
+func (q *DeleteQuery) softDeleteSet(fmter schema.Formatter, tm time.Time) string {
+ b := make([]byte, 0, 32)
+ if fmter.HasFeature(feature.UpdateMultiTable) {
+ b = append(b, q.table.SQLAlias...)
+ b = append(b, '.')
+ }
+ b = append(b, q.table.SoftDeleteField.SQLName...)
+ b = append(b, " = "...)
+ b = q.db.Dialect().Append(fmter, b, tm)
+ return internal.String(b)
+}
+
//------------------------------------------------------------------------------
func (q *DeleteQuery) Exec(ctx context.Context, dest ...interface{}) (sql.Result, error) {