summaryrefslogtreecommitdiff
path: root/lib/dbConn.h
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2021-06-13 21:29:25 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2021-06-13 21:29:25 +0100
commit3bc5964793f1700551b7db8107a939c98f1d1be1 (patch)
tree38c77c4e49d54a348e5cdeb402bdd63f2e29d477 /lib/dbConn.h
parentAdd operator* to RecordSet, shorthand for getting scalar from 0,0 (diff)
downloadmygrate-3bc5964793f1700551b7db8107a939c98f1d1be1.tar.bz2
mygrate-3bc5964793f1700551b7db8107a939c98f1d1be1.tar.xz
mygrate-3bc5964793f1700551b7db8107a939c98f1d1be1.zip
Add transaction support
Diffstat (limited to 'lib/dbConn.h')
-rw-r--r--lib/dbConn.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/dbConn.h b/lib/dbConn.h
index 3f14dcb..ffdd2e0 100644
--- a/lib/dbConn.h
+++ b/lib/dbConn.h
@@ -24,6 +24,28 @@ namespace MyGrate {
virtual void query(const char * const, const std::initializer_list<DbValue> &) = 0;
virtual DbPrepStmtPtr prepare(const char * const, std::size_t nParams) = 0;
+
+ virtual void beginTx() = 0;
+ virtual void commitTx() = 0;
+ virtual void rollbackTx() = 0;
+ };
+
+ class Tx {
+ public:
+ explicit Tx(DbConn *);
+ Tx(const Tx &) = delete;
+ Tx(Tx &&) = delete;
+ ~Tx();
+
+ template<typename C>
+ auto
+ operator()(C && callback)
+ {
+ return callback();
+ }
+
+ private:
+ DbConn * conn;
};
}