]> ToastFreeware Gitweb - toast/confclerk.git/blobdiff - src/sql/sqlengine.h
Add utc_offset and display_time_shift columns to conference database.
[toast/confclerk.git] / src / sql / sqlengine.h
index 8dc911601cfea90743c2df2221ea9a21b045ce64..a428e7418c6a003374519968373b0794d65937b7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2010 Ixonos Plc.
- * Copyright (C) 2011-2012 Philipp Spitzer, gregor herrmann, Stefan Stahl
+ * Copyright (C) 2011-2017 Philipp Spitzer, gregor herrmann, Stefan Stahl
  *
  * This file is part of ConfClerk.
  *
@@ -28,6 +28,9 @@
 class SqlEngine : public QObject {
     Q_OBJECT
     public:
+        const QString DATE_FORMAT; // "yyyy-MM-dd"
+        const QString TIME_FORMAT; // "hh:mm"
+
         QString dbFilename; ///< database filename including path
         QSqlDatabase db; ///< this may be private one day...
 
@@ -47,6 +50,7 @@ class SqlEngine : public QObject {
         int dbSchemaVersion();
         /// called by createOrUpdateDbSchema. Do not use directly. true for success.
         bool updateDbSchemaVersion000To001();
+        bool updateDbSchemaVersion001To002();
         /// called by createOrUpdateDbSchma. Do not use directly. true for success.
         bool createCurrentDbSchema();
         /// creates the current database schema if an empty database is found,
@@ -65,9 +69,10 @@ class SqlEngine : public QObject {
 
         bool beginTransaction();
         bool commitTransaction();
+        bool rollbackTransaction();
 
         /// search Events for .... returns true if success
-        bool searchEvent(int conferenceId, const QHash<QString,QString> &columns, const QString &keyword);
+        bool searchEvent(int conferenceId, const QMultiHash<QString,QString> &columns, const QString &keyword);
     private:
         static QString login(const QString &aDatabaseType, const QString &aDatabaseName);
         /// emits a possible error message as signal. Does nothing if there was not last error
@@ -78,5 +83,24 @@ class SqlEngine : public QObject {
         void dbError(const QString& message);
 };
 
+
+class TransactionRaii {
+    SqlEngine& sqlEngine;
+    bool committed;
+public:
+    TransactionRaii(SqlEngine& sqlEngine): sqlEngine(sqlEngine), committed(false) {
+        sqlEngine.beginTransaction();
+    }
+
+    void commit() {
+        sqlEngine.commitTransaction();
+        committed = true;
+    }
+
+    ~TransactionRaii() {
+        if (!committed) sqlEngine.rollbackTransaction();
+    }
+};
+
 #endif /* SQLENGINE_H */