query.bindValue(":kickreason", identity.kickReason());
query.bindValue(":partreason", identity.partReason());
query.bindValue(":quitreason", identity.quitReason());
+#ifdef HAVE_SSL
query.bindValue(":sslcert", identity.sslCert().toPem());
query.bindValue(":sslkey", identity.sslKey().toPem());
+#else
+ query.bindValue(":sslcert", QByteArray());
+ query.bindValue(":sslkey", QByteArray());
+#endif
+
safeExec(query);
identityId = query.lastInsertId().toInt();
- qDebug() << identityId << identity.nicks();
if(!identityId.isValid()) {
watchQuery(query);
} else {
query.bindValue(":kickreason", identity.kickReason());
query.bindValue(":partreason", identity.partReason());
query.bindValue(":quitreason", identity.quitReason());
+#ifdef HAVE_SSL
query.bindValue(":sslcert", identity.sslCert().toPem());
query.bindValue(":sslkey", identity.sslKey().toPem());
+#else
+ query.bindValue(":sslcert", QByteArray());
+ query.bindValue(":sslkey", QByteArray());
+#endif
query.bindValue(":identityid", identity.id().toInt());
safeExec(query);
identity.setKickReason(query.value(15).toString());
identity.setPartReason(query.value(16).toString());
identity.setQuitReason(query.value(17).toString());
+#ifdef HAVE_SSL
identity.setSslCert(query.value(18).toByteArray());
identity.setSslKey(query.value(19).toByteArray());
+#endif
nickQuery.bindValue(":identityid", identity.id().toInt());
QList<QString> nicks;
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))
+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;
+ }
- const int bufferid = existsQuery.value(0).toInt();
-
- Q_ASSERT(!existsQuery.next());
+ return true;
+}
- // ... 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::mergeBuffersPermanently(const UserId &user, const BufferId &bufferId1, const BufferId &bufferId2) {
+ if(!isValidBuffer(user, bufferId1) || !isValidBuffer(user, bufferId2))
return false;
- if(existsQuery.first())
+ QSqlQuery query(logDb());
+ query.prepare(queryString("update_backlog_bufferid"));
+ query.bindValue(":oldbufferid", bufferId2.toInt());
+ query.bindValue(":newbufferid", bufferId1.toInt());
+ safeExec(query);
+ if(!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();
+ QSqlQuery delBufferQuery(logDb());
+ delBufferQuery.prepare(queryString("delete_buffer_for_bufferid"));
+ delBufferQuery.bindValue(":bufferid", bufferId2.toInt());
+ safeExec(delBufferQuery);
+ watchQuery(delBufferQuery);
+
+ return true;
}
void SqliteStorage::setBufferLastSeenMsg(UserId user, const BufferId &bufferId, const MsgId &msgId) {