X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsqlitestorage.cpp;h=a6d7671f16aaae30879912bd8ba42c393dfd97c9;hp=78b688a2922d6a0a0675e6a91964cb51bd847f8e;hb=6422c61b11d97f905b6a27f2d280e9ec0d8bb3e2;hpb=fd16e241d2fd1f33f4625b3255956f025a67273b diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 78b688a2..a6d7671f 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2016 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -1503,7 +1503,7 @@ QHash SqliteStorage::bufferMarkerLineMsgIds(UserId user) return markerLineHash; } -void SqliteStorage::setBufferActivity(UserId user, const BufferId &bufferId, const Message::Types &bufferActivity) +void SqliteStorage::setBufferActivity(UserId user, BufferId bufferId, Message::Types bufferActivity) { QSqlDatabase db = logDb(); db.transaction(); @@ -1553,7 +1553,7 @@ QHash SqliteStorage::bufferActivities(UserId user) } -Message::Types SqliteStorage::bufferActivity(BufferId &bufferId, const MsgId &lastSeenMsgId) +Message::Types SqliteStorage::bufferActivity(BufferId bufferId, MsgId lastSeenMsgId) { QSqlDatabase db = logDb(); db.transaction(); @@ -1821,6 +1821,48 @@ QList SqliteStorage::requestAllMsgs(UserId user, MsgId first, MsgId las } +QMap SqliteStorage::getAllAuthUserNames() +{ + QMap authusernames; + + QSqlDatabase db = logDb(); + db.transaction(); + { + QSqlQuery query(db); + query.prepare(queryString("select_all_authusernames")); + + lockForRead(); + safeExec(query); + watchQuery(query); + while (query.next()) { + authusernames[query.value(0).toInt()] = query.value(1).toString(); + } + } + db.commit(); + unlock(); + return authusernames; +} + + +QString SqliteStorage::getAuthUserName(UserId user) { + QString authusername; + QSqlQuery query(logDb()); + query.prepare(queryString("select_authusername")); + query.bindValue(":userid", user.toInt()); + + lockForRead(); + safeExec(query); + watchQuery(query); + unlock(); + + if (query.first()) { + authusername = query.value(0).toString(); + } + + return authusername; +} + + QString SqliteStorage::backlogFile() { return Quassel::configDirPath() + "quassel-storage.sqlite"; @@ -1836,12 +1878,15 @@ bool SqliteStorage::safeExec(QSqlQuery &query, int retryCount) switch (query.lastError().number()) { case 5: // SQLITE_BUSY 5 /* The database file is locked */ + [[clang::fallthrough]]; case 6: // SQLITE_LOCKED 6 /* A table in the database is locked */ if (retryCount < _maxRetryCount) return safeExec(query, retryCount + 1); + break; default: - return false; + ; } + return false; }