X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsqlitestorage.cpp;h=a6d7671f16aaae30879912bd8ba42c393dfd97c9;hp=66c85dc0a774c90c4f1698aceafed47c61760ee7;hb=6422c61b11d97f905b6a27f2d280e9ec0d8bb3e2;hpb=e5d6f457a0f3eef578dcb9d7e4a3db61826dc232 diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 66c85dc0..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 int &bufferActivity) +void SqliteStorage::setBufferActivity(UserId user, BufferId bufferId, Message::Types bufferActivity) { QSqlDatabase db = logDb(); db.transaction(); @@ -1513,7 +1513,7 @@ void SqliteStorage::setBufferActivity(UserId user, const BufferId &bufferId, con query.prepare(queryString("update_buffer_bufferactivity")); query.bindValue(":userid", user.toInt()); query.bindValue(":bufferid", bufferId.toInt()); - query.bindValue(":bufferactivity", bufferActivity); + query.bindValue(":bufferactivity", (int) bufferActivity); lockForWrite(); safeExec(query); @@ -1524,9 +1524,9 @@ void SqliteStorage::setBufferActivity(UserId user, const BufferId &bufferId, con } -QHash SqliteStorage::bufferActivities(UserId user) +QHash SqliteStorage::bufferActivities(UserId user) { - QHash bufferActivityHash; + QHash bufferActivityHash; QSqlDatabase db = logDb(); db.transaction(); @@ -1542,7 +1542,7 @@ QHash SqliteStorage::bufferActivities(UserId user) error = !watchQuery(query); if (!error) { while (query.next()) { - bufferActivityHash[query.value(0).toInt()] = (Message::Type) query.value(1).toInt(); + bufferActivityHash[query.value(0).toInt()] = Message::Types(query.value(1).toInt()); } } } @@ -1553,12 +1553,12 @@ QHash SqliteStorage::bufferActivities(UserId user) } -int SqliteStorage::bufferActivity(BufferId &bufferId, MsgId &lastSeenMsgId) +Message::Types SqliteStorage::bufferActivity(BufferId bufferId, MsgId lastSeenMsgId) { QSqlDatabase db = logDb(); db.transaction(); - int result = 0; + Message::Types result = Message::Types(0); { QSqlQuery query(db); query.prepare(queryString("select_buffer_bufferactivity")); @@ -1568,7 +1568,7 @@ int SqliteStorage::bufferActivity(BufferId &bufferId, MsgId &lastSeenMsgId) lockForRead(); safeExec(query); if (query.first()) - result = query.value(0).toInt(); + result = Message::Types(query.value(0).toInt()); } db.commit(); @@ -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; }