From: Marcus Eggenberger Date: Sat, 28 Feb 2009 18:06:49 +0000 (+0100) Subject: first version of sqlite migration reader X-Git-Tag: 0.5-rc1~330 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=698bd631332040f9a988ae8f31a80688893ca6f3 first version of sqlite migration reader --- diff --git a/src/core/SQL/SQLite/14/migrate_read_backlog.sql b/src/core/SQL/SQLite/14/migrate_read_backlog.sql new file mode 100644 index 00000000..6db9d234 --- /dev/null +++ b/src/core/SQL/SQLite/14/migrate_read_backlog.sql @@ -0,0 +1,3 @@ +SELECT messageid, time, bufferid, type, flags, senderid, message +FROM backlog + diff --git a/src/core/SQL/SQLite/14/migrate_read_buffer.sql b/src/core/SQL/SQLite/14/migrate_read_buffer.sql new file mode 100644 index 00000000..4f7de4f0 --- /dev/null +++ b/src/core/SQL/SQLite/14/migrate_read_buffer.sql @@ -0,0 +1,2 @@ +SELECT bufferid, userid, groupid, networkid, buffername, buffercname, buffertype, lastseenmsgid, key, joined +FROM buffer diff --git a/src/core/SQL/SQLite/14/migrate_read_identity.sql b/src/core/SQL/SQLite/14/migrate_read_identity.sql new file mode 100644 index 00000000..da3ffa60 --- /dev/null +++ b/src/core/SQL/SQLite/14/migrate_read_identity.sql @@ -0,0 +1,4 @@ +SELECT identityid, userid, identityname, realname, awaynick, awaynickenabled, awayreason, + awayreasonenabled, autoawayenabled, autoawaytime, autoawayreason, autoawayreasonenabled, detachawayenabled, detachawayreason, detachawayreasonenabled, + ident, kickreason, partreason, quitreason, sslcert, sslkey +FROM identity diff --git a/src/core/SQL/SQLite/14/migrate_read_identity_nick.sql b/src/core/SQL/SQLite/14/migrate_read_identity_nick.sql new file mode 100644 index 00000000..8954f795 --- /dev/null +++ b/src/core/SQL/SQLite/14/migrate_read_identity_nick.sql @@ -0,0 +1,2 @@ +SELECT nickid, identityid, nick +FROM identity_nick diff --git a/src/core/SQL/SQLite/14/migrate_read_ircserver.sql b/src/core/SQL/SQLite/14/migrate_read_ircserver.sql new file mode 100644 index 00000000..2c0114c1 --- /dev/null +++ b/src/core/SQL/SQLite/14/migrate_read_ircserver.sql @@ -0,0 +1,2 @@ +SELECT serverid, userid, networkid, hostname, port, password, ssl, sslversion, useproxy, proxytype, proxyhost, proxyport, proxyuser, proxypass +FROM ircserver diff --git a/src/core/SQL/SQLite/14/migrate_read_network.sql b/src/core/SQL/SQLite/14/migrate_read_network.sql new file mode 100644 index 00000000..1308d809 --- /dev/null +++ b/src/core/SQL/SQLite/14/migrate_read_network.sql @@ -0,0 +1,5 @@ +SELECT networkid, userid, networkname, identityid, encodingcodec, decodingcodec, servercodec, + userandomserver, perform, useautoidentify, autoidentifyservice, autoidentifypassword, + useautoreconnect, autoreconnectinterval, autoreconnectretries, unlimitedconnectretries, + rejoinchannels, connected, usermode, awaymessage, attachperform, detachperform +FROM network diff --git a/src/core/SQL/SQLite/14/migrate_read_quasseluser.sql b/src/core/SQL/SQLite/14/migrate_read_quasseluser.sql new file mode 100644 index 00000000..5adf0d99 --- /dev/null +++ b/src/core/SQL/SQLite/14/migrate_read_quasseluser.sql @@ -0,0 +1,2 @@ +SELECT userid, username, password +FROM quasseluser diff --git a/src/core/SQL/SQLite/14/migrate_read_sender.sql b/src/core/SQL/SQLite/14/migrate_read_sender.sql new file mode 100644 index 00000000..c74d2e94 --- /dev/null +++ b/src/core/SQL/SQLite/14/migrate_read_sender.sql @@ -0,0 +1,2 @@ +SELECT senderid, sender +FROM sender diff --git a/src/core/SQL/SQLite/14/migrate_read_usersetting.sql b/src/core/SQL/SQLite/14/migrate_read_usersetting.sql new file mode 100644 index 00000000..dc67d6bc --- /dev/null +++ b/src/core/SQL/SQLite/14/migrate_read_usersetting.sql @@ -0,0 +1,3 @@ +SELECT userid, settingname, settingvalue +FROM user_setting + diff --git a/src/core/sql.qrc b/src/core/sql.qrc index e373055f..d028ac7e 100644 --- a/src/core/sql.qrc +++ b/src/core/sql.qrc @@ -109,6 +109,15 @@ ./SQL/SQLite/14/insert_sender.sql ./SQL/SQLite/14/insert_server.sql ./SQL/SQLite/14/insert_user_setting.sql + ./SQL/SQLite/14/migrate_read_backlog.sql + ./SQL/SQLite/14/migrate_read_buffer.sql + ./SQL/SQLite/14/migrate_read_identity.sql + ./SQL/SQLite/14/migrate_read_identity_nick.sql + ./SQL/SQLite/14/migrate_read_ircserver.sql + ./SQL/SQLite/14/migrate_read_network.sql + ./SQL/SQLite/14/migrate_read_quasseluser.sql + ./SQL/SQLite/14/migrate_read_sender.sql + ./SQL/SQLite/14/migrate_read_usersetting.sql ./SQL/SQLite/14/select_authuser.sql ./SQL/SQLite/14/select_buffer_by_id.sql ./SQL/SQLite/14/select_buffer_lastseen_messages.sql diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 82ab2ab2..c2c9f0c7 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -986,7 +986,7 @@ QList SqliteStorage::requestMsgs(UserId user, BufferId bufferId, MsgId return messagelist; QSqlQuery query(logDb()); - + if(last == -1 && first == -1) { query.prepare(queryString("select_messagesNewestK")); } else if(last == -1) { @@ -1072,3 +1072,207 @@ bool SqliteStorage::safeExec(QSqlQuery &query, int retryCount) { return false; } } + + +// ======================================== +// SqliteMigration +// ======================================== +SqliteMigrationReader::SqliteMigrationReader() + : SqliteStorage() +{ +} + +bool SqliteMigrationReader::prepareQuery(MigrationObject mo) { + QString query; + switch(mo) { + case QuasselUser: + query = queryString("migrate_read_quasseluser"); + break; + case Sender: + query = queryString("migrate_read_sender"); + break; + case Identity: + query = queryString("migrate_read_identity"); + break; + case IdentityNick: + query = queryString("migrate_read_identity_nick"); + break; + case Network: + query = queryString("migrate_read_network"); + break; + case Buffer: + query = queryString("migrate_read_buffer"); + break; + case Backlog: + query = queryString("migrate_read_backlog"); + break; + case IrcServer: + query = queryString("migrate_read_ircserver"); + break; + case UserSetting: + query = queryString("migrate_read_usersetting"); + break; + } + newQuery(query, logDb()); + return exec(); +} + +//bool SqliteMigrationReader::readUser(QuasselUserMO &user) { +bool SqliteMigrationReader::readMo(QuasselUserMO &user) { + if(!next()) + return false; + + user.id = value(0).toInt(); + user.username = value(1).toString(); + user.password = value(2).toString(); + return true; +} + +//bool SqliteMigrationReader::readSender(SenderMO &sender) { +bool SqliteMigrationReader::readMo(SenderMO &sender) { + if(!next()) + return false; + + sender.senderId = value(0).toInt(); + sender.sender = value(1).toString(); + return true; +} + +//bool SqliteMigrationReader::readIdentity(IdentityMO &identity) { +bool SqliteMigrationReader::readMo(IdentityMO &identity) { + if(!next()) + return false; + + identity.id = value(0).toInt(); + identity.userid = value(1).toInt(); + identity.identityname = value(2).toString(); + identity.realname = value(3).toString(); + identity.awayNick = value(4).toString(); + identity.awayNickEnabled = value(5).toInt() == 1 ? true : false; + identity.awayReason = value(6).toString(); + identity.awayReasonEnabled = value(7).toInt() == 1 ? true : false; + identity.autoAwayEnabled = value(8).toInt() == 1 ? true : false; + identity.autoAwayTime = value(9).toInt(); + identity.autoAwayReason = value(10).toString(); + identity.autoAwayReasonEnabled = value(11).toInt() == 1 ? true : false; + identity.detachAwayEnabled = value(12).toInt() == 1 ? true : false; + identity.detachAwayReason = value(13).toString(); + identity.detchAwayReasonEnabled = value(14).toInt() == 1 ? true : false; + identity.ident = value(15).toString(); + identity.kickReason = value(16).toString(); + identity.partReason = value(17).toString(); + identity.quitReason = value(18).toString(); + identity.sslCert = value(19).toByteArray(); + identity.sslKey = value(20).toByteArray(); + return true; +} + +//bool SqliteMigrationReader::readIdentityNick(IdentityNickMO &identityNick) { +bool SqliteMigrationReader::readMo(IdentityNickMO &identityNick) { + if(!next()) + return false; + + identityNick.nickid = value(0).toInt(); + identityNick.identityId = value(1).toInt(); + identityNick.nick = value(2).toString(); + return true; +} + +//bool SqliteMigrationReader::readNetwork(NetworkMO &network) { +bool SqliteMigrationReader::readMo(NetworkMO &network) { + if(!next()) + return false; + + network.networkid = value(0).toInt(); + network.userid = value(1).toInt(); + network.networkname = value(2).toString(); + network.identityid = value(3).toInt(); + network.encodingcodec = value(4).toString(); + network.decodingcodec = value(5).toString(); + network.servercodec = value(6).toString(); + network.userandomserver = value(7).toInt() == 1 ? true : false; + network.perform = value(8).toString(); + network.useautoidentify = value(9).toInt() == 1 ? true : false; + network.autoidentifyservice = value(10).toString(); + network.autoidentifypassword = value(11).toString(); + network.useautoreconnect = value(12).toInt() == 1 ? true : false; + network.autoreconnectinterval = value(13).toInt(); + network.autoreconnectretries = value(14).toInt(); + network.unlimitedconnectretries = value(15).toInt() == 1 ? true : false; + network.rejoinchannels = value(16).toInt() == 1 ? true : false; + network.connected = value(17).toInt() == 1 ? true : false; + network.usermode = value(18).toString(); + network.awaymessage = value(19).toString(); + network.attachperform = value(20).toString(); + network.detachperform = value(21).toString(); + return true; +} + +//bool SqliteMigrationReader::readBuffer(BufferMO &buffer) { +bool SqliteMigrationReader::readMo(BufferMO &buffer) { + if(!next()) + return false; + + buffer.bufferid = value(0).toInt(); + buffer.userid = value(1).toInt(); + buffer.groupid = value(2).toInt(); + buffer.networkid = value(3).toInt(); + buffer.buffername = value(4).toString(); + buffer.buffercname = value(5).toString(); + buffer.buffertype = value(6).toInt(); + buffer.lastseenmsgid = value(7).toInt(); + buffer.key = value(8).toString(); + buffer.joined = value(9).toInt() == 1 ? true : false; + return true; +} + +//bool SqliteMigrationReader::readBacklog(BacklogMO &backlog) { +bool SqliteMigrationReader::readMo(BacklogMO &backlog) { + if(!next()) + return false; + + backlog.messageid = value(0).toInt(); + backlog.time = QDateTime::fromTime_t(value(1).toInt()); + backlog.bufferid = value(2).toInt(); + backlog.type = value(3).toInt(); + backlog.flags = value(4).toInt(); + backlog.senderid = value(5).toInt(); + backlog.message = value(6).toString(); + return true; +} + +//bool SqliteMigrationReader::readIrcServer(IrcServerMO &ircserver) { +bool SqliteMigrationReader::readMo(IrcServerMO &ircserver) { + if(!next()) + return false; + + ircserver.serverid = value(0).toInt(); + ircserver.userid = value(1).toInt(); + ircserver.networkid = value(2).toInt(); + ircserver.hostname = value(3).toString(); + ircserver.port = value(4).toInt(); + ircserver.password = value(5).toString(); + ircserver.ssl = value(6).toInt() == 1 ? true : false; + ircserver.sslversion = value(7).toInt(); + ircserver.useproxy = value(8).toInt() == 1 ? true : false; + ircserver.proxytype = value(9).toInt(); + ircserver.proxyhost = value(10).toString(); + ircserver.proxyport = value(11).toInt(); + ircserver.proxyuser = value(12).toString(); + ircserver.proxypass = value(13).toString(); + return true; +} + +//bool SqliteMigrationReader::readUserSetting(UserSettingMO &userSetting) { +bool SqliteMigrationReader::readMo(UserSettingMO &userSetting) { + if(!next()) + return false; + + userSetting.userid = value(0).toInt(); + userSetting.settingname = value(1).toString(); + userSetting.settingvalue = value(2).toByteArray(); + + return true; +} + + diff --git a/src/core/sqlitestorage.h b/src/core/sqlitestorage.h index 20f9da7a..3f213067 100644 --- a/src/core/sqlitestorage.h +++ b/src/core/sqlitestorage.h @@ -79,7 +79,7 @@ public slots: virtual void setAwayMessage(UserId user, NetworkId networkId, const QString &awayMsg); virtual QString userModes(UserId user, NetworkId networkId); virtual void setUserModes(UserId user, NetworkId networkId, const QString &userModes); - + /* Buffer handling */ virtual BufferInfo bufferInfo(UserId user, const NetworkId &networkId, BufferInfo::Type type, const QString &buffer = "", bool create = true); virtual BufferInfo getBufferInfo(UserId user, const BufferId &bufferId); @@ -116,4 +116,43 @@ private: static int _maxRetryCount; }; +// ======================================== +// SqliteMigration +// ======================================== +class SqliteMigrationReader : public SqliteStorage, public AbstractSqlMigrationReader { + Q_OBJECT + +public: + SqliteMigrationReader(); + +// virtual bool readUser(QuasselUserMO &user); +// virtual bool readSender(SenderMO &sender); +// virtual bool readIdentity(IdentityMO &identity); +// virtual bool readIdentityNick(IdentityNickMO &identityNick); +// virtual bool readNetwork(NetworkMO &network); +// virtual bool readBuffer(BufferMO &buffer); +// virtual bool readBacklog(BacklogMO &backlog); +// virtual bool readIrcServer(IrcServerMO &ircserver); +// virtual bool readUserSetting(UserSettingMO &userSetting); + + virtual bool readMo(QuasselUserMO &user); + virtual bool readMo(SenderMO &sender); + virtual bool readMo(IdentityMO &identity); + virtual bool readMo(IdentityNickMO &identityNick); + virtual bool readMo(NetworkMO &network); + virtual bool readMo(BufferMO &buffer); + virtual bool readMo(BacklogMO &backlog); + virtual bool readMo(IrcServerMO &ircserver); + virtual bool readMo(UserSettingMO &userSetting); + + virtual bool prepareQuery(MigrationObject mo); + +protected: + virtual inline bool transaction() { return logDb().transaction(); } + virtual inline void rollback() { logDb().rollback(); } + virtual inline bool commit() { return logDb().commit(); } +}; + + + #endif