From de3a47fd63defc4e5d9df5d9898cad12db02565e Mon Sep 17 00:00:00 2001
From: Armin Felder <armin.felder@osalliance.com>
Date: Wed, 19 Dec 2018 20:09:11 +0100
Subject: [PATCH] sad

---
 persistancelayer.cpp | 149 ++++++++++++++++++++++---------------------
 1 file changed, 77 insertions(+), 72 deletions(-)

diff --git a/persistancelayer.cpp b/persistancelayer.cpp
index d3a4ebd..226eba4 100755
--- a/persistancelayer.cpp
+++ b/persistancelayer.cpp
@@ -433,8 +433,9 @@ void PersistanceLayer::commit( )
 void PersistanceLayer::setUserName( const QString &pUsername )
 
 {
-    transaction();
-
+    QSqlQuery querySetUsername;
+    querySetUsername.prepare( QStringLiteral( "UPDATE user_data "
+                              "SET username=:username WHERE id=:id" ) );
     querySetUsername.bindValue( QStringLiteral( ":id" ), 0 );
     querySetUsername.bindValue( QStringLiteral( ":username" ), pUsername );
 
@@ -442,12 +443,14 @@ void PersistanceLayer::setUserName( const QString &pUsername )
         qWarning() << querySetUsername.lastError();
     }
 
-    askForcommit();
 }
 
 void PersistanceLayer::setPassword( const QString &pPassword )
 {
-    transaction();
+    QSqlQuery querySetPassword;
+    querySetPassword.prepare( QStringLiteral( "UPDATE user_data "
+                              "SET password=:password WHERE id=:id" ) );
+
     querySetPassword.bindValue( QStringLiteral( ":password" ), pPassword );
     querySetPassword.bindValue( QStringLiteral( ":id" ), 0 );
 
@@ -455,12 +458,14 @@ void PersistanceLayer::setPassword( const QString &pPassword )
         qWarning() << querySetPassword.lastError();
     }
 
-    askForcommit();
 }
 
 void PersistanceLayer::setToken( const QString &pToken, uint pExpire )
 {
-    transaction();
+    QSqlQuery querySetToken;
+    querySetToken.prepare( QStringLiteral( "UPDATE user_data "
+                                           "SET token=:token, token_expire=:token_expire WHERE id=:id" ) );
+
     querySetToken.bindValue( QStringLiteral( ":token" ), pToken );
     querySetToken.bindValue( QStringLiteral( ":id" ), 0 );
     querySetToken.bindValue( QStringLiteral( ":token_expire" ), pExpire );
@@ -468,13 +473,14 @@ void PersistanceLayer::setToken( const QString &pToken, uint pExpire )
     if ( !querySetToken.exec() ) {
         qWarning() << querySetToken.lastError();
     }
-
-    askForcommit();
 }
 
 void PersistanceLayer::setUserData( const QString &pUser, const QString &pPass )
 {
-    transaction();
+    QSqlQuery querySetUser;
+    querySetUser.prepare( QStringLiteral( "REPLACE INTO user_data "
+                                          "(id,password,username) VALUES(:id,:password,:username)" ) );
+
     querySetUser.bindValue( ":id", 0 );
     querySetUser.bindValue( ":password", pPass );
     querySetUser.bindValue( ":username", pUser );
@@ -483,8 +489,6 @@ void PersistanceLayer::setUserData( const QString &pUser, const QString &pPass )
         qWarning() << querySetUser.lastError();
         qWarning() << querySetUser.lastQuery();
     }
-
-    askForcommit();
 }
 
 QString PersistanceLayer::addFileToTemp( const QString &pUrl, const QString &pPath )
