From c19618d6f4233dc33c6702684e39efad58a85443 Mon Sep 17 00:00:00 2001 From: Philipp Spitzer Date: Wed, 27 Sep 2017 21:36:47 +0200 Subject: [PATCH] Implement transaction RAII. --- src/sql/sqlengine.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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 */ -- 2.39.5