X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsqlitestorage.cpp;h=dea348fbeaefebdecc06167903e087441dfa0b94;hp=85ffe515a8762f8a71aa03e61437acedc70fc102;hb=7897b8623a42967511e31c68d5c102033a1dcdb9;hpb=981b43a699b4dd6da16e45f74d59443b68ad4b9c diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 85ffe515..dea348fb 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -788,45 +788,24 @@ bool SqliteStorage::removeBuffer(const UserId &user, const BufferId &bufferId) { return true; } -BufferId SqliteStorage::renameBuffer(const UserId &user, const NetworkId &networkId, const QString &newName, const QString &oldName) { - // check if such a buffer exists... - QSqlQuery existsQuery(logDb()); - existsQuery.prepare(queryString("select_bufferByName")); - existsQuery.bindValue(":networkid", networkId.toInt()); - existsQuery.bindValue(":userid", user.toInt()); - existsQuery.bindValue(":buffercname", oldName.toLower()); - safeExec(existsQuery); - if(!watchQuery(existsQuery)) - return false; - - if(!existsQuery.first()) - return false; - - const int bufferid = existsQuery.value(0).toInt(); - - Q_ASSERT(!existsQuery.next()); - - // ... and if the new name is still free. - existsQuery.bindValue(":networkid", networkId.toInt()); - existsQuery.bindValue(":userid", user.toInt()); - existsQuery.bindValue(":buffercname", newName.toLower()); - safeExec(existsQuery); - if(!watchQuery(existsQuery)) +bool SqliteStorage::renameBuffer(const UserId &user, const BufferId &bufferId, const QString &newName) { + if(!isValidBuffer(user, bufferId)) return false; - if(existsQuery.first()) + QSqlQuery query(logDb()); + query.prepare(queryString("update_buffer_name")); + query.bindValue(":buffername", newName); + query.bindValue(":buffercname", newName.toLower()); + query.bindValue(":bufferid", bufferId.toInt()); + safeExec(query); + if(query.lastError().isValid()) { + // unexepcted error occured (19 == constraint violation) + if(query.lastError().number() != 19) + watchQuery(query); return false; + } - QSqlQuery renameBufferQuery(logDb()); - renameBufferQuery.prepare(queryString("update_buffer_name")); - renameBufferQuery.bindValue(":buffername", newName); - renameBufferQuery.bindValue(":buffercname", newName.toLower()); - renameBufferQuery.bindValue(":bufferid", bufferid); - safeExec(renameBufferQuery); - if(watchQuery(existsQuery)) - return BufferId(bufferid); - else - return BufferId(); + return true; } void SqliteStorage::setBufferLastSeenMsg(UserId user, const BufferId &bufferId, const MsgId &msgId) {