diff options
Diffstat (limited to 'vendor/github.com/uptrace/bun/query_update.go')
-rw-r--r-- | vendor/github.com/uptrace/bun/query_update.go | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/vendor/github.com/uptrace/bun/query_update.go b/vendor/github.com/uptrace/bun/query_update.go index a5d9a17f2..df583db25 100644 --- a/vendor/github.com/uptrace/bun/query_update.go +++ b/vendor/github.com/uptrace/bun/query_update.go @@ -100,6 +100,11 @@ func (q *UpdateQuery) Value(column string, expr string, args ...interface{}) *Up return q } +func (q *UpdateQuery) OmitZero() *UpdateQuery { + q.omitZero = true + return q +} + //------------------------------------------------------------------------------ func (q *UpdateQuery) WherePK() *UpdateQuery { @@ -165,9 +170,6 @@ func (q *UpdateQuery) Operation() string { } func (q *UpdateQuery) AppendQuery(fmter schema.Formatter, b []byte) (_ []byte, err error) { - if q.err != nil { - return nil, q.err - } fmter = formatterWithModel(fmter, q) b, err = q.appendWith(fmter, b) @@ -254,7 +256,7 @@ func (q *UpdateQuery) appendSetStruct( isTemplate := fmter.IsNop() pos := len(b) for _, f := range fields { - if q.omitZero && f.NullZero && f.HasZeroValue(model.strct) { + if q.omitZero && f.HasZeroValue(model.strct) { continue } @@ -381,12 +383,20 @@ func (db *UpdateQuery) updateSliceWhere(model *sliceTableModel) string { //------------------------------------------------------------------------------ func (q *UpdateQuery) Exec(ctx context.Context, dest ...interface{}) (sql.Result, error) { + if q.err != nil { + return nil, q.err + } + if q.table != nil { if err := q.beforeUpdateHook(ctx); err != nil { return nil, err } } + if err := q.beforeAppendModel(ctx, q); err != nil { + return nil, err + } + queryBytes, err := q.AppendQuery(q.db.fmter, q.db.makeQueryBytes()) if err != nil { return nil, err |