summaryrefslogtreecommitdiff
path: root/model
diff options
context:
space:
mode:
Diffstat (limited to 'model')
-rw-r--r--model/object.go15
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()
+}