X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fpostgresqlstorage.cpp;h=1adb749b470c9827b4cb8c5f5c0ee82e0a7024fc;hp=db8387f31aded41ef571f29cb7c5a0dcbe6c4fa3;hb=e5d6f457a0f3eef578dcb9d7e4a3db61826dc232;hpb=f509a0d1065d4e42c9eb84e0ffab9e72517df04c diff --git a/src/core/postgresqlstorage.cpp b/src/core/postgresqlstorage.cpp index db8387f3..1adb749b 100644 --- a/src/core/postgresqlstorage.cpp +++ b/src/core/postgresqlstorage.cpp @@ -1385,6 +1385,61 @@ QHash PostgreSqlStorage::bufferMarkerLineMsgIds(UserId user) return markerLineHash; } + +void PostgreSqlStorage::setBufferActivity(UserId user, const BufferId &bufferId, const int &bufferActivity) +{ + QSqlQuery query(logDb()); + query.prepare(queryString("update_buffer_bufferactivity")); + + query.bindValue(":userid", user.toInt()); + query.bindValue(":bufferid", bufferId.toInt()); + query.bindValue(":bufferactivity", bufferActivity); + safeExec(query); + watchQuery(query); +} + +QHash PostgreSqlStorage::bufferActivities(UserId user) +{ + QHash bufferActivityHash; + + QSqlDatabase db = logDb(); + if (!beginReadOnlyTransaction(db)) { + qWarning() << "PostgreSqlStorage::bufferActivities(): cannot start read only transaction!"; + qWarning() << " -" << qPrintable(db.lastError().text()); + return bufferActivityHash; + } + + QSqlQuery query(db); + query.prepare(queryString("select_buffer_bufferactivity")); + query.bindValue(":userid", user.toInt()); + safeExec(query); + if (!watchQuery(query)) { + db.rollback(); + return bufferActivityHash; + } + + while (query.next()) { + bufferActivityHash[query.value(0).toInt()] = (Message::Type) query.value(1).toInt(); + } + + db.commit(); + return bufferActivityHash; +} + +int PostgreSqlStorage::bufferActivity(BufferId &bufferId, MsgId &lastSeenMsgId) +{ + QSqlQuery query(logDb()); + query.prepare(queryString("select_buffer_bufferactivity")); + query.bindValue(":bufferid", bufferId.toInt()); + query.bindValue(":lastseenmsgid", lastSeenMsgId.toInt()); + safeExec(query); + watchQuery(query); + int result = 0; + if (query.first()) + result = query.value(0).toInt(); + return result; +} + bool PostgreSqlStorage::logMessage(Message &msg) { QSqlDatabase db = logDb(); @@ -1978,8 +2033,9 @@ bool PostgreSqlMigrationWriter::writeMo(const BufferMO &buffer) bindValue(7, buffer.lastmsgid); bindValue(8, buffer.lastseenmsgid); bindValue(9, buffer.markerlinemsgid); - bindValue(10, buffer.key); - bindValue(11, buffer.joined); + bindValue(10, buffer.bufferactivity); + bindValue(11, buffer.key); + bindValue(12, buffer.joined); return exec(); }