From 76929fefa96b80fe4f3be89c334c820b13ad7e3b Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Thu, 14 Feb 2008 22:23:50 +0000 Subject: [PATCH] Changed storage to store last seen dates of buffers, server encoding and flag for unlimited connection retries --- src/core/SQL/SQLite/6/setup_999_version.sql | 1 - .../SQLite/{6 => 7}/delete_backlog_by_uid.sql | 0 .../{6 => 7}/delete_backlog_for_network.sql | 0 .../SQLite/{6 => 7}/delete_buffers_by_uid.sql | 0 .../{6 => 7}/delete_buffers_for_network.sql | 0 .../delete_ircservers_for_network.sql | 0 .../SQL/SQLite/{6 => 7}/delete_network.sql | 0 .../{6 => 7}/delete_networks_by_uid.sql | 0 .../SQLite/{6 => 7}/delete_quasseluser.sql | 0 .../SQL/SQLite/{6 => 7}/insert_buffer.sql | 0 .../SQL/SQLite/{6 => 7}/insert_message.sql | 0 .../SQL/SQLite/{6 => 7}/insert_network.sql | 0 .../SQLite/{6 => 7}/insert_quasseluser.sql | 0 .../SQL/SQLite/{6 => 7}/insert_sender.sql | 0 .../SQL/SQLite/{6 => 7}/insert_server.sql | 0 .../SQL/SQLite/{6 => 7}/select_authuser.sql | 0 .../SQLite/{6 => 7}/select_bufferByName.sql | 0 .../SQL/SQLite/{6 => 7}/select_buffers.sql | 0 .../SQLite/{6 => 7}/select_lastMessage.sql | 0 .../SQLite/{6 => 7}/select_messageRange.sql | 0 .../SQL/SQLite/{6 => 7}/select_messages.sql | 0 .../SQLite/{6 => 7}/select_messagesOffset.sql | 0 .../SQLite/{6 => 7}/select_messagesSince.sql | 0 .../{6 => 7}/select_messagesSinceOffset.sql | 0 .../SQLite/{6 => 7}/select_networkExists.sql | 0 .../{6 => 7}/select_networks_for_user.sql | 4 +- .../{6 => 7}/select_servers_for_network.sql | 0 .../SQL/SQLite/{6 => 7}/select_userid.sql | 0 .../SQLite/{6 => 7}/setup_000_quasseluser.sql | 0 .../SQL/SQLite/{6 => 7}/setup_010_sender.sql | 0 .../SQL/SQLite/{6 => 7}/setup_020_network.sql | 3 +- .../SQL/SQLite/{6 => 7}/setup_030_buffer.sql | 0 .../SQLite/{6 => 7}/setup_040_buffer_idx.sql | 0 .../{6 => 7}/setup_050_buffer_cname_idx.sql | 0 .../SQL/SQLite/{6 => 7}/setup_060_backlog.sql | 0 .../SQLite/{6 => 7}/setup_070_coreinfo.sql | 0 .../SQLite/{6 => 7}/setup_080_ircservers.sql | 0 src/core/SQL/SQLite/7/setup_999_version.sql | 1 + .../SQL/SQLite/{6 => 7}/update_network.sql | 3 +- .../SQL/SQLite/{6 => 7}/update_username.sql | 0 .../SQLite/{6 => 7}/update_userpassword.sql | 0 src/core/core.cpp | 10 +++ src/core/core.h | 14 +++ src/core/sql.qrc | 86 ++++++++++--------- src/core/sqlitestorage.cpp | 31 ++++++- src/core/sqlitestorage.h | 2 + src/core/storage.h | 15 ++++ version.inc | 4 +- 48 files changed, 125 insertions(+), 49 deletions(-) delete mode 100644 src/core/SQL/SQLite/6/setup_999_version.sql rename src/core/SQL/SQLite/{6 => 7}/delete_backlog_by_uid.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/delete_backlog_for_network.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/delete_buffers_by_uid.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/delete_buffers_for_network.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/delete_ircservers_for_network.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/delete_network.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/delete_networks_by_uid.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/delete_quasseluser.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/insert_buffer.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/insert_message.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/insert_network.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/insert_quasseluser.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/insert_sender.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/insert_server.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/select_authuser.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/select_bufferByName.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/select_buffers.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/select_lastMessage.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/select_messageRange.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/select_messages.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/select_messagesOffset.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/select_messagesSince.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/select_messagesSinceOffset.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/select_networkExists.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/select_networks_for_user.sql (52%) rename src/core/SQL/SQLite/{6 => 7}/select_servers_for_network.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/select_userid.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/setup_000_quasseluser.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/setup_010_sender.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/setup_020_network.sql (87%) rename src/core/SQL/SQLite/{6 => 7}/setup_030_buffer.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/setup_040_buffer_idx.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/setup_050_buffer_cname_idx.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/setup_060_backlog.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/setup_070_coreinfo.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/setup_080_ircservers.sql (100%) create mode 100644 src/core/SQL/SQLite/7/setup_999_version.sql rename src/core/SQL/SQLite/{6 => 7}/update_network.sql (86%) rename src/core/SQL/SQLite/{6 => 7}/update_username.sql (100%) rename src/core/SQL/SQLite/{6 => 7}/update_userpassword.sql (100%) diff --git a/src/core/SQL/SQLite/6/setup_999_version.sql b/src/core/SQL/SQLite/6/setup_999_version.sql deleted file mode 100644 index 8598df24..00000000 --- a/src/core/SQL/SQLite/6/setup_999_version.sql +++ /dev/null @@ -1 +0,0 @@ -INSERT INTO coreinfo (key, value) VALUES ('schemaversion', '6') diff --git a/src/core/SQL/SQLite/6/delete_backlog_by_uid.sql b/src/core/SQL/SQLite/7/delete_backlog_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/6/delete_backlog_by_uid.sql rename to src/core/SQL/SQLite/7/delete_backlog_by_uid.sql diff --git a/src/core/SQL/SQLite/6/delete_backlog_for_network.sql b/src/core/SQL/SQLite/7/delete_backlog_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/6/delete_backlog_for_network.sql rename to src/core/SQL/SQLite/7/delete_backlog_for_network.sql diff --git a/src/core/SQL/SQLite/6/delete_buffers_by_uid.sql b/src/core/SQL/SQLite/7/delete_buffers_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/6/delete_buffers_by_uid.sql rename to src/core/SQL/SQLite/7/delete_buffers_by_uid.sql diff --git a/src/core/SQL/SQLite/6/delete_buffers_for_network.sql b/src/core/SQL/SQLite/7/delete_buffers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/6/delete_buffers_for_network.sql rename to src/core/SQL/SQLite/7/delete_buffers_for_network.sql diff --git a/src/core/SQL/SQLite/6/delete_ircservers_for_network.sql b/src/core/SQL/SQLite/7/delete_ircservers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/6/delete_ircservers_for_network.sql rename to src/core/SQL/SQLite/7/delete_ircservers_for_network.sql diff --git a/src/core/SQL/SQLite/6/delete_network.sql b/src/core/SQL/SQLite/7/delete_network.sql similarity index 100% rename from src/core/SQL/SQLite/6/delete_network.sql rename to src/core/SQL/SQLite/7/delete_network.sql diff --git a/src/core/SQL/SQLite/6/delete_networks_by_uid.sql b/src/core/SQL/SQLite/7/delete_networks_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/6/delete_networks_by_uid.sql rename to src/core/SQL/SQLite/7/delete_networks_by_uid.sql diff --git a/src/core/SQL/SQLite/6/delete_quasseluser.sql b/src/core/SQL/SQLite/7/delete_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/6/delete_quasseluser.sql rename to src/core/SQL/SQLite/7/delete_quasseluser.sql diff --git a/src/core/SQL/SQLite/6/insert_buffer.sql b/src/core/SQL/SQLite/7/insert_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/6/insert_buffer.sql rename to src/core/SQL/SQLite/7/insert_buffer.sql diff --git a/src/core/SQL/SQLite/6/insert_message.sql b/src/core/SQL/SQLite/7/insert_message.sql similarity index 100% rename from src/core/SQL/SQLite/6/insert_message.sql rename to src/core/SQL/SQLite/7/insert_message.sql diff --git a/src/core/SQL/SQLite/6/insert_network.sql b/src/core/SQL/SQLite/7/insert_network.sql similarity index 100% rename from src/core/SQL/SQLite/6/insert_network.sql rename to src/core/SQL/SQLite/7/insert_network.sql diff --git a/src/core/SQL/SQLite/6/insert_quasseluser.sql b/src/core/SQL/SQLite/7/insert_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/6/insert_quasseluser.sql rename to src/core/SQL/SQLite/7/insert_quasseluser.sql diff --git a/src/core/SQL/SQLite/6/insert_sender.sql b/src/core/SQL/SQLite/7/insert_sender.sql similarity index 100% rename from src/core/SQL/SQLite/6/insert_sender.sql rename to src/core/SQL/SQLite/7/insert_sender.sql diff --git a/src/core/SQL/SQLite/6/insert_server.sql b/src/core/SQL/SQLite/7/insert_server.sql similarity index 100% rename from src/core/SQL/SQLite/6/insert_server.sql rename to src/core/SQL/SQLite/7/insert_server.sql diff --git a/src/core/SQL/SQLite/6/select_authuser.sql b/src/core/SQL/SQLite/7/select_authuser.sql similarity index 100% rename from src/core/SQL/SQLite/6/select_authuser.sql rename to src/core/SQL/SQLite/7/select_authuser.sql diff --git a/src/core/SQL/SQLite/6/select_bufferByName.sql b/src/core/SQL/SQLite/7/select_bufferByName.sql similarity index 100% rename from src/core/SQL/SQLite/6/select_bufferByName.sql rename to src/core/SQL/SQLite/7/select_bufferByName.sql diff --git a/src/core/SQL/SQLite/6/select_buffers.sql b/src/core/SQL/SQLite/7/select_buffers.sql similarity index 100% rename from src/core/SQL/SQLite/6/select_buffers.sql rename to src/core/SQL/SQLite/7/select_buffers.sql diff --git a/src/core/SQL/SQLite/6/select_lastMessage.sql b/src/core/SQL/SQLite/7/select_lastMessage.sql similarity index 100% rename from src/core/SQL/SQLite/6/select_lastMessage.sql rename to src/core/SQL/SQLite/7/select_lastMessage.sql diff --git a/src/core/SQL/SQLite/6/select_messageRange.sql b/src/core/SQL/SQLite/7/select_messageRange.sql similarity index 100% rename from src/core/SQL/SQLite/6/select_messageRange.sql rename to src/core/SQL/SQLite/7/select_messageRange.sql diff --git a/src/core/SQL/SQLite/6/select_messages.sql b/src/core/SQL/SQLite/7/select_messages.sql similarity index 100% rename from src/core/SQL/SQLite/6/select_messages.sql rename to src/core/SQL/SQLite/7/select_messages.sql diff --git a/src/core/SQL/SQLite/6/select_messagesOffset.sql b/src/core/SQL/SQLite/7/select_messagesOffset.sql similarity index 100% rename from src/core/SQL/SQLite/6/select_messagesOffset.sql rename to src/core/SQL/SQLite/7/select_messagesOffset.sql diff --git a/src/core/SQL/SQLite/6/select_messagesSince.sql b/src/core/SQL/SQLite/7/select_messagesSince.sql similarity index 100% rename from src/core/SQL/SQLite/6/select_messagesSince.sql rename to src/core/SQL/SQLite/7/select_messagesSince.sql diff --git a/src/core/SQL/SQLite/6/select_messagesSinceOffset.sql b/src/core/SQL/SQLite/7/select_messagesSinceOffset.sql similarity index 100% rename from src/core/SQL/SQLite/6/select_messagesSinceOffset.sql rename to src/core/SQL/SQLite/7/select_messagesSinceOffset.sql diff --git a/src/core/SQL/SQLite/6/select_networkExists.sql b/src/core/SQL/SQLite/7/select_networkExists.sql similarity index 100% rename from src/core/SQL/SQLite/6/select_networkExists.sql rename to src/core/SQL/SQLite/7/select_networkExists.sql diff --git a/src/core/SQL/SQLite/6/select_networks_for_user.sql b/src/core/SQL/SQLite/7/select_networks_for_user.sql similarity index 52% rename from src/core/SQL/SQLite/6/select_networks_for_user.sql rename to src/core/SQL/SQLite/7/select_networks_for_user.sql index ff6d801e..08855c93 100644 --- a/src/core/SQL/SQLite/6/select_networks_for_user.sql +++ b/src/core/SQL/SQLite/7/select_networks_for_user.sql @@ -1,5 +1,5 @@ -SELECT networkid, networkname, identityid, usecustomencoding, encodingcodec, decodingcodec, +SELECT networkid, networkname, identityid, servercodec, encodingcodec, decodingcodec, userandomserver, perform, useautoidentify, autoidentifyservice, autoidentifypassword, - useautoreconnect, autoreconnectinterval, autoreconnectretries, rejoinchannels + useautoreconnect, autoreconnectinterval, autoreconnectretries, unlimitedconnectretries, rejoinchannels FROM network WHERE userid = :userid \ No newline at end of file diff --git a/src/core/SQL/SQLite/6/select_servers_for_network.sql b/src/core/SQL/SQLite/7/select_servers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/6/select_servers_for_network.sql rename to src/core/SQL/SQLite/7/select_servers_for_network.sql diff --git a/src/core/SQL/SQLite/6/select_userid.sql b/src/core/SQL/SQLite/7/select_userid.sql similarity index 100% rename from src/core/SQL/SQLite/6/select_userid.sql rename to src/core/SQL/SQLite/7/select_userid.sql diff --git a/src/core/SQL/SQLite/6/setup_000_quasseluser.sql b/src/core/SQL/SQLite/7/setup_000_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/6/setup_000_quasseluser.sql rename to src/core/SQL/SQLite/7/setup_000_quasseluser.sql diff --git a/src/core/SQL/SQLite/6/setup_010_sender.sql b/src/core/SQL/SQLite/7/setup_010_sender.sql similarity index 100% rename from src/core/SQL/SQLite/6/setup_010_sender.sql rename to src/core/SQL/SQLite/7/setup_010_sender.sql diff --git a/src/core/SQL/SQLite/6/setup_020_network.sql b/src/core/SQL/SQLite/7/setup_020_network.sql similarity index 87% rename from src/core/SQL/SQLite/6/setup_020_network.sql rename to src/core/SQL/SQLite/7/setup_020_network.sql index 33a6fb81..1043576e 100644 --- a/src/core/SQL/SQLite/6/setup_020_network.sql +++ b/src/core/SQL/SQLite/7/setup_020_network.sql @@ -3,9 +3,9 @@ CREATE TABLE network ( userid INTEGER NOT NULL, networkname TEXT NOT NULL, identityid INTEGER NOT NULL DEFAULT 1, - usecustomencoding INTEGER NOT NULL DEFAULT 0, -- BOOL encodingcodec TEXT NOT NULL DEFAULT "ISO-8859-15", decodingcodec TEXT NOT NULL DEFAULT "ISO-8859-15", + servercodec TEXT NOT NULL DEFAULT "", userandomserver INTEGER NOT NULL DEFAULT 0, -- BOOL perform TEXT, useautoidentify INTEGER NOT NULL DEFAULT 0, -- BOOL @@ -14,6 +14,7 @@ CREATE TABLE network ( useautoreconnect INTEGER NOT NULL DEFAULT 0, -- BOOL autoreconnectinterval INTEGER NOT NULL DEFAULT 0, autoreconnectretries INTEGER NOT NULL DEFAULT 0, + unlimitedconnectretries INTEGER NOT NULL DEFAULT 0, -- BOOL rejoinchannels INTEGER NOT NULL DEFAULT 0, -- BOOL UNIQUE (userid, networkname) ) diff --git a/src/core/SQL/SQLite/6/setup_030_buffer.sql b/src/core/SQL/SQLite/7/setup_030_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/6/setup_030_buffer.sql rename to src/core/SQL/SQLite/7/setup_030_buffer.sql diff --git a/src/core/SQL/SQLite/6/setup_040_buffer_idx.sql b/src/core/SQL/SQLite/7/setup_040_buffer_idx.sql similarity index 100% rename from src/core/SQL/SQLite/6/setup_040_buffer_idx.sql rename to src/core/SQL/SQLite/7/setup_040_buffer_idx.sql diff --git a/src/core/SQL/SQLite/6/setup_050_buffer_cname_idx.sql b/src/core/SQL/SQLite/7/setup_050_buffer_cname_idx.sql similarity index 100% rename from src/core/SQL/SQLite/6/setup_050_buffer_cname_idx.sql rename to src/core/SQL/SQLite/7/setup_050_buffer_cname_idx.sql diff --git a/src/core/SQL/SQLite/6/setup_060_backlog.sql b/src/core/SQL/SQLite/7/setup_060_backlog.sql similarity index 100% rename from src/core/SQL/SQLite/6/setup_060_backlog.sql rename to src/core/SQL/SQLite/7/setup_060_backlog.sql diff --git a/src/core/SQL/SQLite/6/setup_070_coreinfo.sql b/src/core/SQL/SQLite/7/setup_070_coreinfo.sql similarity index 100% rename from src/core/SQL/SQLite/6/setup_070_coreinfo.sql rename to src/core/SQL/SQLite/7/setup_070_coreinfo.sql diff --git a/src/core/SQL/SQLite/6/setup_080_ircservers.sql b/src/core/SQL/SQLite/7/setup_080_ircservers.sql similarity index 100% rename from src/core/SQL/SQLite/6/setup_080_ircservers.sql rename to src/core/SQL/SQLite/7/setup_080_ircservers.sql diff --git a/src/core/SQL/SQLite/7/setup_999_version.sql b/src/core/SQL/SQLite/7/setup_999_version.sql new file mode 100644 index 00000000..e7272de6 --- /dev/null +++ b/src/core/SQL/SQLite/7/setup_999_version.sql @@ -0,0 +1 @@ +INSERT INTO coreinfo (key, value) VALUES ('schemaversion', '7') diff --git a/src/core/SQL/SQLite/6/update_network.sql b/src/core/SQL/SQLite/7/update_network.sql similarity index 86% rename from src/core/SQL/SQLite/6/update_network.sql rename to src/core/SQL/SQLite/7/update_network.sql index 41c0da3a..8d5a4628 100644 --- a/src/core/SQL/SQLite/6/update_network.sql +++ b/src/core/SQL/SQLite/7/update_network.sql @@ -1,7 +1,7 @@ UPDATE network SET networkname = :networkname, identityid = :identityid, -usecustomencoding = :usecustomencoding, +servercodec = :servercodec, encodingcodec = :encodingcodec, decodingcodec = :decodingcodec, userandomserver = :userandomserver, @@ -12,5 +12,6 @@ autoidentifypassword = :autoidentifypassword, useautoreconnect = :useautoreconnect, autoreconnectinterval = :autoreconnectinterval, autoreconnectretries = :autoreconnectretries, +unlimitedconnectretries = :unlimitedconnectretries, rejoinchannels = :rejoinchannels WHERE networkid = :networkid diff --git a/src/core/SQL/SQLite/6/update_username.sql b/src/core/SQL/SQLite/7/update_username.sql similarity index 100% rename from src/core/SQL/SQLite/6/update_username.sql rename to src/core/SQL/SQLite/7/update_username.sql diff --git a/src/core/SQL/SQLite/6/update_userpassword.sql b/src/core/SQL/SQLite/7/update_userpassword.sql similarity index 100% rename from src/core/SQL/SQLite/6/update_userpassword.sql rename to src/core/SQL/SQLite/7/update_userpassword.sql diff --git a/src/core/core.cpp b/src/core/core.cpp index 69f34c39..c06ca6d0 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -265,6 +265,16 @@ QList Core::requestBuffers(UserId user, QDateTime since) { return instance()->storage->requestBuffers(user, since); } +void Core::setBufferLastSeen(UserId user, const BufferId &bufferId, const QDateTime &seenDate) { + QMutexLocker locker(&mutex); + return instance()->storage->setBufferLastSeen(user, bufferId, seenDate); +} + +QHash Core::bufferLastSeenDates(UserId user) { + QMutexLocker locker(&mutex); + return instance()->storage->bufferLastSeenDates(user); +} + /*** Network Management ***/ bool Core::startListening(uint port) { diff --git a/src/core/core.h b/src/core/core.h index 67b3a553..0cba29eb 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -158,6 +158,20 @@ class Core : public QObject { */ static QList requestBuffers(UserId user, QDateTime since = QDateTime()); + //! Update the LastSeenDate for a Buffer + /** This Method is used to make the LastSeenDate of a Buffer persistent + * \param user The Owner of that Buffer + * \param bufferId The buffer id + * \param seenDate Time the Buffer has been visited the last time + */ + static void setBufferLastSeen(UserId user, const BufferId &bufferId, const QDateTime &seenDate); + + //! Get a Hash of all last seen dates. + /** This Method is called when the Quassel Core is started to restore the lastSeenDates + * \param user The Owner of the buffers + */ + static QHash bufferLastSeenDates(UserId user); + public slots: //! Make storage data persistent /** \note This method is threadsafe. diff --git a/src/core/sql.qrc b/src/core/sql.qrc index 023eaffc..b2ce8a42 100644 --- a/src/core/sql.qrc +++ b/src/core/sql.qrc @@ -20,46 +20,6 @@ ./SQL/SQLite/5/upgrade_030_drop_oldnetworktable.sql ./SQL/SQLite/5/upgrade_180_create_ircservers.sql ./SQL/SQLite/5/upgrade_999_update_schemaversion.sql - ./SQL/SQLite/6/delete_backlog_by_uid.sql - ./SQL/SQLite/6/delete_backlog_for_network.sql - ./SQL/SQLite/6/delete_buffers_by_uid.sql - ./SQL/SQLite/6/delete_buffers_for_network.sql - ./SQL/SQLite/6/delete_ircservers_for_network.sql - ./SQL/SQLite/6/delete_network.sql - ./SQL/SQLite/6/delete_networks_by_uid.sql - ./SQL/SQLite/6/delete_quasseluser.sql - ./SQL/SQLite/6/insert_buffer.sql - ./SQL/SQLite/6/insert_message.sql - ./SQL/SQLite/6/insert_network.sql - ./SQL/SQLite/6/insert_quasseluser.sql - ./SQL/SQLite/6/insert_sender.sql - ./SQL/SQLite/6/insert_server.sql - ./SQL/SQLite/6/select_authuser.sql - ./SQL/SQLite/6/select_bufferByName.sql - ./SQL/SQLite/6/select_buffers.sql - ./SQL/SQLite/6/select_lastMessage.sql - ./SQL/SQLite/6/select_messageRange.sql - ./SQL/SQLite/6/select_messages.sql - ./SQL/SQLite/6/select_messagesOffset.sql - ./SQL/SQLite/6/select_messagesSince.sql - ./SQL/SQLite/6/select_messagesSinceOffset.sql - ./SQL/SQLite/6/select_networkExists.sql - ./SQL/SQLite/6/select_networks_for_user.sql - ./SQL/SQLite/6/select_servers_for_network.sql - ./SQL/SQLite/6/select_userid.sql - ./SQL/SQLite/6/setup_000_quasseluser.sql - ./SQL/SQLite/6/setup_010_sender.sql - ./SQL/SQLite/6/setup_020_network.sql - ./SQL/SQLite/6/setup_030_buffer.sql - ./SQL/SQLite/6/setup_040_buffer_idx.sql - ./SQL/SQLite/6/setup_050_buffer_cname_idx.sql - ./SQL/SQLite/6/setup_060_backlog.sql - ./SQL/SQLite/6/setup_070_coreinfo.sql - ./SQL/SQLite/6/setup_080_ircservers.sql - ./SQL/SQLite/6/setup_999_version.sql - ./SQL/SQLite/6/update_network.sql - ./SQL/SQLite/6/update_username.sql - ./SQL/SQLite/6/update_userpassword.sql ./SQL/SQLite/6/upgrade_000_alter_buffertable.sql ./SQL/SQLite/6/upgrade_010_set_statusbuffertype.sql ./SQL/SQLite/6/upgrade_020_set_channelbuffertype.sql @@ -78,5 +38,51 @@ ./SQL/SQLite/6/upgrade_150_update_msgtype.sql ./SQL/SQLite/6/upgrade_160_update_msgtype.sql ./SQL/SQLite/6/upgrade_999_version.sql + ./SQL/SQLite/7/delete_backlog_by_uid.sql + ./SQL/SQLite/7/delete_backlog_for_network.sql + ./SQL/SQLite/7/delete_buffers_by_uid.sql + ./SQL/SQLite/7/delete_buffers_for_network.sql + ./SQL/SQLite/7/delete_ircservers_for_network.sql + ./SQL/SQLite/7/delete_network.sql + ./SQL/SQLite/7/delete_networks_by_uid.sql + ./SQL/SQLite/7/delete_quasseluser.sql + ./SQL/SQLite/7/insert_buffer.sql + ./SQL/SQLite/7/insert_message.sql + ./SQL/SQLite/7/insert_network.sql + ./SQL/SQLite/7/insert_quasseluser.sql + ./SQL/SQLite/7/insert_sender.sql + ./SQL/SQLite/7/insert_server.sql + ./SQL/SQLite/7/select_authuser.sql + ./SQL/SQLite/7/select_bufferByName.sql + ./SQL/SQLite/7/select_buffers.sql + ./SQL/SQLite/7/select_lastMessage.sql + ./SQL/SQLite/7/select_messageRange.sql + ./SQL/SQLite/7/select_messages.sql + ./SQL/SQLite/7/select_messagesOffset.sql + ./SQL/SQLite/7/select_messagesSince.sql + ./SQL/SQLite/7/select_messagesSinceOffset.sql + ./SQL/SQLite/7/select_networkExists.sql + ./SQL/SQLite/7/select_networks_for_user.sql + ./SQL/SQLite/7/select_servers_for_network.sql + ./SQL/SQLite/7/select_userid.sql + ./SQL/SQLite/7/setup_000_quasseluser.sql + ./SQL/SQLite/7/setup_010_sender.sql + ./SQL/SQLite/7/setup_020_network.sql + ./SQL/SQLite/7/setup_030_buffer.sql + ./SQL/SQLite/7/setup_040_buffer_idx.sql + ./SQL/SQLite/7/setup_050_buffer_cname_idx.sql + ./SQL/SQLite/7/setup_060_backlog.sql + ./SQL/SQLite/7/setup_070_coreinfo.sql + ./SQL/SQLite/7/setup_080_ircservers.sql + ./SQL/SQLite/7/setup_999_version.sql + ./SQL/SQLite/7/update_network.sql + ./SQL/SQLite/7/update_username.sql + ./SQL/SQLite/7/update_userpassword.sql + ./SQL/SQLite/7/upgrade_000_rename_networktable.sql + ./SQL/SQLite/7/upgrade_010_create_newnetworktable.sql + ./SQL/SQLite/7/upgrade_020_copy_networktable.sql + ./SQL/SQLite/7/upgrade_030_drop_oldnetworktable.sql + ./SQL/SQLite/7/upgrade_040_alter_buffer_add_lastseen.sql + ./SQL/SQLite/7/upgrade_999_version.sql diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 6ca6c4e4..507acee5 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -169,6 +169,7 @@ bool SqliteStorage::updateNetwork(UserId user, const NetworkInfo &info) { updateQuery.bindValue(":usecustomencoding", info.useCustomEncodings ? 1 : 0); updateQuery.bindValue(":encodingcodec", QString(info.codecForEncoding)); updateQuery.bindValue(":decodingcodec", QString(info.codecForDecoding)); + updateQuery.bindValue(":servercodec", QString(info.codecForServer)); updateQuery.bindValue(":userandomserver", info.useRandomServer ? 1 : 0); updateQuery.bindValue(":perform", info.perform.join("\n")); updateQuery.bindValue(":useautoidentify", info.useAutoIdentify ? 1 : 0); @@ -177,6 +178,7 @@ bool SqliteStorage::updateNetwork(UserId user, const NetworkInfo &info) { updateQuery.bindValue(":useautoreconnect", info.useAutoReconnect ? 1 : 0); updateQuery.bindValue(":autoreconnectinterval", info.autoReconnectInterval); updateQuery.bindValue(":autoreconnectretries", info.autoReconnectRetries); + updateQuery.bindValue(":unlimitedconnectretries", info.unlimitedReconnectRetries ? 1 : 0); updateQuery.bindValue(":rejoinchannels", info.rejoinChannels ? 1 : 0); updateQuery.bindValue(":networkid", info.networkId.toInt()); updateQuery.exec(); @@ -285,7 +287,7 @@ QList SqliteStorage::networks(UserId user) { net.networkId = networksQuery.value(0).toInt(); net.networkName = networksQuery.value(1).toString(); net.identity = networksQuery.value(2).toInt(); - net.useCustomEncodings = networksQuery.value(3).toInt() == 1 ? true : false; + net.codecForServer = networksQuery.value(3).toString().toAscii(); net.codecForEncoding = networksQuery.value(4).toString().toAscii(); net.codecForDecoding = networksQuery.value(5).toString().toAscii(); net.useRandomServer = networksQuery.value(6).toInt() == 1 ? true : false; @@ -296,7 +298,8 @@ QList SqliteStorage::networks(UserId user) { net.useAutoReconnect = networksQuery.value(11).toInt() == 1 ? true : false; net.autoReconnectInterval = networksQuery.value(12).toUInt(); net.autoReconnectRetries = networksQuery.value(13).toInt(); - net.rejoinChannels = networksQuery.value(14).toInt() == 1 ? true : false; + net.unlimitedReconnectRetries = networksQuery.value(14).toInt() == 1 ? true : false; + net.rejoinChannels = networksQuery.value(15).toInt() == 1 ? true : false; serversQuery.bindValue(":networkid", net.networkId.toInt()); serversQuery.exec(); @@ -406,6 +409,30 @@ QList SqliteStorage::requestBuffers(UserId user, QDateTime since) { return bufferlist; } +void SqliteStorage::setBufferLastSeen(UserId user, const BufferId &bufferId, const QDateTime &seenDate) { + QSqlQuery *query = cachedQuery("update_buffer_lastseen"); + query->bindValue(":userid", user.toInt()); + query->bindValue(":bufferid", bufferId.toInt()); + query->bindValue(":lastseen", seenDate.toTime_t()); + query->exec(); + watchQuery(query); +} + +QHash SqliteStorage::bufferLastSeenDates(UserId user) { + QHash lastSeenHash; + QSqlQuery query(logDb()); + query.prepare(queryString("select_buffer_lastseen_dates")); + query.bindValue(":userid", user.toInt()); + query.exec(); + if(!watchQuery(&query)) + return lastSeenHash; + + while(query.next()) { + lastSeenHash[query.value(0).toInt()] = QDateTime::fromTime_t(query.value(1).toUInt()); + } + return lastSeenHash; +} + MsgId SqliteStorage::logMessage(Message msg) { QSqlQuery *logMessageQuery = cachedQuery("insert_message"); logMessageQuery->bindValue(":time", msg.timestamp().toTime_t()); diff --git a/src/core/sqlitestorage.h b/src/core/sqlitestorage.h index 253d3eab..b7db876f 100644 --- a/src/core/sqlitestorage.h +++ b/src/core/sqlitestorage.h @@ -60,6 +60,8 @@ public slots: /* Buffer handling */ virtual BufferInfo getBufferInfo(UserId user, const NetworkId &networkId, BufferInfo::Type type, const QString &buffer = ""); virtual QList requestBuffers(UserId user, QDateTime since = QDateTime()); + virtual void setBufferLastSeen(UserId user, const BufferId &bufferId, const QDateTime &seenDate); + virtual QHash bufferLastSeenDates(UserId user); /* Message handling */ diff --git a/src/core/storage.h b/src/core/storage.h index 84d77556..c7444b11 100644 --- a/src/core/storage.h +++ b/src/core/storage.h @@ -170,6 +170,21 @@ class Storage : public QObject { */ virtual QList requestBuffers(UserId user, QDateTime since = QDateTime()) = 0; + //! Update the LastSeenDate for a Buffer + /** This Method is used to make the LastSeenDate of a Buffer persistent + * \param user The Owner of that Buffer + * \param bufferId The buffer id + * \param seenDate Time the Buffer has been visited the last time + */ + virtual void setBufferLastSeen(UserId user, const BufferId &bufferId, const QDateTime &seenDate) = 0; + + //! Get a Hash of all last seen dates. + /** This Method is called when the Quassel Core is started to restore the lastSeenDates + * \param user The Owner of the buffers + */ + virtual QHash bufferLastSeenDates(UserId user) = 0; + + /* Message handling */ //! Store a Message in the backlog. diff --git a/version.inc b/version.inc index 78be20c3..2a71fa91 100644 --- a/version.inc +++ b/version.inc @@ -4,8 +4,8 @@ { using namespace Global; quasselVersion = "0.2.0-pre"; - quasselDate = "2008-02-13"; - quasselBuild = 519; + quasselDate = "2008-02-14"; + quasselBuild = 520; //! Minimum client build number the core needs clientBuildNeeded = 519; -- 2.20.1