X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fsqlitestorage.cpp;h=ed705a84aa95b6c8ca4f04c613b2d0bf5ecdf7ad;hb=ff512ebd30643381e01950aafaebdbde2c512143;hp=507acee5eac40694cf1ce17aea0a567ea647f29f;hpb=76929fefa96b80fe4f3be89c334c820b13ad7e3b;p=quassel.git diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 507acee5..ed705a84 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -336,6 +336,21 @@ bool SqliteStorage::isValidNetwork(UserId user, const NetworkId &networkId) { return true; } +bool SqliteStorage::isValidBuffer(const UserId &user, const BufferId &bufferId) { + QSqlQuery query(logDb()); + query.prepare(queryString("select_bufferExists")); + query.bindValue(":userid", user.toInt()); + query.bindValue(":bufferid", bufferId.toInt()); + query.exec(); + + watchQuery(&query); + if(!query.first()) + return false; + + Q_ASSERT(!query.next()); + return true; +} + NetworkId SqliteStorage::getNetworkId(UserId user, const QString &network) { QSqlQuery query(logDb()); query.prepare("SELECT networkid FROM network " @@ -390,6 +405,24 @@ BufferInfo SqliteStorage::getBufferInfo(UserId user, const NetworkId &networkId, return bufferInfo; } +BufferInfo SqliteStorage::getBufferInfo(UserId user, const BufferId &bufferId) { + QSqlQuery query(logDb()); + query.prepare(queryString("select_buffer_by_id")); + query.bindValue(":userid", user.toInt()); + query.bindValue(":bufferid", bufferId.toInt()); + query.exec(); + if(!watchQuery(&query)) + return BufferInfo(); + + if(!query.first()) + return BufferInfo(); + + BufferInfo bufferInfo(query.value(0).toInt(), query.value(1).toInt(), (BufferInfo::Type)query.value(2).toInt(), 0, query.value(4).toString()); + Q_ASSERT(!query.next()); + + return bufferInfo; +} + QList SqliteStorage::requestBuffers(UserId user, QDateTime since) { uint time = 0; if(since.isValid()) @@ -409,6 +442,27 @@ QList SqliteStorage::requestBuffers(UserId user, QDateTime since) { return bufferlist; } +bool SqliteStorage::removeBuffer(const UserId &user, const BufferId &bufferId) { + if(!isValidBuffer(user, bufferId)) + return false; + + QSqlQuery delBacklogQuery(logDb()); + delBacklogQuery.prepare(queryString("delete_backlog_for_buffer")); + delBacklogQuery.bindValue(":bufferid", bufferId.toInt()); + delBacklogQuery.exec(); + if(!watchQuery(&delBacklogQuery)) + return false; + + QSqlQuery delBufferQuery(logDb()); + delBufferQuery.prepare(queryString("delete_buffer_for_bufferid")); + delBufferQuery.bindValue(":bufferid", bufferId.toInt()); + delBufferQuery.exec(); + if(!watchQuery(&delBufferQuery)) + return false; + + return true; +} + void SqliteStorage::setBufferLastSeen(UserId user, const BufferId &bufferId, const QDateTime &seenDate) { QSqlQuery *query = cachedQuery("update_buffer_lastseen"); query->bindValue(":userid", user.toInt());