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

index 22a8793d00578147ee35e41bd7500564c2d4de92..d90efc68940e3cdf0b7dc6dda18dccbddc2736a7 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 99d8dcf2854448c2d90e947b05a0cfafc08f2206..39435c7610e1b104e6473dedd06a3d3cd366890d 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