-void SqliteStorage::createBuffer(UserId user, const QString &network, const QString &buffer) {
- QSqlQuery *createBufferQuery = cachedQuery("insert_buffer");
- createBufferQuery->bindValue(":userid", user);
- createBufferQuery->bindValue(":userid2", user); // Qt can't handle same placeholder twice (maybe sqlites fault)
- createBufferQuery->bindValue(":networkname", network);
- createBufferQuery->bindValue(":buffername", buffer);
- createBufferQuery->exec();
-
- if(createBufferQuery->lastError().isValid()) {
- if(createBufferQuery->lastError().number() == 19) { // Null Constraint violation
- QSqlQuery *createNetworkQuery = cachedQuery("insert_network");
- createNetworkQuery->bindValue(":userid", user);
- createNetworkQuery->bindValue(":networkname", network);
- createNetworkQuery->exec();
- createBufferQuery->exec();
- Q_ASSERT(!createNetworkQuery->lastError().isValid());
- Q_ASSERT(!createBufferQuery->lastError().isValid());
- } else {
- // do panic!
- qDebug() << "failed to create Buffer: ErrNo:" << createBufferQuery->lastError().number() << "ErrMsg:" << createBufferQuery->lastError().text();
- Q_ASSERT(false);
- }
+NetworkId SqliteStorage::createNetworkId(UserId user, const NetworkInfo &info) {
+ NetworkId networkId;
+ QSqlQuery query(logDb());
+ query.prepare(queryString("insert_network"));
+ query.bindValue(":userid", user.toInt());
+ query.bindValue(":networkname", info.networkName);
+ query.exec();
+
+ networkId = getNetworkId(user, info.networkName);
+ if(!networkId.isValid()) {
+ watchQuery(&query);