Skip to content

SQLBoilerで論理削除の復旧

   

SQLBoilerはDeleteするときに論理削除が使える。

詳細は【Go】sqlboilerで論理削除を実装する | ISSUEが詳しい。

論理削除のときはdeleted_atカラムがセットされる。

で、そのときupdated_atは更新されない。

論理削除した行を元に戻したいとき、deleted_atnull.Time{}をセットしてupdateすれば元通りになるかというと、updated_atが更新されてしまって完全に元通りとは言えない状態。

どうするか。 volatiletech/sqlboiler: Generate a Go ORM tailored to your database schema.にあるように、contextでboil.SkipTimestampsを使う。

つまりmodel.Update(boil.SkipTimestamps(context.Background()), db , boil.Infer())こんな感じ。