]> Some of my projects - localmylist.git/commitdiff
Add RaiiTransaction helper class for automatic transaction rollback.
authorAPTX <redacted>
Sun, 3 Jun 2012 16:01:45 +0000 (18:01 +0200)
committerAPTX <redacted>
Sun, 3 Jun 2012 16:01:45 +0000 (18:01 +0200)
localmylist/database.cpp
localmylist/database.h

index 22a8793..d90efc6 100644 (file)
@@ -1051,4 +1051,23 @@ void Database::handleNotification(const QString &notification)
        }
 }
 
+
+RaiiTransaction::RaiiTransaction(Database *db) : d(db), c(false)
+{
+       d->transaction();
+}
+
+RaiiTransaction::~RaiiTransaction()
+{
+       if (c)
+               d->commit();
+       else
+               d->rollback();
+}
+
+void RaiiTransaction::commit()
+{
+       c = true;
+}
+
 } // namespace LocalMyList
index 99d8dcf..39435c7 100644 (file)
@@ -274,6 +274,16 @@ private:
        QString connectionName;
 };
 
+class RaiiTransaction
+{
+       Database *d;
+       bool c;
+public:
+       RaiiTransaction(Database *db);
+       ~RaiiTransaction();
+       void commit();
+};
+
 } // namespace LocalMyList
 
 #endif // DATABASE_H