X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsqlitestorage.cpp;h=34852e9c1077d01ba1e7a29ceb6105cf34ce4771;hp=ad610a03907e8aecf9316d9fe2db86ba92a823cc;hb=638ec016dc973ff1c573f3d8194d5eb6a165fdbd;hpb=46da9706f425bf10d05a325b95ec7cea53443061 diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index ad610a03..34852e9c 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -42,6 +42,9 @@ bool SqliteStorage::isAvailable() const { } QString SqliteStorage::displayName() const { + // 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"); } @@ -591,6 +594,9 @@ void SqliteStorage::bindNetworkInfo(QSqlQuery &query, const NetworkInfo &info) { query.bindValue(":useautoidentify", info.useAutoIdentify ? 1 : 0); query.bindValue(":autoidentifyservice", info.autoIdentifyService); query.bindValue(":autoidentifypassword", info.autoIdentifyPassword); + query.bindValue(":usesasl", info.useSasl ? 1 : 0); + query.bindValue(":saslaccount", info.saslAccount); + query.bindValue(":saslpassword", info.saslPassword); query.bindValue(":useautoreconnect", info.useAutoReconnect ? 1 : 0); query.bindValue(":autoreconnectinterval", info.autoReconnectInterval); query.bindValue(":autoreconnectretries", info.autoReconnectRetries); @@ -780,6 +786,9 @@ QList SqliteStorage::networks(UserId user) { net.autoReconnectRetries = networksQuery.value(13).toInt(); net.unlimitedReconnectRetries = networksQuery.value(14).toInt() == 1 ? true : false; net.rejoinChannels = networksQuery.value(15).toInt() == 1 ? true : false; + net.useSasl = networksQuery.value(16).toInt() == 1 ? true : false; + net.saslAccount = networksQuery.value(17).toString(); + net.saslPassword = networksQuery.value(18).toString(); serversQuery.bindValue(":networkid", net.networkId.toInt()); safeExec(serversQuery); @@ -1037,6 +1046,7 @@ BufferInfo SqliteStorage::bufferInfo(UserId user, const NetworkId &networkId, Bu createQuery.bindValue(":buffertype", (int)type); createQuery.bindValue(":buffername", buffer); createQuery.bindValue(":buffercname", buffer.toLower()); + createQuery.bindValue(":joined", type & BufferInfo::ChannelBuffer ? 1 : 0); unlock(); lockForWrite(); @@ -1297,6 +1307,52 @@ QHash SqliteStorage::bufferLastSeenMsgIds(UserId user) { return lastSeenHash; } +void SqliteStorage::setBufferMarkerLineMsg(UserId user, const BufferId &bufferId, const MsgId &msgId) { + QSqlDatabase db = logDb(); + db.transaction(); + + { + QSqlQuery query(db); + query.prepare(queryString("update_buffer_markerlinemsgid")); + query.bindValue(":userid", user.toInt()); + query.bindValue(":bufferid", bufferId.toInt()); + query.bindValue(":markerlinemsgid", msgId.toInt()); + + lockForWrite(); + safeExec(query); + watchQuery(query); + } + db.commit(); + unlock(); +} + +QHash SqliteStorage::bufferMarkerLineMsgIds(UserId user) { + QHash markerLineHash; + + QSqlDatabase db = logDb(); + db.transaction(); + + bool error = false; + { + QSqlQuery query(db); + query.prepare(queryString("select_buffer_markerlinemsgids")); + query.bindValue(":userid", user.toInt()); + + lockForRead(); + safeExec(query); + error = !watchQuery(query); + if(!error) { + while(query.next()) { + markerLineHash[query.value(0).toInt()] = query.value(1).toInt(); + } + } + } + + db.commit(); + unlock(); + return markerLineHash; +} + bool SqliteStorage::logMessage(Message &msg) { QSqlDatabase db = logDb(); db.transaction(); @@ -1683,6 +1739,9 @@ bool SqliteMigrationReader::readMo(NetworkMO &network) { network.awaymessage = value(19).toString(); network.attachperform = value(20).toString(); network.detachperform = value(21).toString(); + network.usesasl = value(22).toInt() == 1 ? true : false; + network.saslaccount = value(23).toString(); + network.saslpassword = value(24).toString(); return true; } @@ -1698,8 +1757,9 @@ bool SqliteMigrationReader::readMo(BufferMO &buffer) { buffer.buffercname = value(5).toString(); buffer.buffertype = value(6).toInt(); buffer.lastseenmsgid = value(7).toInt(); - buffer.key = value(8).toString(); - buffer.joined = value(9).toInt() == 1 ? true : false; + buffer.markerlinemsgid = value(8).toInt(); + buffer.key = value(9).toString(); + buffer.joined = value(10).toInt() == 1 ? true : false; return true; }