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