Add authenticator column to quasseluser migration table
[quassel.git] / src / core / postgresqlstorage.cpp
index 9c340df..ce543ae 100644 (file)
@@ -210,13 +210,14 @@ bool PostgreSqlStorage::setupSchemaVersion(int version)
 }
 
 
-UserId PostgreSqlStorage::addUser(const QString &user, const QString &password)
+UserId PostgreSqlStorage::addUser(const QString &user, const QString &password, const QString &authenticator)
 {
     QSqlQuery query(logDb());
     query.prepare(queryString("insert_quasseluser"));
     query.bindValue(":username", user);
     query.bindValue(":password", hashPassword(password));
     query.bindValue(":hashversion", Storage::HashVersion::Latest);
+    query.bindValue(":authenticator", authenticator);
     safeExec(query);
     if (!watchQuery(query))
         return 0;
@@ -286,6 +287,21 @@ UserId PostgreSqlStorage::getUserId(const QString &user)
     }
 }
 
+QString PostgreSqlStorage::getUserAuthenticator(const UserId userid)
+{
+    QSqlQuery query(logDb());
+    query.prepare(queryString("select_authenticator"));
+    query.bindValue(":userid", userid.toInt());
+    safeExec(query);
+    watchQuery(query);
+
+    if (query.first()) {
+        return query.value(0).toString();
+    }
+    else {
+        return QString("");
+    }
+}
 
 UserId PostgreSqlStorage::internalUser()
 {
@@ -1370,17 +1386,6 @@ QHash<BufferId, MsgId> PostgreSqlStorage::bufferMarkerLineMsgIds(UserId user)
     return markerLineHash;
 }
 
-void PostgreSqlStorage::setBufferLastMsg(const BufferId &bufferId, const MsgId &msgId)
-{
-    QSqlQuery query(logDb());
-    query.prepare(queryString("update_buffer_lastmsgid"));
-
-    query.bindValue(":bufferid", bufferId.toInt());
-    query.bindValue(":lastmsgid", msgId.toInt());
-    safeExec(query);
-    watchQuery(query);
-}
-
 bool PostgreSqlStorage::logMessage(Message &msg)
 {
     QSqlDatabase db = logDb();
@@ -1434,9 +1439,6 @@ bool PostgreSqlStorage::logMessage(Message &msg)
     db.commit();
     if (msgId.isValid()) {
         msg.setMsgId(msgId);
-
-        setBufferLastMsg(msg.bufferInfo().bufferId(), msgId);
-
         return true;
     }
     else {
@@ -1867,6 +1869,7 @@ bool PostgreSqlMigrationWriter::writeMo(const QuasselUserMO &user)
     bindValue(1, user.username);
     bindValue(2, user.password);
     bindValue(3, user.hashversion);
+    bindValue(4, user.authenticator);
     return exec();
 }
 
@@ -1969,10 +1972,11 @@ bool PostgreSqlMigrationWriter::writeMo(const BufferMO &buffer)
     bindValue(4, buffer.buffername);
     bindValue(5, buffer.buffercname);
     bindValue(6, (int)buffer.buffertype);
-    bindValue(7, buffer.lastseenmsgid);
-    bindValue(8, buffer.markerlinemsgid);
-    bindValue(9, buffer.key);
-    bindValue(10, buffer.joined);
+    bindValue(7, buffer.lastmsgid);
+    bindValue(8, buffer.lastseenmsgid);
+    bindValue(9, buffer.markerlinemsgid);
+    bindValue(10, buffer.key);
+    bindValue(11, buffer.joined);
     return exec();
 }
 
@@ -2043,6 +2047,8 @@ bool PostgreSqlMigrationWriter::postProcess()
             return false;
     }
 
+    // Update the lastmsgid for all existing buffers.
+    resetQuery();
     newQuery(QString("SELECT populate_lastmsgid()"), db);
     if (!exec())
         return false;