From: APTX Date: Sun, 3 Jun 2012 16:01:45 +0000 (+0200) Subject: Add RaiiTransaction helper class for automatic transaction rollback. X-Git-Url: https://gitweb.aptx.org/?a=commitdiff_plain;h=03fe35e3c1d39fedb5ae3cd2538ff00fcd26734e;p=localmylist.git Add RaiiTransaction helper class for automatic transaction rollback. --- diff --git a/localmylist/database.cpp b/localmylist/database.cpp index 22a8793..d90efc6 100644 --- a/localmylist/database.cpp +++ b/localmylist/database.cpp @@ -1051,4 +1051,23 @@ void Database::handleNotification(const QString ¬ification) } } + +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 diff --git a/localmylist/database.h b/localmylist/database.h index 99d8dcf..39435c7 100644 --- a/localmylist/database.h +++ b/localmylist/database.h @@ -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