X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fsqlitestorage.cpp;h=9fcd2b95bd8639d84303de629fd7d4c1a5754a64;hb=dba66762993507168b1a3de25cfd2d7bff0ff969;hp=99e97b54cfa1208a8c2b48150c32c7546e0a04fe;hpb=31c1e758654388b080ce1dee7065afa053efc1b8;p=quassel.git diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 99e97b54..9fcd2b95 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -46,12 +46,19 @@ bool SqliteStorage::isAvailable() const } +QString SqliteStorage::backendId() const +{ + return QString("SQLite"); +} + + QString SqliteStorage::displayName() const { + // Note: Pre-0.13 clients use the displayName property for backend idenfication // We identify the backend to use for the monolithic core by its displayname. // so only change this string if you _really_ have to and make sure the core // setup for the mono client still works ;) - return QString("SQLite"); + return backendId(); } @@ -116,7 +123,7 @@ bool SqliteStorage::setupSchemaVersion(int version) } -UserId SqliteStorage::addUser(const QString &user, const QString &password) +UserId SqliteStorage::addUser(const QString &user, const QString &password, const QString &authenticator) { QSqlDatabase db = logDb(); UserId uid; @@ -131,6 +138,7 @@ UserId SqliteStorage::addUser(const QString &user, const QString &password) query.bindValue(":username", user); query.bindValue(":password", hashPassword(password)); query.bindValue(":hashversion", Storage::HashVersion::Latest); + query.bindValue(":authenticator", authenticator); lockForWrite(); safeExec(query); if (query.lastError().isValid() && query.lastError().number() == 19) { // user already exists - sadly 19 seems to be the general constraint violation error... @@ -240,6 +248,26 @@ UserId SqliteStorage::getUserId(const QString &username) return userId; } +QString SqliteStorage::getUserAuthenticator(const UserId userid) +{ + QString authenticator = QString(""); + + { + QSqlQuery query(logDb()); + query.prepare(queryString("select_authenticator")); + query.bindValue(":userid", userid.toInt()); + + lockForRead(); + safeExec(query); + + if (query.first()) { + authenticator = query.value(0).toString(); + } + } + unlock(); + + return authenticator; +} UserId SqliteStorage::internalUser() { @@ -1475,17 +1503,6 @@ QHash SqliteStorage::bufferMarkerLineMsgIds(UserId user) return markerLineHash; } -void SqliteStorage::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 SqliteStorage::logMessage(Message &msg) { QSqlDatabase db = logDb(); @@ -1501,6 +1518,7 @@ bool SqliteStorage::logMessage(Message &msg) logMessageQuery.bindValue(":type", msg.type()); logMessageQuery.bindValue(":flags", (int)msg.flags()); logMessageQuery.bindValue(":sender", msg.sender()); + logMessageQuery.bindValue(":senderprefixes", msg.senderPrefixes()); logMessageQuery.bindValue(":message", msg.contents()); lockForWrite(); @@ -1524,8 +1542,6 @@ bool SqliteStorage::logMessage(Message &msg) MsgId msgId = logMessageQuery.lastInsertId().toInt(); if (msgId.isValid()) { msg.setMsgId(msgId); - - setBufferLastMsg(msg.bufferInfo().bufferId(), msgId); } else { error = true; @@ -1578,6 +1594,7 @@ bool SqliteStorage::logMessages(MessageList &msgs) logMessageQuery.bindValue(":type", msg.type()); logMessageQuery.bindValue(":flags", (int)msg.flags()); logMessageQuery.bindValue(":sender", msg.sender()); + logMessageQuery.bindValue(":senderprefixes", msg.senderPrefixes()); logMessageQuery.bindValue(":message", msg.contents()); safeExec(logMessageQuery); @@ -1662,8 +1679,9 @@ QList SqliteStorage::requestMsgs(UserId user, BufferId bufferId, MsgId Message msg(QDateTime::fromTime_t(query.value(1).toInt()), bufferInfo, (Message::Type)query.value(2).toUInt(), - query.value(5).toString(), + query.value(6).toString(), query.value(4).toString(), + query.value(5).toString(), (Message::Flags)query.value(3).toUInt()); msg.setMsgId(query.value(0).toInt()); messagelist << msg; @@ -1716,8 +1734,9 @@ QList SqliteStorage::requestAllMsgs(UserId user, MsgId first, MsgId las Message msg(QDateTime::fromTime_t(query.value(2).toInt()), bufferInfoHash[query.value(1).toInt()], (Message::Type)query.value(3).toUInt(), - query.value(6).toString(), + query.value(7).toString(), query.value(5).toString(), + query.value(6).toString(), (Message::Flags)query.value(4).toUInt()); msg.setMsgId(query.value(0).toInt()); messagelist << msg; @@ -1833,6 +1852,7 @@ bool SqliteMigrationReader::readMo(QuasselUserMO &user) user.username = value(1).toString(); user.password = value(2).toString(); user.hashversion = value(3).toInt(); + user.authenticator = value(4).toString(); return true; } @@ -1930,10 +1950,11 @@ bool SqliteMigrationReader::readMo(BufferMO &buffer) buffer.buffername = value(4).toString(); buffer.buffercname = value(5).toString(); buffer.buffertype = value(6).toInt(); - buffer.lastseenmsgid = value(7).toInt(); - buffer.markerlinemsgid = value(8).toInt(); - buffer.key = value(9).toString(); - buffer.joined = value(10).toInt() == 1 ? true : false; + buffer.lastmsgid = value(7).toInt(); + buffer.lastseenmsgid = value(8).toInt(); + buffer.markerlinemsgid = value(9).toInt(); + buffer.key = value(10).toString(); + buffer.joined = value(11).toInt() == 1 ? true : false; return true; } @@ -1982,7 +2003,8 @@ bool SqliteMigrationReader::readMo(BacklogMO &backlog) backlog.type = value(3).toInt(); backlog.flags = value(4).toInt(); backlog.senderid = value(5).toInt(); - backlog.message = value(6).toString(); + backlog.senderprefixes = value(6).toString(); + backlog.message = value(7).toString(); return true; }