From: Philipp Spitzer Date: Wed, 27 Sep 2017 19:36:47 +0000 (+0200) Subject: Implement transaction RAII. X-Git-Tag: 0.6.3~6 X-Git-Url: https://git.toastfreeware.priv.at/toast/confclerk.git/commitdiff_plain/c19618d6f4233dc33c6702684e39efad58a85443?hp=0c71a07c7148800193671593cff6b35b64b12a0a Implement transaction RAII. --- diff --git a/src/sql/sqlengine.h b/src/sql/sqlengine.h index 5cfc6bf..68d0679 100644 --- a/src/sql/sqlengine.h +++ b/src/sql/sqlengine.h @@ -82,5 +82,24 @@ class SqlEngine : public QObject { void dbError(const QString& message); }; + +class TransactionRaii { + SqlEngine& sqlEngine; + bool committed = false; +public: + TransactionRaii(SqlEngine& sqlEngine): sqlEngine(sqlEngine) { + sqlEngine.beginTransaction(); + } + + void commit() { + sqlEngine.commitTransaction(); + committed = true; + } + + ~TransactionRaii() { + if (!committed) sqlEngine.rollbackTransaction(); + } +}; + #endif /* SQLENGINE_H */