MCPcopy
hub / github.com/go-gorm/gorm / ModifyStatement

Method ModifyStatement

soft_delete.go:142–170  ·  view source on GitHub ↗
(stmt *Statement)

Source from the content-addressed store, hash-verified

140}
141
142func (sd SoftDeleteDeleteClause) ModifyStatement(stmt *Statement) {
143 if stmt.SQL.Len() == 0 && !stmt.Statement.Unscoped {
144 curTime := stmt.DB.NowFunc()
145 stmt.AddClause(clause.Set{{Column: clause.Column{Name: sd.Field.DBName}, Value: curTime}})
146 stmt.SetColumn(sd.Field.DBName, curTime, true)
147
148 if stmt.Schema != nil {
149 _, queryValues := schema.GetIdentityFieldValuesMap(stmt.Context, stmt.ReflectValue, stmt.Schema.PrimaryFields)
150 column, values := schema.ToQueryValues(stmt.Table, stmt.Schema.PrimaryFieldDBNames, queryValues)
151
152 if len(values) > 0 {
153 stmt.AddClause(clause.Where{Exprs: []clause.Expression{clause.IN{Column: column, Values: values}}})
154 }
155
156 if stmt.ReflectValue.CanAddr() && stmt.Dest != stmt.Model && stmt.Model != nil {
157 _, queryValues = schema.GetIdentityFieldValuesMap(stmt.Context, reflect.ValueOf(stmt.Model), stmt.Schema.PrimaryFields)
158 column, values = schema.ToQueryValues(stmt.Table, stmt.Schema.PrimaryFieldDBNames, queryValues)
159
160 if len(values) > 0 {
161 stmt.AddClause(clause.Where{Exprs: []clause.Expression{clause.IN{Column: column, Values: values}}})
162 }
163 }
164 }
165
166 SoftDeleteQueryClause(sd).ModifyStatement(stmt)
167 stmt.AddClauseIfNotExists(clause.Update{})
168 stmt.Build(stmt.DB.Callback().Update().Clauses...)
169 }
170}

Callers

nothing calls this directly

Calls 11

ToQueryValuesFunction · 0.92
SoftDeleteQueryClauseStruct · 0.85
LenMethod · 0.80
AddClauseMethod · 0.80
SetColumnMethod · 0.80
AddClauseIfNotExistsMethod · 0.80
CallbackMethod · 0.80
ModifyStatementMethod · 0.65
BuildMethod · 0.65
UpdateMethod · 0.65

Tested by

no test coverage detected