@@ -746,20 +750,21 @@ void PersistanceLayer::createFolder( const QString &pPath )
 
 void PersistanceLayer::setUserId( const QString &pUserId )
 {
-    transaction();
+    QSqlQuery querySetUserId;
+    querySetUserId.prepare( QStringLiteral( "UPDATE user_data SET user_id=:userId WHERE id=:id" ) );
     querySetUserId.bindValue( QStringLiteral( ":id" ), 0 );
     querySetUserId.bindValue( QStringLiteral( ":userId" ), pUserId );
 
     if ( !querySetUserId.exec() ) {
         qWarning() << querySetUserId.lastError();
     }
-
-    askForcommit();
 }
 
 void PersistanceLayer::setCurrentChannel( const QString &pChannelId, const QString &pChannelName )
 {
-    transaction();
+    QSqlQuery querySetChannel;
+    querySetChannel.prepare( QStringLiteral( "REPLACE INTO current_room"
+                             " (id,rid,name) VALUES(:id,:rid,:name)" ) );
 
     querySetChannel.bindValue( QStringLiteral( ":id" ), 0 );
     querySetChannel.bindValue( QStringLiteral( ":rid" ), pChannelId );
@@ -768,13 +773,13 @@ void PersistanceLayer::setCurrentChannel( const QString &pChannelId, const QStri
     if ( !querySetChannel.exec() ) {
         qWarning() << querySetChannel.lastError();
     }
-
-    askForcommit();
 }
 
 void PersistanceLayer::setSetting( const QString &pProperty, const QString &pValue )
 {
-    transaction();
+    QSqlQuery querySetSetting;
+    querySetSetting.prepare( QStringLiteral( "REPLACE INTO app_settings"
+                             " (property,value) VALUES(:property,:value)" ) );
 
     querySetSetting.bindValue( QStringLiteral( ":property" ), pProperty );
     querySetSetting.bindValue( QStringLiteral( ":value" ), pValue );
@@ -783,14 +788,10 @@ void PersistanceLayer::setSetting( const QString &pProperty, const QString &pVal
         qWarning() << querySetSetting.lastQuery();
         qWarning() << querySetSetting.lastError();
     }
-
-    askForcommit();
-
 }
 
 void PersistanceLayer::addChannel( const QString &pId, const QString &pName, const QString &pType, bool pJoined, bool pReadOnly, const QString &pMuted, bool pArchived, bool pBlocked, const QString &pUsername, const QString &pChatPartnerId )
 {
-    //   transaction();
     QSqlQuery queryAddChannel;
     queryAddChannel.prepare( QStringLiteral( "REPLACE INTO rooms "
                              "(id,name,type,joined,read_only,muted,archived,blocked,username,chat_partner_id) VALUES(:id,:name,:type,:joined,:read_only,:muted,:archived,:blocked,:username,:chat_partner_id)" ) );
@@ -814,7 +815,6 @@ void PersistanceLayer::addChannel( const QString &pId, const QString &pName, con
 
     queryAddChannel.finish();
 
-    //   askForcommit();
 }
 
 void PersistanceLayer::addChannel( const QString &pId, const QString &pName, const QString &pType, bool pJoined, const QString &pUsername, const QString &pMchatPartnerId )
@@ -828,11 +828,17 @@ void PersistanceLayer::addChannel( const QString &pId, const QString &pName, con
 
 void PersistanceLayer::deleteChannel( const QString &pId )
 {
+    QSqlQuery queryDeleteChannel;
+    queryDeleteChannel.prepare( QStringLiteral( "DELETE FROM rooms WHERE id=:id" ) );
+
     queryDeleteChannel.bindValue( QStringLiteral( ":id" ), pId );
 
     if ( !queryDeleteChannel.exec() ) {
         qWarning() << queryDeleteChannel.lastError();
     } else {
+        QSqlQuery queryDeleteMessagesFromChannel;
+        queryDeleteMessagesFromChannel.prepare( QStringLiteral( "DELETE FROM messages WHERE rid=:id" ) );
+
         queryDeleteMessagesFromChannel.bindValue( QStringLiteral( ":id" ), pId );
 
         if ( !queryDeleteMessagesFromChannel.exec() ) {
@@ -843,7 +849,6 @@ void PersistanceLayer::deleteChannel( const QString &pId )
 
 void PersistanceLayer::addMessage( const QString &pId, const QString &pRid, const QString &pAuthor, qint64 pTs, const QString &pJson, const QString &pUserId )
 {
-    // transaction();
     QSqlQuery queryAddMessage;
     queryAddMessage.prepare( QStringLiteral( "REPLACE INTO messages "
                              "(id,rid,author,ts,json,read, user_id) VALUES (:id,:rid,:author,:ts,:json,0,:user_id)" ) );
@@ -862,12 +867,13 @@ void PersistanceLayer::addMessage( const QString &pId, const QString &pRid, cons
         qWarning() << queryAddMessage.lastError();
     }
 
-    // askForcommit();
 }
 
 void PersistanceLayer::addFileCacheEntry( const QString &pUrl, const QString &pPath )
 {
-    transaction();
+    QSqlQuery queryAddCacheEntry;
+    queryAddCacheEntry.prepare( QStringLiteral( "REPLACE INTO file_cache (url,path,ts)"
+                                " VALUES (:url,:path,:ts)" ) );
     qDebug() << pUrl;
     qDebug() << pPath;
 
@@ -880,8 +886,6 @@ void PersistanceLayer::addFileCacheEntry( const QString &pUrl, const QString &pP
     if ( !queryAddCacheEntry.exec() ) {
         qWarning() << queryAddCacheEntry.lastError();
     }
-
-    askForcommit();
 }
 
 void PersistanceLayer::addCustomEmoji( const QString &pTag, const QString &pPath, const QString &pHtml, const QString &pCategory )
@@ -895,7 +899,6 @@ void PersistanceLayer::addCustomEmoji( const QString &pTag, const QString &pPath
 }
 void PersistanceLayer::addCustomEmoji( const QString &pTag, const QString &pPath, const QString &pHtml, const QString &pCategory, const QString &pUnicode, int pOrder )
 {
-    // transaction();
     QSqlQuery queryAddEmoji;
     queryAddEmoji.prepare( QStringLiteral( "REPLACE INTO custom_emojis (id,file,html,unicode,category,sort_order)"
                                            " VALUES (:id,:file,:html,:unicode,:category,:sort_order)" ) );
@@ -910,13 +913,12 @@ void PersistanceLayer::addCustomEmoji( const QString &pTag, const QString &pPath
     if ( !queryAddEmoji.exec() ) {
         qWarning() << queryAddEmoji.lastError();
     }
-
-    // askForcommit();
 }
 
 void PersistanceLayer::addUserToBlockList( const QString &pUserId, const QString &pUsername )
 {
-    transaction();
+    QSqlQuery queryAddUser;
+    queryAddUser.prepare( QStringLiteral( "INSERT INO blocked_users(id, author) VALUES(:id,:author)" ) );
     queryAddUser.bindValue( ":id", pUserId );
     queryAddUser.bindValue( ":author", pUsername );
 
@@ -924,13 +926,15 @@ void PersistanceLayer::addUserToBlockList( const QString &pUserId, const QString
         qWarning() << queryAddUser.lastError();
     }
 
-    askForcommit();
 
 }
 
 
 QHash<QString, QString> PersistanceLayer::getMessageByid( const QString &pId )
 {
+    QSqlQuery queryGetMessageByRid;
+    queryGetMessageByRid.prepare( QStringLiteral( "SELECT * FROM messages LEFT JOIN blocked_users ON (messages.user_id=blocked_users.user_id) WHERE blocked_users.user_id IS NULL AND id=:id" ) );
+
     queryGetMessageByRid.bindValue( QStringLiteral( ":id" ), pId );
     QHash<QString, QString> row;
 
@@ -963,6 +967,8 @@ QHash<QString, QString> PersistanceLayer::getMessageByid( const QString &pId )
 
 QString PersistanceLayer::getUserName()
 {
+    QSqlQuery queryGetName;
+    queryGetName.prepare( QStringLiteral( "SELECT username FROM user_data WHERE id=0" ) );
 
     QString name = "";
 
@@ -986,6 +992,9 @@ std::tuple<QString, QString> PersistanceLayer::getCurrentChannel()
     QString id;
     QString name;
 
+    QSqlQuery queryGetCurrentChannel;
+    queryGetCurrentChannel.prepare( QStringLiteral( "SELECT * FROM current_room WHERE id=0" ) );
+
     if ( !queryGetCurrentChannel.exec() ) {
         qWarning() << queryGetCurrentChannel.lastError();
     } else {
@@ -1003,6 +1012,9 @@ QString PersistanceLayer::getPassword()
 {
     QString pass = "";
 
+    QSqlQuery queryGetPass;
+    queryGetPass.prepare( QStringLiteral( "SELECT password FROM user_data WHERE id=0" ) );
+
     if ( !queryGetPass.exec() ) {
         qWarning() << queryGetPass.lastError();
     } else {
@@ -1024,6 +1036,9 @@ QPair<QString, uint> PersistanceLayer::getToken()
     // getToken.bindValue( ":id", 0 );
     QPair<QString, uint> token;
 
+    QSqlQuery queryGetToken;
+    queryGetToken.prepare( QStringLiteral( "SELECT token, token_expire FROM user_data WHERE id=0" ) );
+
     if ( !queryGetToken.exec() ) {
         qDebug() << queryGetToken.lastError();
     } else {
@@ -1043,6 +1058,9 @@ QPair<QString, uint> PersistanceLayer::getToken()
 
 QString PersistanceLayer::getUserId()
 {
+    QSqlQuery queryGetUserId;
+    queryGetUserId.prepare( "SELECT id,user_id FROM user_data WHERE id=0" );
+
     //getUserId.addBindValue( ":id", 0 );
     QString userId;
 
@@ -1063,6 +1081,9 @@ QString PersistanceLayer::getUserId()
 
 QList<QJsonObject> PersistanceLayer::getMessagesByRid( const QString &pRid )
 {
+    QSqlQuery queryGetMessagesByRid;
+    queryGetMessagesByRid.prepare( QStringLiteral( "SELECT * FROM messages WHERE rid=:rid ORDER BY ts DESC LIMIT 20" ) );
+
     queryGetMessagesByRid.bindValue( QStringLiteral( ":rid" ), pRid );
 
     QList<QJsonObject> rows;
@@ -1098,6 +1119,9 @@ QList<QJsonObject> PersistanceLayer::getMessagesByRid( const QString &pRid )
 
 QList<QJsonObject> PersistanceLayer::getMessagesByRid( const QString &pRid, qint64 pFrom, qint64 pTo )
 {
+    QSqlQuery queryGetMessageByRidAndRange;
+    queryGetMessageByRidAndRange.prepare( QStringLiteral( "SELECT * FROM messages WHERE rid=:rid AND ts<=:from AND ts>=:to ORDER BY ts DESC LIMIT 50" ) );
+
     queryGetMessageByRidAndRange.bindValue( QStringLiteral( ":rid" ), pRid );
     queryGetMessageByRidAndRange.bindValue( QStringLiteral( ":from" ), static_cast<qint64>( pFrom / 1000 ) );
     queryGetMessageByRidAndRange.bindValue( QStringLiteral( ":to" ), static_cast<qint64>( pTo / 1000 ) );
@@ -1134,6 +1158,9 @@ QList<QJsonObject> PersistanceLayer::getMessagesByRid( const QString &pRid, qint
 
 QList<QJsonObject > PersistanceLayer::getMessagesByRid( const QString &pRid, qint64 pFrom, int pLimit )
 {
+    QSqlQuery queryGetMessagesByRidLimit;
+    queryGetMessagesByRidLimit.prepare( QStringLiteral( "SELECT * FROM messages WHERE rid=:rid AND ts<=:from ORDER BY ts DESC LIMIT :limit" ) );
+
     queryGetMessagesByRidLimit.bindValue( QStringLiteral( ":rid" ), pRid );
     queryGetMessagesByRidLimit.bindValue( QStringLiteral( ":from" ), static_cast<qint64>( pFrom ) );
     queryGetMessagesByRidLimit.bindValue( QStringLiteral( ":limit" ), pLimit );
@@ -1177,6 +1204,8 @@ QList<QJsonObject > PersistanceLayer::getMessagesByRid( const QString &pRid, qin
 QList<QPair<QString, QString >> PersistanceLayer::getListOfBlockedUsers()
 {
     QList<QPair<QString, QString >> retList;
+    QSqlQuery queryGetBlockedUsers;
+    queryGetBlockedUsers.prepare( QStringLiteral( "SELECT * FROM blocked_users" ) );
 
     if ( !queryGetBlockedUsers.exec() ) {
         qWarning() << "getList of blocked users ";
@@ -1204,6 +1233,9 @@ QList<QVariantHash> PersistanceLayer::getChannels( )
     QList<QVariantHash> roomsList;
     roomsList.reserve( 100 );
 
+    QSqlQuery queryGetChannels;
+    queryGetChannels.prepare( QStringLiteral( "SELECT * FROM rooms LEFT JOIN (SELECT DISTINCT rid FROM messages ORDER BY ts DESC) AS sub ON rooms.id = sub.rid " ) );
+
     if ( !queryGetChannels.exec() ) {
         qWarning() << queryGetChannels.lastError();
     } else {
@@ -1248,6 +1280,9 @@ QList< QHash<QString, QString > > PersistanceLayer::getCustomEmojis()
     QList<QHash<QString, QString> > returnList;
     returnList.reserve( 3000 );
 
+    QSqlQuery queryGetEmojies;
+    queryGetEmojies.prepare( QStringLiteral( "SELECT id,file,html,category,unicode,sort_order FROM custom_emojis ORDER BY sort_order ASC" ) );
+
     if ( !queryGetEmojies.exec() ) {
         qWarning() << queryGetEmojies.lastError();
     } else {
@@ -1283,6 +1318,9 @@ QList<QHash<QString, QString>> PersistanceLayer::getFiles()
 {
     QList<QHash<QString, QString> > returnList;
 
+    QSqlQuery queryGetFileCacheEntry;
+    queryGetFileCacheEntry.prepare( QStringLiteral( "SELECT path FROM file_cache WHERE url=:url" ) );
+
     QSqlQuery getFilesQuery;
     getFilesQuery.prepare( "SELECT path,url FROM file_cache " );
 
@@ -1307,6 +1345,9 @@ QList<QHash<QString, QString>> PersistanceLayer::getFiles()
 
 QString PersistanceLayer::getFileCacheEntry( const QString &pUrl )
 {
+    QSqlQuery queryGetSetting;
+    queryGetSetting.prepare( QStringLiteral( "SELECT property,value FROM app_settings WHERE property=:property" ) );
+
     queryGetFileCacheEntry.bindValue( QStringLiteral( ":url" ), pUrl );
     QString returnString = "";
 
@@ -1337,6 +1378,9 @@ QString PersistanceLayer::getFileCacheEntry( const QString &pUrl )
 
 QString PersistanceLayer::getSetting( const QString &pProperty )
 {
+    QSqlQuery queryRemoveFileCacheEntry;
+    queryRemoveFileCacheEntry.prepare( QStringLiteral( "DELETE FROM file_cache WHERE url=:url" ) );
+
     queryGetSetting.bindValue( QStringLiteral( ":property" ), pProperty );
     QString returnString = "";
 
@@ -1499,46 +1543,7 @@ void PersistanceLayer::init()
 
 void PersistanceLayer::initQueries()
 {
-    querySetUsername.prepare( QStringLiteral( "UPDATE user_data "
-                              "SET username=:username WHERE id=:id" ) );
-    querySetPassword.prepare( QStringLiteral( "UPDATE user_data "
-                              "SET password=:password WHERE id=:id" ) );
-    querySetToken.prepare( QStringLiteral( "UPDATE user_data "
-                                           "SET token=:token, token_expire=:token_expire WHERE id=:id" ) );
-    querySetUser.prepare( QStringLiteral( "REPLACE INTO user_data "
-                                          "(id,password,username) VALUES(:id,:password,:username)" ) );
-    querySetUserId.prepare( QStringLiteral( "UPDATE user_data SET user_id=:userId WHERE id=:id" ) );
 
-    querySetChannel.prepare( QStringLiteral( "REPLACE INTO current_room"
-                             " (id,rid,name) VALUES(:id,:rid,:name)" ) );
-    querySetSetting.prepare( QStringLiteral( "REPLACE INTO app_settings"
-                             " (property,value) VALUES(:property,:value)" ) );
-    queryAddChannel.prepare( QStringLiteral( "REPLACE INTO rooms "
-                             "(id,name,type,joined,read_only,muted,archived,blocked,username,chat_partner_id) VALUES(:id,:name,:type,:joined,:read_only,:muted,:archived,:blocked,:username,:chat_partner_id)" ) );
-    queryDeleteChannel.prepare( QStringLiteral( "DELETE FROM rooms WHERE id=:id" ) );
-    queryDeleteMessagesFromChannel.prepare( QStringLiteral( "DELETE FROM messages WHERE rid=:id" ) );
-    queryAddMessage.prepare( QStringLiteral( "REPLACE INTO messages "
-                             "(id,rid,author,ts,json,read, user_id) VALUES (:id,:rid,:author,:ts,:json,0,:user_id)" ) );
-    queryAddCacheEntry.prepare( QStringLiteral( "REPLACE INTO file_cache (url,path,ts)"
-                                " VALUES (:url,:path,:ts)" ) );
-    queryAddEmoji.prepare( QStringLiteral( "REPLACE INTO custom_emojis (id,file,html,unicode,category,sort_order)"
-                                           " VALUES (:id,:file,:html,:unicode,:category,:sort_order)" ) );
-    queryAddUser.prepare( QStringLiteral( "INSERT INO blocked_users(id, author) VALUES(:id,:author)" ) );
-    queryGetMessageByRid.prepare( QStringLiteral( "SELECT * FROM messages LEFT JOIN blocked_users ON (messages.user_id=blocked_users.user_id) WHERE blocked_users.user_id IS NULL AND id=:id" ) );
-    queryGetName.prepare( QStringLiteral( "SELECT username FROM user_data WHERE id=0" ) );
-    queryGetCurrentChannel.prepare( QStringLiteral( "SELECT * FROM current_room WHERE id=0" ) );
-    queryGetPass.prepare( QStringLiteral( "SELECT password FROM user_data WHERE id=0" ) );
-    queryGetToken.prepare( QStringLiteral( "SELECT token, token_expire FROM user_data WHERE id=0" ) );
-    queryGetUserId.prepare( "SELECT id,user_id FROM user_data WHERE id=0" );
-    queryGetMessagesByRid.prepare( QStringLiteral( "SELECT * FROM messages WHERE rid=:rid ORDER BY ts DESC LIMIT 20" ) );
-    queryGetMessageByRidAndRange.prepare( QStringLiteral( "SELECT * FROM messages WHERE rid=:rid AND ts<=:from AND ts>=:to ORDER BY ts DESC LIMIT 50" ) );
-    queryGetMessagesByRidLimit.prepare( QStringLiteral( "SELECT * FROM messages WHERE rid=:rid AND ts<=:from ORDER BY ts DESC LIMIT :limit" ) );
-    queryGetBlockedUsers.prepare( QStringLiteral( "SELECT * FROM blocked_users" ) );
-    queryGetChannels.prepare( QStringLiteral( "SELECT * FROM rooms LEFT JOIN (SELECT DISTINCT rid FROM messages ORDER BY ts DESC) AS sub ON rooms.id = sub.rid " ) );
-    queryGetEmojies.prepare( QStringLiteral( "SELECT id,file,html,category,unicode,sort_order FROM custom_emojis ORDER BY sort_order ASC" ) );
-    queryGetFileCacheEntry.prepare( QStringLiteral( "SELECT path FROM file_cache WHERE url=:url" ) );
-    queryGetSetting.prepare( QStringLiteral( "SELECT property,value FROM app_settings WHERE property=:property" ) );
-    queryRemoveFileCacheEntry.prepare( QStringLiteral( "DELETE FROM file_cache WHERE url=:url" ) );
 
 }
 
-- 
GitLab