]> ToastFreeware Gitweb - toast/confclerk.git/blobdiff - src/sql/sqlengine.cpp
Add utc_offset and display_time_shift columns to conference database.
[toast/confclerk.git] / src / sql / sqlengine.cpp
index e062387c1398481985bec0fcb442ceb8bad7b89d..ae4a0164ac1f9d2f94ba10b766fa9f02ad5b7e79 100644 (file)
@@ -37,7 +37,7 @@
 
 #include <QDebug>
 
-SqlEngine::SqlEngine(QObject *aParent): QObject(aParent) {
+SqlEngine::SqlEngine(QObject *aParent): QObject(aParent), DATE_FORMAT("yyyy-MM-dd"), TIME_FORMAT("hh:mm") {
 #if QT_VERSION >= 0x050000
     QDir dbPath(QStandardPaths::writableLocation(QStandardPaths::DataLocation));
 #else
@@ -91,8 +91,13 @@ bool SqlEngine::updateDbSchemaVersion000To001() {
 }
 
 
+bool SqlEngine::updateDbSchemaVersion001To002() {
+    return applySqlFile(":/dbschema001to002.sql");
+}
+
+
 bool SqlEngine::createCurrentDbSchema() {
-    return applySqlFile(":/dbschema001.sql");
+    return applySqlFile(":/dbschema002.sql");
 }
 
 
@@ -109,6 +114,9 @@ bool SqlEngine::createOrUpdateDbSchema() {
         // db schema version 0
         return updateDbSchemaVersion000To001();
     case 1:
+        // db schema version 1
+        return updateDbSchemaVersion001To002();
+    case 2:
         // current schema
         return true;
     default:
@@ -154,7 +162,8 @@ void SqlEngine::addConferenceToDB(QHash<QString,QString> &aConference, int confe
     }
     query.bindValue(":start", QDateTime(QDate::fromString(aConference["start"],DATE_FORMAT),QTime(0,0),Qt::UTC).toTime_t());
     query.bindValue(":end", QDateTime(QDate::fromString(aConference["end"],DATE_FORMAT),QTime(0,0),Qt::UTC).toTime_t());
-    query.bindValue(":day_change", -QTime::fromString(aConference["day_change"],TIME_FORMAT).secsTo(QTime(0,0)));
+    QTime dayChange = QTime::fromString(aConference["day_change"].left(TIME_FORMAT.size()), TIME_FORMAT);
+    query.bindValue(":day_change", QTime(0, 0).secsTo(dayChange));
     query.bindValue(":timeslot_duration", -QTime::fromString(aConference["timeslot_duration"],TIME_FORMAT).secsTo(QTime(0,0)));
     query.bindValue(":active", 1);
     if (!insert) query.bindValue(":id", conferenceId);
@@ -325,7 +334,7 @@ void SqlEngine::addLinkToDB(QHash<QString,QString> &aLink) {
 }
 
 
-bool SqlEngine::searchEvent(int aConferenceId, const QHash<QString,QString> &aColumns, const QString &aKeyword) {
+bool SqlEngine::searchEvent(int aConferenceId, const QMultiHash<QString,QString> &aColumns, const QString &aKeyword) {
     if (aColumns.empty()) return false;
 
     // DROP
@@ -396,6 +405,14 @@ bool SqlEngine::commitTransaction() {
 }
 
 
+bool SqlEngine::rollbackTransaction() {
+    QSqlQuery query(db);
+    bool success = query.exec("ROLLBACK");
+    emitSqlQueryError(query);
+    return success;
+}
+
+
 bool SqlEngine::deleteConference(int id) {
     QSqlQuery query(db);
     bool success = query.exec("BEGIN IMMEDIATE TRANSACTION");
@@ -430,4 +447,3 @@ void SqlEngine::emitSqlQueryError(const QSqlQuery &query) {
     if (error.type() == QSqlError::NoError) return;
     emit dbError(error.text());
 }
-