clean++
[quassel.git] / src / core / sqlitestorage.cpp
index af5767d..86bf988 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "sqlitestorage.h"
 
+#include <QtSql>
 
 SqliteStorage::SqliteStorage() {
   // TODO I don't think that this path is failsafe for windows users :) 
@@ -108,6 +109,7 @@ SqliteStorage::SqliteStorage() {
 }
 
 SqliteStorage::~SqliteStorage() {
+  //logDb.close();
   delete logMessageQuery;
   delete addSenderQuery;
   delete getLastMessageIdQuery;
@@ -200,13 +202,15 @@ UserId SqliteStorage::addUser(QString user, QString password) {
   query.exec();
   if(query.lastError().isValid() && query.lastError().number() == 19) { // user already exists - sadly 19 seems to be the general constraint violation error...
     return 0;
-  } 
+  }
 
   query.prepare("SELECT userid FROM quasseluser WHERE username = :username");
   query.bindValue(":username", user);
   query.exec();
   query.first();
-  return query.value(0).toUInt();
+  UserId uid = query.value(0).toUInt();
+  emit userAdded(uid, user);
+  return uid;
 }
 
 void SqliteStorage::updateUser(UserId user, QString password) {
@@ -220,6 +224,15 @@ void SqliteStorage::updateUser(UserId user, QString password) {
   query.exec();
 }
 
+void SqliteStorage::renameUser(UserId user, QString newName) {
+  QSqlQuery query(logDb);
+  query.prepare("UPDATE quasseluser SET username = :username WHERE userid = :userid");
+  query.bindValue(":userid", user);
+  query.bindValue(":username", newName);
+  query.exec();
+  emit userRenamed(user, newName);
+}
+
 UserId SqliteStorage::validateUser(QString user, QString password) {
   QByteArray cryptopass = QCryptographicHash::hash(password.toUtf8(), QCryptographicHash::Sha1);
   cryptopass = cryptopass.toHex();
@@ -256,6 +269,7 @@ void SqliteStorage::delUser(UserId user) {
   query.bindValue(":userid", user);
   query.exec();
   // I hate the lack of foreign keys and on delete cascade... :(
+  emit userRemoved(user);
 }
 
 void SqliteStorage::createBuffer(UserId user, QString network, QString buffer) {
@@ -386,7 +400,6 @@ QList<Message> SqliteStorage::requestMsgs(BufferId buffer, int lastmsgs, int off
     msg.msgId = requestMsgsQuery->value(0).toUInt();
     messagelist << msg;
   }
-
   return messagelist;
 }