diff options
Diffstat (limited to 'model/object.go')
-rw-r--r-- | model/object.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/model/object.go b/model/object.go index 63ef419..bcbba3e 100644 --- a/model/object.go +++ b/model/object.go @@ -10,3 +10,18 @@ type Object interface { Update(tx *sql.Tx) error Delete(tx *sql.Tx) error } + +func SafeCrud(crud func(tx *sql.Tx) error) error { + tx, err := NewTx() + if err != nil { + return err + } + + err = crud(tx) + if err != nil { + Rollback(tx) + return err + } + + return tx.Commit() +} |