Schmema update completed. Finally closing ticket #45.
authorPhilipp Spitzer <philipp@spitzer.priv.at>
Tue, 25 Sep 2012 21:24:05 +0000 (21:24 +0000)
committerPhilipp Spitzer <philipp@spitzer.priv.at>
Tue, 25 Sep 2012 21:24:05 +0000 (21:24 +0000)
src/db.qrc
src/sql/sqlengine.cpp
src/sql/sqlengine.h

index d14bd42513494dc895338d7b3386f8ffeaa4b165..faa1eac959bd397df6b41cd1f928bb7a9797026b 100644 (file)
@@ -1,6 +1,7 @@
 <!DOCTYPE RCC><RCC version="1.0">
 <qresource>
     <file>dbschema001.sql</file>
+    <file>dbschema000to001.sql</file>
 </qresource>
 </RCC>
 
index f9e58c4c8a931cee5cfe901c888e8a7e5ca8789b..1061384bcbb57f16d85045e44b36fc59185f02e1 100644 (file)
@@ -81,25 +81,12 @@ int SqlEngine::dbSchemaVersion() {
 
 
 bool SqlEngine::updateDbSchemaVersion000To001() {
-    emit dbError("Upgrade 0 -> 1 not implemented yet");
-    return false;
+    return applySqlFile(":/dbschema000to001.sql");
 }
 
 
 bool SqlEngine::createCurrentDbSchema() {
-    QFile file(":/dbschema001.sql");
-    file.open(QIODevice::ReadOnly | QIODevice::Text);
-    QString allSqlStatements = file.readAll();
-    QSqlQuery query(db);
-    foreach(QString sql, allSqlStatements.split(";")) {
-        if (sql.trimmed().isEmpty())  // do not execute empty queries like the last character from create_tables.sql
-            continue;
-        if (!query.exec(sql)) {
-            emitSqlQueryError(query);
-            return false;
-        }
-    }
-    return true;
+    return applySqlFile(":/dbschema001.sql");
 }
 
 
@@ -126,6 +113,23 @@ bool SqlEngine::createOrUpdateDbSchema() {
 }
 
 
+bool SqlEngine::applySqlFile(const QString sqlFile) {
+    QFile file(sqlFile);
+    file.open(QIODevice::ReadOnly | QIODevice::Text);
+    QString allSqlStatements = file.readAll();
+    QSqlQuery query(db);
+    foreach(QString sql, allSqlStatements.split(";")) {
+        if (sql.trimmed().isEmpty())  // do not execute empty queries like the last character from create_tables.sql
+            continue;
+        if (!query.exec(sql)) {
+            emitSqlQueryError(query);
+            return false;
+        }
+    }
+    return true;
+}
+
+
 void SqlEngine::addConferenceToDB(QHash<QString,QString> &aConference, int conferenceId) {
     QSqlQuery query(db);
     if (conferenceId <= 0) // insert conference
index 620b8b8d094ddb8bc73796b03a8edad275c715ec..8dc911601cfea90743c2df2221ea9a21b045ce64 100644 (file)
@@ -52,6 +52,8 @@ class SqlEngine : public QObject {
         /// creates the current database schema if an empty database is found,
         /// otherwise updates the schema if an old one is found. true for success.
         bool createOrUpdateDbSchema();
+        /// Applies an SQL file
+        bool applySqlFile(const QString sqlFile);
 
         // if a conferneceId != 0 is given, the confernce is updated instead of inserted.
         void addConferenceToDB(QHash<QString,QString> &aConference, int conferenceId);