X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsqlitestorage.cpp;h=7b024016c0c5dd8530351dd2d2af7c37a9bd3e5b;hp=eb6b3d884f35d8840d11873c548362e60fff6f49;hb=b2f681c796855ba0f863eb14b062c5d1a2825df1;hpb=cfa01e5ffc7988e7976b8dc0777dabf26b0eacc5 diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index eb6b3d88..7b024016 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -480,7 +480,9 @@ void SqliteStorage::setPersistentChannelKey(UserId user, const NetworkId &networ void SqliteStorage::createBuffer(UserId user, const NetworkId &networkId, BufferInfo::Type type, const QString &buffer) { - QSqlQuery &query = cachedQuery("insert_buffer"); + // QSqlQuery &query = cachedQuery("insert_buffer"); + QSqlQuery query(logDb()); + query.prepare(queryString("insert_buffer")); query.bindValue(":userid", user.toInt()); query.bindValue(":networkid", networkId.toInt()); query.bindValue(":buffertype", (int)type); @@ -492,7 +494,9 @@ void SqliteStorage::createBuffer(UserId user, const NetworkId &networkId, Buffer } BufferInfo SqliteStorage::getBufferInfo(UserId user, const NetworkId &networkId, BufferInfo::Type type, const QString &buffer) { - QSqlQuery &query = cachedQuery("select_bufferByName"); + // QSqlQuery &query = cachedQuery("select_bufferByName"); + QSqlQuery query(logDb()); + query.prepare(queryString("select_bufferByName")); query.bindValue(":networkid", networkId.toInt()); query.bindValue(":userid", user.toInt()); query.bindValue(":buffercname", buffer.toLower()); @@ -632,7 +636,10 @@ BufferId SqliteStorage::renameBuffer(const UserId &user, const NetworkId &networ } void SqliteStorage::setBufferLastSeenMsg(UserId user, const BufferId &bufferId, const MsgId &msgId) { - QSqlQuery &query = cachedQuery("update_buffer_lastseen"); + // QSqlQuery &query = cachedQuery("update_buffer_lastseen"); + QSqlQuery query(logDb()); + query.prepare(queryString("update_buffer_lastseen")); + query.bindValue(":userid", user.toInt()); query.bindValue(":bufferid", bufferId.toInt()); query.bindValue(":lastseenmsgid", msgId.toInt()); @@ -656,7 +663,10 @@ QHash SqliteStorage::bufferLastSeenMsgIds(UserId user) { } MsgId SqliteStorage::logMessage(Message msg) { - QSqlQuery &logMessageQuery = cachedQuery("insert_message"); + // QSqlQuery &logMessageQuery = cachedQuery("insert_message"); + QSqlQuery logMessageQuery(logDb()); + logMessageQuery.prepare(queryString("insert_message")); + logMessageQuery.bindValue(":time", msg.timestamp().toTime_t()); logMessageQuery.bindValue(":bufferid", msg.bufferInfo().bufferId().toInt()); logMessageQuery.bindValue(":type", msg.type()); @@ -668,7 +678,9 @@ MsgId SqliteStorage::logMessage(Message msg) { if(logMessageQuery.lastError().isValid()) { // constraint violation - must be NOT NULL constraint - probably the sender is missing... if(logMessageQuery.lastError().number() == 19) { - QSqlQuery &addSenderQuery = cachedQuery("insert_sender"); + // QSqlQuery &addSenderQuery = cachedQuery("insert_sender"); + QSqlQuery addSenderQuery(logDb()); + addSenderQuery.prepare(queryString("insert_sender")); addSenderQuery.bindValue(":sender", msg.sender()); addSenderQuery.exec(); watchQuery(addSenderQuery); @@ -696,7 +708,10 @@ QList SqliteStorage::requestMsgs(UserId user, BufferId bufferId, int la offset = 0; } else { // we have to determine the real offset first - QSqlQuery &offsetQuery = cachedQuery("select_messagesOffset"); + // QSqlQuery &offsetQuery = cachedQuery("select_messagesOffset"); + QSqlQuery offsetQuery(logDb()); + offsetQuery.prepare(queryString("select_messagesOffset")); + offsetQuery.bindValue(":bufferid", bufferId.toInt()); offsetQuery.bindValue(":messageid", offset); offsetQuery.exec(); @@ -705,7 +720,10 @@ QList SqliteStorage::requestMsgs(UserId user, BufferId bufferId, int la } // now let's select the messages - QSqlQuery &msgQuery = cachedQuery("select_messages"); + // QSqlQuery &msgQuery = cachedQuery("select_messages"); + QSqlQuery msgQuery(logDb()); + msgQuery.prepare(queryString("select_messages")); + msgQuery.bindValue(":bufferid", bufferId.toInt()); msgQuery.bindValue(":limit", lastmsgs); msgQuery.bindValue(":offset", offset); @@ -735,7 +753,10 @@ QList SqliteStorage::requestMsgs(UserId user, BufferId bufferId, QDateT return messagelist; // we have to determine the real offset first - QSqlQuery &offsetQuery = cachedQuery("select_messagesSinceOffset"); + // QSqlQuery &offsetQuery = cachedQuery("select_messagesSinceOffset"); + QSqlQuery offsetQuery(logDb()); + offsetQuery.prepare(queryString("select_messagesSinceOffset")); + offsetQuery.bindValue(":bufferid", bufferId.toInt()); offsetQuery.bindValue(":since", since.toTime_t()); offsetQuery.exec(); @@ -743,7 +764,9 @@ QList SqliteStorage::requestMsgs(UserId user, BufferId bufferId, QDateT offset = offsetQuery.value(0).toInt(); // now let's select the messages - QSqlQuery &msgQuery = cachedQuery("select_messagesSince"); + // QSqlQuery &msgQuery = cachedQuery("select_messagesSince"); + QSqlQuery msgQuery(logDb()); + msgQuery.prepare(queryString("select_messagesSince")); msgQuery.bindValue(":bufferid", bufferId.toInt()); msgQuery.bindValue(":since", since.toTime_t()); msgQuery.bindValue(":offset", offset); @@ -773,7 +796,9 @@ QList SqliteStorage::requestMsgRange(UserId user, BufferId bufferId, in if(!bufferInfo.isValid()) return messagelist; - QSqlQuery &rangeQuery = cachedQuery("select_messageRange"); + // QSqlQuery &rangeQuery = cachedQuery("select_messageRange"); + QSqlQuery rangeQuery(logDb()); + rangeQuery.prepare(queryString("select_messageRange")); rangeQuery.bindValue(":bufferid", bufferId.toInt()); rangeQuery.bindValue(":firstmsg", first); rangeQuery.bindValue(":lastmsg", last); @@ -798,51 +823,3 @@ QList SqliteStorage::requestMsgRange(UserId user, BufferId bufferId, in QString SqliteStorage::backlogFile() { return quasselDir().absolutePath() + "/quassel-storage.sqlite"; } - - -// ONLY NEEDED FOR MIGRATION -bool SqliteStorage::init(const QVariantMap &settings) { - if(!AbstractSqlStorage::init(settings)) - return false; - - QSqlQuery checkMigratedQuery(logDb()); - checkMigratedQuery.prepare("SELECT DISTINCT typeOf(password) FROM quasseluser"); - checkMigratedQuery.exec(); - if(!watchQuery(checkMigratedQuery)) - return false; - - if(!checkMigratedQuery.first()) - return true; // table is empty -> no work to be done - - QString passType = checkMigratedQuery.value(0).toString().toLower(); - if(passType == "text") - return true; // allready migrated - - Q_ASSERT(passType == "blob"); - - QSqlQuery getPasswordsQuery(logDb()); - getPasswordsQuery.prepare("SELECT userid, password FROM quasseluser"); - getPasswordsQuery.exec(); - - if(!watchQuery(getPasswordsQuery)) { - qCritical() << "unable to migrate to new password format!"; - return false; - } - - QHash passHash; - while(getPasswordsQuery.next()) { - passHash[getPasswordsQuery.value(0).toInt()] = getPasswordsQuery.value(1).toByteArray(); - } - - QSqlQuery setPasswordsQuery(logDb()); - setPasswordsQuery.prepare("UPDATE quasseluser SET password = :password WHERE userid = :userid"); - foreach(int userId, passHash.keys()) { - setPasswordsQuery.bindValue(":password", QString(passHash[userId])); - setPasswordsQuery.bindValue(":userid", userId); - setPasswordsQuery.exec(); - watchQuery(setPasswordsQuery); - } - - qDebug() << "successfully migrated passwords!"; - return true; -}