Don't invoke notifications for own messages, fixes #507
[quassel.git] / src / core / sqlitestorage.cpp
index 974740d..003d57a 100644 (file)
 
 #include <QtSql>
 
-#include "network.h"
-
-#include "util.h"
 #include "logger.h"
+#include "network.h"
+#include "quassel.h"
 
 int SqliteStorage::_maxRetryCount = 150; // yes this is a large number... only other way to "handle" this is bailing out...
 
@@ -65,6 +64,34 @@ int SqliteStorage::installedSchemaVersion() {
   return AbstractSqlStorage::installedSchemaVersion();
 }
 
+bool SqliteStorage::updateSchemaVersion(int newVersion) {
+  QSqlQuery query(logDb());
+  query.prepare("UPDATE coreinfo SET value = :version WHERE key = 'schemaversion'");
+  query.bindValue(":version", newVersion);
+  query.exec();
+
+  bool success = true;
+  if(query.lastError().isValid()) {
+    qCritical() << "SqliteStorage::updateSchemaVersion(int): Updating schema version failed!";
+    success = false;
+  }
+  return success;
+}
+
+bool SqliteStorage::setupSchemaVersion(int version) {
+  QSqlQuery query(logDb());
+  query.prepare("INSERT INTO coreinfo (key, value) VALUES ('schemaversion', :version)");
+  query.bindValue(":version", version);
+  query.exec();
+
+  bool success = true;
+  if(query.lastError().isValid()) {
+    qCritical() << "SqliteStorage::setupSchemaVersion(int): Updating schema version failed!";
+    success = false;
+  }
+  return success;
+}
+
 UserId SqliteStorage::addUser(const QString &user, const QString &password) {
   QSqlQuery query(logDb());
   query.prepare(queryString("insert_quasseluser"));
@@ -677,6 +704,51 @@ void SqliteStorage::setPersistentChannelKey(UserId user, const NetworkId &networ
   watchQuery(query);
 }
 
+QString SqliteStorage::awayMessage(UserId user, NetworkId networkId) {
+  QSqlQuery query(logDb());
+  query.prepare(queryString("select_network_awaymsg"));
+  query.bindValue(":userid", user.toInt());
+  query.bindValue(":networkid", networkId.toInt());
+  safeExec(query);
+  watchQuery(query);
+  QString awayMsg;
+  if(query.first())
+    awayMsg = query.value(0).toString();
+  return awayMsg;
+}
+
+void SqliteStorage::setAwayMessage(UserId user, NetworkId networkId, const QString &awayMsg) {
+  QSqlQuery query(logDb());
+  query.prepare(queryString("update_network_set_awaymsg"));
+  query.bindValue(":userid", user.toInt());
+  query.bindValue(":networkid", networkId.toInt());
+  query.bindValue(":awaymsg", awayMsg);
+  safeExec(query);
+  watchQuery(query);
+}
+
+QString SqliteStorage::userModes(UserId user, NetworkId networkId) {
+  QSqlQuery query(logDb());
+  query.prepare(queryString("select_network_usermode"));
+  query.bindValue(":userid", user.toInt());
+  query.bindValue(":networkid", networkId.toInt());
+  safeExec(query);
+  watchQuery(query);
+  QString modes;
+  if(query.first())
+    modes = query.value(0).toString();
+  return modes;
+}
+
+void SqliteStorage::setUserModes(UserId user, NetworkId networkId, const QString &userModes) {
+  QSqlQuery query(logDb());
+  query.prepare(queryString("update_network_set_usermode"));
+  query.bindValue(":userid", user.toInt());
+  query.bindValue(":networkid", networkId.toInt());
+  query.bindValue(":usermode", userModes);
+  safeExec(query);
+  watchQuery(query);
+}
 
 void SqliteStorage::createBuffer(UserId user, const NetworkId &networkId, BufferInfo::Type type, const QString &buffer) {
   QSqlQuery query(logDb());
@@ -969,7 +1041,7 @@ QList<Message> SqliteStorage::requestAllMsgs(UserId user, MsgId first, MsgId las
 }
 
 QString SqliteStorage::backlogFile() {
-  return quasselDir().absolutePath() + "/quassel-storage.sqlite";
+  return Quassel::configDirPath() + "quassel-storage.sqlite";
 }
 
 bool SqliteStorage::safeExec(QSqlQuery &query, int retryCount) {