abstractsqlstorage api cleanup
[quassel.git] / src / core / abstractsqlstorage.cpp
index 825dda8..6d850d8 100644 (file)
@@ -20,6 +20,8 @@
 
 #include "abstractsqlstorage.h"
 
+#include "logger.h"
+
 #include <QSqlError>
 #include <QSqlQuery>
 
@@ -50,8 +52,8 @@ QSqlDatabase AbstractSqlStorage::logDb() {
     return db;
 
   if(!openDb()) {
-    qWarning() << "Unable to Open Database" << engineName();
-    qWarning() << " -" << db.lastError().text();
+    qWarning() << "Unable to Open Database" << displayName();
+    qWarning() << "-" << db.lastError().text();
   }
 
   return QSqlDatabase::database("quassel_connection");
@@ -83,12 +85,12 @@ bool AbstractSqlStorage::init(const QVariantMap &settings) {
     return false;
 
   if(installedSchemaVersion() == -1) {
-    qDebug() << "Storage Schema is missing!";
+    qCritical() << "Storage Schema is missing!";
     return false;
   }
 
   if(installedSchemaVersion() > schemaVersion()) {
-    qWarning() << "Installed Schema is newer then any known Version.";
+    qCritical() << "Installed Schema is newer then any known Version.";
     return false;
   }
   
@@ -98,7 +100,7 @@ bool AbstractSqlStorage::init(const QVariantMap &settings) {
       return false;
   }
   
-  qDebug() << "Storage Backend is ready. Quassel Schema Version:" << installedSchemaVersion();
+  quInfo() << "Storage Backend is ready. Quassel Schema Version:" << installedSchemaVersion();
   return true;
 }
 
@@ -116,9 +118,9 @@ QString AbstractSqlStorage::queryString(const QString &queryName, int version) {
   if(version == 0)
     version = schemaVersion();
     
-  QFileInfo queryInfo(QString(":/SQL/%1/%2/%3.sql").arg(engineName()).arg(version).arg(queryName));
+  QFileInfo queryInfo(QString(":/SQL/%1/%2/%3.sql").arg(displayName()).arg(version).arg(queryName));
   if(!queryInfo.exists() || !queryInfo.isFile() || !queryInfo.isReadable()) {
-    qWarning() << "Unable to read SQL-Query" << queryName << "for Engine" << engineName();
+    qCritical() << "Unable to read SQL-Query" << queryName << "for engine" << displayName();
     return QString();
   }
 
@@ -131,27 +133,19 @@ QString AbstractSqlStorage::queryString(const QString &queryName, int version) {
   return query.trimmed();
 }
 
-QString AbstractSqlStorage::queryString(const QString &queryName) {
-  return queryString(queryName, 0);
-}
-
-QSqlQuery *AbstractSqlStorage::cachedQuery(const QString &queryName, int version) {
+QSqlQuery &AbstractSqlStorage::cachedQuery(const QString &queryName, int version) {
   QPair<QString, int> queryId = qMakePair(queryName, version);
   if(!_queryCache.contains(queryId)) {
     QSqlQuery *query = new QSqlQuery(logDb());
     query->prepare(queryString(queryName, version));
     _queryCache[queryId] = query;
   }
-  return _queryCache[queryId];
-}
-
-QSqlQuery *AbstractSqlStorage::cachedQuery(const QString &queryName) {
-  return cachedQuery(queryName, 0);
+  return *(_queryCache[queryId]);
 }
 
 QStringList AbstractSqlStorage::setupQueries() {
   QStringList queries;
-  QDir dir = QDir(QString(":/SQL/%1/%2/").arg(engineName()).arg(schemaVersion()));
+  QDir dir = QDir(QString(":/SQL/%1/%2/").arg(displayName()).arg(schemaVersion()));
   foreach(QFileInfo fileInfo, dir.entryInfoList(QStringList() << "setup*", QDir::NoFilter, QDir::Name)) {
     queries << queryString(fileInfo.baseName());
   }
@@ -162,14 +156,14 @@ bool AbstractSqlStorage::setup(const QVariantMap &settings) {
   Q_UNUSED(settings)
   QSqlDatabase db = logDb();
   if(!db.isOpen()) {
-    qWarning() << "Unable to setup Logging Backend!";
+    qCritical() << "Unable to setup Logging Backend!";
     return false;
   }
 
   foreach(QString queryString, setupQueries()) {
     QSqlQuery query = db.exec(queryString);
-    if(!watchQuery(&query)) {
-      qWarning() << "Unable to setup Logging Backend!";
+    if(!watchQuery(query)) {
+      qCritical() << "Unable to setup Logging Backend!";
       return false;
     }
   }
@@ -178,9 +172,9 @@ bool AbstractSqlStorage::setup(const QVariantMap &settings) {
 
 QStringList AbstractSqlStorage::upgradeQueries(int version) {
   QStringList queries;
-  QDir dir = QDir(QString(":/SQL/%1/%2/").arg(engineName()).arg(version));
+  QDir dir = QDir(QString(":/SQL/%1/%2/").arg(displayName()).arg(version));
   foreach(QFileInfo fileInfo, dir.entryInfoList(QStringList() << "upgrade*", QDir::NoFilter, QDir::Name)) {
-    queries << queryString(fileInfo.baseName());
+    queries << queryString(fileInfo.baseName(), version);
   }
   return queries;
 }
@@ -194,8 +188,8 @@ bool AbstractSqlStorage::upgradeDb() {
   for(int ver = installedSchemaVersion() + 1; ver <= schemaVersion(); ver++) {
     foreach(QString queryString, upgradeQueries(ver)) {
       QSqlQuery query = db.exec(queryString);
-      if(!watchQuery(&query)) {
-       qWarning() << "Unable to upgrade Logging Backend!";
+      if(!watchQuery(query)) {
+       qCritical() << "Unable to upgrade Logging Backend!";
        return false;
       }
     }
@@ -212,7 +206,7 @@ int AbstractSqlStorage::schemaVersion() {
 
   int version;
   bool ok;
-  QDir dir = QDir(":/SQL/" + engineName());
+  QDir dir = QDir(":/SQL/" + displayName());
   foreach(QFileInfo fileInfo, dir.entryInfoList()) {
     if(!fileInfo.isDir())
       continue;
@@ -227,16 +221,19 @@ int AbstractSqlStorage::schemaVersion() {
   return _schemaVersion;
 }
 
-bool AbstractSqlStorage::watchQuery(QSqlQuery *query) {
-  if(query->lastError().isValid()) {
-    qWarning() << "unhandled Error in QSqlQuery!";
-    qWarning() << "                  last Query:\n" << query->lastQuery();
-    qWarning() << "              executed Query:\n" << query->executedQuery();
-    qWarning() << "                bound Values:"   << query->boundValues();
-    qWarning() << "                Error Number:"   << query->lastError().number();
-    qWarning() << "               Error Message:"   << query->lastError().text();
-    qWarning() << "              Driver Message:"   << query->lastError().driverText();
-    qWarning() << "                  DB Message:"   << query->lastError().databaseText();
+bool AbstractSqlStorage::watchQuery(QSqlQuery &query) {
+  if(query.lastError().isValid()) {
+    qCritical() << "unhandled Error in QSqlQuery!";
+    qCritical() << "                  last Query:\n" << query.lastQuery();
+    qCritical() << "              executed Query:\n" << query.executedQuery();
+    qCritical() << "                bound Values:";
+    QList<QVariant> list = query.boundValues().values();
+    for (int i = 0; i < list.size(); ++i)
+      qCritical() << i << ": " << list.at(i).toString().toAscii().data();
+    qCritical() << "                Error Number:"   << query.lastError().number();
+    qCritical() << "               Error Message:"   << query.lastError().text();
+    qCritical() << "              Driver Message:"   << query.lastError().driverText();
+    qCritical() << "                  DB Message:"   << query.lastError().databaseText();
     
     return false;
   }