(ctx context.Context, val waveobj.WaveObj)
| 299 | } |
| 300 | |
| 301 | func DBUpdate(ctx context.Context, val waveobj.WaveObj) error { |
| 302 | oid := waveobj.GetOID(val) |
| 303 | if oid == "" { |
| 304 | return fmt.Errorf("cannot update %T value with empty id", val) |
| 305 | } |
| 306 | jsonData, err := waveobj.ToJson(val) |
| 307 | if err != nil { |
| 308 | return err |
| 309 | } |
| 310 | return WithTx(ctx, func(tx *TxWrap) error { |
| 311 | table := waveObjTableName(val) |
| 312 | query := fmt.Sprintf("UPDATE %s SET data = ?, version = version+1 WHERE oid = ? RETURNING version", table) |
| 313 | newVersion := tx.GetInt(query, jsonData, oid) |
| 314 | waveobj.SetVersion(val, newVersion) |
| 315 | waveobj.ContextAddUpdate(ctx, waveobj.WaveObjUpdate{UpdateType: waveobj.UpdateType_Update, OType: val.GetOType(), OID: oid, Obj: val}) |
| 316 | return nil |
| 317 | }) |
| 318 | } |
| 319 | |
| 320 | func DBUpdateFn[T waveobj.WaveObj](ctx context.Context, id string, updateFn func(T)) error { |
| 321 | return WithTx(ctx, func(tx *TxWrap) error { |
no test coverage detected