From 9f9d207ecf28dd5470ecef9d4076a3f447662a20 Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Sun, 9 Mar 2008 15:01:59 +0000 Subject: [PATCH] switching from timestamps to msgid regarding lastseen states --- src/client/buffer.cpp | 15 ++- src/client/buffer.h | 6 +- src/client/client.cpp | 13 +- src/client/client.h | 4 +- src/common/buffersyncer.cpp | 50 ++++---- src/common/buffersyncer.h | 43 ++++--- .../{9 => 10}/delete_backlog_by_uid.sql | 0 .../{9 => 10}/delete_backlog_for_buffer.sql | 0 .../{9 => 10}/delete_backlog_for_network.sql | 0 .../{9 => 10}/delete_buffer_for_bufferid.sql | 0 .../{9 => 10}/delete_buffers_by_uid.sql | 0 .../{9 => 10}/delete_buffers_for_network.sql | 0 .../delete_ircservers_for_network.sql | 0 .../SQL/SQLite/{9 => 10}/delete_network.sql | 0 .../{9 => 10}/delete_networks_by_uid.sql | 0 .../SQLite/{9 => 10}/delete_quasseluser.sql | 0 .../SQL/SQLite/{9 => 10}/insert_buffer.sql | 0 .../SQL/SQLite/{9 => 10}/insert_message.sql | 0 .../SQL/SQLite/{9 => 10}/insert_network.sql | 0 .../SQLite/{9 => 10}/insert_quasseluser.sql | 0 .../SQL/SQLite/{9 => 10}/insert_sender.sql | 0 .../SQL/SQLite/{9 => 10}/insert_server.sql | 0 .../SQL/SQLite/{9 => 10}/select_authuser.sql | 0 .../SQLite/{9 => 10}/select_bufferByName.sql | 0 .../SQLite/{9 => 10}/select_bufferExists.sql | 0 .../SQLite/{9 => 10}/select_buffer_by_id.sql | 0 .../select_buffer_lastseen_messages.sql} | 2 +- .../SQL/SQLite/{9 => 10}/select_buffers.sql | 0 .../{9 => 10}/select_connected_networks.sql | 0 .../SQLite/{9 => 10}/select_messageRange.sql | 0 .../SQL/SQLite/{9 => 10}/select_messages.sql | 0 .../{9 => 10}/select_messagesOffset.sql | 0 .../SQLite/{9 => 10}/select_messagesSince.sql | 0 .../{9 => 10}/select_messagesSinceOffset.sql | 0 .../SQLite/{9 => 10}/select_networkExists.sql | 0 .../{9 => 10}/select_networks_for_user.sql | 0 .../{9 => 10}/select_persistent_channels.sql | 0 .../{9 => 10}/select_servers_for_network.sql | 0 .../SQL/SQLite/{9 => 10}/select_userid.sql | 0 .../{9 => 10}/setup_000_quasseluser.sql | 0 .../SQL/SQLite/{9 => 10}/setup_010_sender.sql | 0 .../SQLite/{9 => 10}/setup_020_network.sql | 0 .../SQL/SQLite/{9 => 10}/setup_030_buffer.sql | 2 +- .../SQLite/{9 => 10}/setup_040_buffer_idx.sql | 0 .../{9 => 10}/setup_050_buffer_cname_idx.sql | 0 .../SQLite/{9 => 10}/setup_060_backlog.sql | 0 .../SQLite/{9 => 10}/setup_070_coreinfo.sql | 0 .../SQLite/{9 => 10}/setup_080_ircservers.sql | 0 .../setup_090_create_backlog_idx.sql | 0 .../setup_100_create_backlog_idx2.sql | 0 .../{9 => 10}/setup_110_create_buffer_idx.sql | 0 src/core/SQL/SQLite/10/setup_999_version.sql | 1 + .../{9 => 10}/update_buffer_lastseen.sql | 2 +- .../SQLite/{9 => 10}/update_buffer_name.sql | 0 .../update_buffer_persistent_channel.sql | 0 .../update_buffer_set_channel_key.sql | 0 .../SQL/SQLite/{9 => 10}/update_network.sql | 0 .../{9 => 10}/update_network_connected.sql | 0 .../SQL/SQLite/{9 => 10}/update_username.sql | 0 .../SQLite/{9 => 10}/update_userpassword.sql | 0 .../SQLite/10/upgrade_000_switch_to_msgid.sql | 3 + .../10/upgrade_010_rename_buffer_table.sql | 1 + .../10/upgrade_020_create_buffer_table.sql | 12 ++ .../10/upgrade_030_copy_buffer_table.sql | 2 + .../10/upgrade_040_drop_buffer_old_table.sql | 1 + .../SQL/SQLite/10/upgrade_999_version.sql | 3 + src/core/SQL/SQLite/9/setup_999_version.sql | 1 - src/core/core.cpp | 8 +- src/core/core.h | 10 +- src/core/coresession.cpp | 12 +- src/core/coresession.h | 2 +- src/core/sql.qrc | 114 +++++++++--------- src/core/sqlitestorage.cpp | 12 +- src/core/sqlitestorage.h | 4 +- src/core/storage.h | 10 +- version.inc | 8 +- 76 files changed, 191 insertions(+), 150 deletions(-) rename src/core/SQL/SQLite/{9 => 10}/delete_backlog_by_uid.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/delete_backlog_for_buffer.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/delete_backlog_for_network.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/delete_buffer_for_bufferid.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/delete_buffers_by_uid.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/delete_buffers_for_network.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/delete_ircservers_for_network.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/delete_network.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/delete_networks_by_uid.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/delete_quasseluser.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/insert_buffer.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/insert_message.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/insert_network.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/insert_quasseluser.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/insert_sender.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/insert_server.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/select_authuser.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/select_bufferByName.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/select_bufferExists.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/select_buffer_by_id.sql (100%) rename src/core/SQL/SQLite/{9/select_buffer_lastseen_dates.sql => 10/select_buffer_lastseen_messages.sql} (53%) rename src/core/SQL/SQLite/{9 => 10}/select_buffers.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/select_connected_networks.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/select_messageRange.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/select_messages.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/select_messagesOffset.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/select_messagesSince.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/select_messagesSinceOffset.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/select_networkExists.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/select_networks_for_user.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/select_persistent_channels.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/select_servers_for_network.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/select_userid.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/setup_000_quasseluser.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/setup_010_sender.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/setup_020_network.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/setup_030_buffer.sql (88%) rename src/core/SQL/SQLite/{9 => 10}/setup_040_buffer_idx.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/setup_050_buffer_cname_idx.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/setup_060_backlog.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/setup_070_coreinfo.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/setup_080_ircservers.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/setup_090_create_backlog_idx.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/setup_100_create_backlog_idx2.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/setup_110_create_buffer_idx.sql (100%) create mode 100644 src/core/SQL/SQLite/10/setup_999_version.sql rename src/core/SQL/SQLite/{9 => 10}/update_buffer_lastseen.sql (63%) rename src/core/SQL/SQLite/{9 => 10}/update_buffer_name.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/update_buffer_persistent_channel.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/update_buffer_set_channel_key.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/update_network.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/update_network_connected.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/update_username.sql (100%) rename src/core/SQL/SQLite/{9 => 10}/update_userpassword.sql (100%) create mode 100644 src/core/SQL/SQLite/10/upgrade_000_switch_to_msgid.sql create mode 100644 src/core/SQL/SQLite/10/upgrade_010_rename_buffer_table.sql create mode 100644 src/core/SQL/SQLite/10/upgrade_020_create_buffer_table.sql create mode 100644 src/core/SQL/SQLite/10/upgrade_030_copy_buffer_table.sql create mode 100644 src/core/SQL/SQLite/10/upgrade_040_drop_buffer_old_table.sql create mode 100644 src/core/SQL/SQLite/10/upgrade_999_version.sql delete mode 100644 src/core/SQL/SQLite/9/setup_999_version.sql diff --git a/src/client/buffer.cpp b/src/client/buffer.cpp index 14de0d41..1fc9846f 100644 --- a/src/client/buffer.cpp +++ b/src/client/buffer.cpp @@ -75,13 +75,16 @@ void Buffer::setVisible(bool visible) { _isVisible = visible; setActivityLevel(NoActivity); if(!layoutedMsgs.count()) return; - setLastSeen(layoutedMsgs.last()->timestamp()); + setLastSeenMsg(layoutedMsgs.last()->msgId()); } -void Buffer::setLastSeen(const QDateTime &seen) { // qDebug() << "want to set lastSeen:" << bufferInfo() << seen << lastSeen(); - if(!lastSeen().isValid() || seen.isValid() && seen > lastSeen()) { //qDebug() << "setting:" << bufferInfo().bufferName() << seen; - _lastSeen = seen; - Client::setBufferLastSeen(bufferInfo().bufferId(), seen); +void Buffer::setLastSeenMsg(const MsgId &msgId) { + // qDebug() << "want to set lastSeen:" << bufferInfo() << seen << lastSeen(); + const MsgId oldLastSeen = lastSeenMsg(); + if(!oldLastSeen.isValid() || msgId.isValid() && msgId > oldLastSeen) { + //qDebug() << "setting:" << bufferInfo().bufferName() << seen; + _lastSeenMsg = msgId; + Client::setBufferLastSeenMsg(bufferInfo().bufferId(), msgId); //qDebug() << "setting lastSeen:" << bufferInfo() << lastSeen(); setActivityLevel(NoActivity); } @@ -102,7 +105,7 @@ void Buffer::updateActivityLevel(const Message &msg) { if(msg.flags() & Message::Self) // don't update activity for our own messages return; - if(lastSeen().isValid() && lastSeen() >= msg.timestamp()) + if(lastSeenMsg().isValid() && lastSeenMsg() >= msg.msgId()) return; ActivityLevel level = activityLevel() | OtherActivity; diff --git a/src/client/buffer.h b/src/client/buffer.h index def01bdd..afaa07f3 100644 --- a/src/client/buffer.h +++ b/src/client/buffer.h @@ -52,7 +52,7 @@ public: BufferInfo bufferInfo() const; QList contents() const; inline bool isVisible() const { return _isVisible; } - inline QDateTime lastSeen() const { return _lastSeen; } + inline MsgId lastSeenMsg() const { return _lastSeenMsg; } inline ActivityLevel activityLevel() const { return _activityLevel; } signals: @@ -65,13 +65,13 @@ public slots: void prependMsg(const Message &); bool layoutMsg(); void setVisible(bool visible); - void setLastSeen(const QDateTime &); + void setLastSeenMsg(const MsgId &msgId); void setActivityLevel(ActivityLevel level); private: BufferInfo _bufferInfo; bool _isVisible; - QDateTime _lastSeen; + MsgId _lastSeenMsg; ActivityLevel _activityLevel; QList layoutQueue; diff --git a/src/client/client.cpp b/src/client/client.cpp index 45797315..c90bcf6c 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -297,7 +297,7 @@ void Client::setSyncedToCore() { // create buffersyncer Q_ASSERT(!_bufferSyncer); _bufferSyncer = new BufferSyncer(this); - connect(bufferSyncer(), SIGNAL(lastSeenSet(BufferId, const QDateTime &)), this, SLOT(updateLastSeen(BufferId, const QDateTime &))); + connect(bufferSyncer(), SIGNAL(lastSeenMsgSet(BufferId, MsgId)), this, SLOT(updateLastSeenMsg(BufferId, MsgId))); connect(bufferSyncer(), SIGNAL(bufferRemoved(BufferId)), this, SLOT(bufferRemoved(BufferId))); connect(bufferSyncer(), SIGNAL(bufferRenamed(BufferId, QString)), this, SLOT(bufferRenamed(BufferId, QString))); signalProxy()->synchronize(bufferSyncer()); @@ -516,18 +516,19 @@ void Client::checkForHighlight(Message &msg) { } } -void Client::updateLastSeen(BufferId id, const QDateTime &lastSeen) { +void Client::updateLastSeenMsg(BufferId id, const MsgId &msgId) { Buffer *b = buffer(id); if(!b) { qWarning() << "Client::updateLastSeen(): Unknown buffer" << id; return; } - b->setLastSeen(lastSeen); + b->setLastSeenMsg(msgId); } -void Client::setBufferLastSeen(BufferId id, const QDateTime &lastSeen) { - if(!bufferSyncer()) return; - bufferSyncer()->requestSetLastSeen(id, lastSeen); +void Client::setBufferLastSeenMsg(BufferId id, const MsgId &msgId) { + if(!bufferSyncer()) + return; + bufferSyncer()->requestSetLastSeenMsg(id, msgId); } void Client::removeBuffer(BufferId id) { diff --git a/src/client/client.h b/src/client/client.h index 4d1bad6c..b51cc507 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -106,7 +106,7 @@ public: enum ClientMode { LocalCore, RemoteCore }; static void checkForHighlight(Message &msg); - static void setBufferLastSeen(BufferId id, const QDateTime &seen); // this is synced to core and other clients + static void setBufferLastSeenMsg(BufferId id, const MsgId &msgId); // this is synced to core and other clients static void removeBuffer(BufferId id); signals: @@ -170,7 +170,7 @@ private slots: void recvStatusMsg(QString network, QString message); void recvBacklogData(BufferInfo, QVariantList, bool); void updateBufferInfo(BufferInfo); - void updateLastSeen(BufferId id, const QDateTime &lastSeen); + void updateLastSeenMsg(BufferId id, const MsgId &msgId); void layoutMsg(); diff --git a/src/common/buffersyncer.cpp b/src/common/buffersyncer.cpp index d4c6918c..fe69db71 100644 --- a/src/common/buffersyncer.cpp +++ b/src/common/buffersyncer.cpp @@ -20,45 +20,53 @@ #include "buffersyncer.h" -BufferSyncer::BufferSyncer(QObject *parent) : SyncableObject(parent) { - - +BufferSyncer::BufferSyncer(QObject *parent) + : SyncableObject(parent) +{ } -QDateTime BufferSyncer::lastSeen(BufferId buffer) const { - if(_lastSeen.contains(buffer)) return _lastSeen[buffer]; - return QDateTime(); +MsgId BufferSyncer::lastSeenMsg(BufferId buffer) const { + if(_lastSeenMsg.contains(buffer)) + return _lastSeenMsg[buffer]; + return MsgId(); } -bool BufferSyncer::setLastSeen(BufferId buffer, const QDateTime &time) { - if(!time.isValid()) return false; - if(!lastSeen(buffer).isValid() || lastSeen(buffer) < time) { - _lastSeen[buffer] = time; - emit lastSeenSet(buffer, time); +bool BufferSyncer::setLastSeenMsg(BufferId buffer, const MsgId &msgId) { + if(!msgId.isValid()) + return false; + + const MsgId oldLastSeenMsg = lastSeenMsg(buffer); + if(!oldLastSeenMsg.isValid() || oldLastSeenMsg < msgId) { + _lastSeenMsg[buffer] = msgId; + emit lastSeenMsgSet(buffer, msgId); return true; } return false; } -QVariantList BufferSyncer::initLastSeen() const { +QVariantList BufferSyncer::initLastSeenMsg() const { QVariantList list; - foreach(BufferId id, _lastSeen.keys()) { - list << QVariant::fromValue(id) << _lastSeen[id]; + QHash::const_iterator iter = _lastSeenMsg.constBegin(); + while(iter != _lastSeenMsg.constEnd()) { + list << QVariant::fromValue(iter.key()) + << QVariant::fromValue(iter.value()); + iter++; } return list; } -void BufferSyncer::initSetLastSeen(const QVariantList &list) { - _lastSeen.clear(); +void BufferSyncer::initSetLastSeenMsg(const QVariantList &list) { + _lastSeenMsg.clear(); Q_ASSERT(list.count() % 2 == 0); for(int i = 0; i < list.count(); i += 2) { - setLastSeen(list[i].value(), list[i+1].toDateTime()); + setLastSeenMsg(list[i].value(), list[i+1].value()); } } -void BufferSyncer::requestSetLastSeen(BufferId buffer, const QDateTime &time) { - if(setLastSeen(buffer, time)) emit setLastSeenRequested(buffer, time); +void BufferSyncer::requestSetLastSeenMsg(BufferId buffer, const MsgId &msgId) { + if(setLastSeenMsg(buffer, msgId)) + emit setLastSeenMsgRequested(buffer, msgId); } @@ -67,8 +75,8 @@ void BufferSyncer::requestRemoveBuffer(BufferId buffer) { } void BufferSyncer::removeBuffer(BufferId buffer) { - if(_lastSeen.contains(buffer)) - _lastSeen.remove(buffer); + if(_lastSeenMsg.contains(buffer)) + _lastSeenMsg.remove(buffer); emit bufferRemoved(buffer); } diff --git a/src/common/buffersyncer.h b/src/common/buffersyncer.h index aa64118b..0ad8eaa0 100644 --- a/src/common/buffersyncer.h +++ b/src/common/buffersyncer.h @@ -21,40 +21,39 @@ #ifndef BUFFERSYNCER_H_ #define BUFFERSYNCER_H_ -#include - #include "syncableobject.h" #include "types.h" class BufferSyncer : public SyncableObject { Q_OBJECT - public: - explicit BufferSyncer(QObject *parent); +public: + explicit BufferSyncer(QObject *parent); + + MsgId lastSeenMsg(BufferId buffer) const; - QDateTime lastSeen(BufferId buffer) const; +public slots: + QVariantList initLastSeenMsg() const; + void initSetLastSeenMsg(const QVariantList &); - public slots: - QVariantList initLastSeen() const; - void initSetLastSeen(const QVariantList &); + void requestSetLastSeenMsg(BufferId buffer, const MsgId &msgId); + void requestRemoveBuffer(BufferId buffer); + void removeBuffer(BufferId buffer); + void renameBuffer(BufferId buffer, QString newName); - void requestSetLastSeen(BufferId buffer, const QDateTime &time); - void requestRemoveBuffer(BufferId buffer); - void removeBuffer(BufferId buffer); - void renameBuffer(BufferId buffer, QString newName); +signals: + void lastSeenMsgSet(BufferId buffer, const MsgId &msgId); + void setLastSeenMsgRequested(BufferId buffer, const MsgId &msgId); + void removeBufferRequested(BufferId buffer); + void bufferRemoved(BufferId buffer); + void bufferRenamed(BufferId buffer, QString newName); - signals: - void lastSeenSet(BufferId buffer, const QDateTime &time); - void setLastSeenRequested(BufferId buffer, const QDateTime &time); - void removeBufferRequested(BufferId buffer); - void bufferRemoved(BufferId buffer); - void bufferRenamed(BufferId buffer, QString newName); +private slots: + bool setLastSeenMsg(BufferId buffer, const MsgId &msgId); - private slots: - bool setLastSeen(BufferId buffer, const QDateTime &time); +private: + QHash _lastSeenMsg; - private: - QMap _lastSeen; }; #endif diff --git a/src/core/SQL/SQLite/9/delete_backlog_by_uid.sql b/src/core/SQL/SQLite/10/delete_backlog_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/9/delete_backlog_by_uid.sql rename to src/core/SQL/SQLite/10/delete_backlog_by_uid.sql diff --git a/src/core/SQL/SQLite/9/delete_backlog_for_buffer.sql b/src/core/SQL/SQLite/10/delete_backlog_for_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/9/delete_backlog_for_buffer.sql rename to src/core/SQL/SQLite/10/delete_backlog_for_buffer.sql diff --git a/src/core/SQL/SQLite/9/delete_backlog_for_network.sql b/src/core/SQL/SQLite/10/delete_backlog_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/9/delete_backlog_for_network.sql rename to src/core/SQL/SQLite/10/delete_backlog_for_network.sql diff --git a/src/core/SQL/SQLite/9/delete_buffer_for_bufferid.sql b/src/core/SQL/SQLite/10/delete_buffer_for_bufferid.sql similarity index 100% rename from src/core/SQL/SQLite/9/delete_buffer_for_bufferid.sql rename to src/core/SQL/SQLite/10/delete_buffer_for_bufferid.sql diff --git a/src/core/SQL/SQLite/9/delete_buffers_by_uid.sql b/src/core/SQL/SQLite/10/delete_buffers_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/9/delete_buffers_by_uid.sql rename to src/core/SQL/SQLite/10/delete_buffers_by_uid.sql diff --git a/src/core/SQL/SQLite/9/delete_buffers_for_network.sql b/src/core/SQL/SQLite/10/delete_buffers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/9/delete_buffers_for_network.sql rename to src/core/SQL/SQLite/10/delete_buffers_for_network.sql diff --git a/src/core/SQL/SQLite/9/delete_ircservers_for_network.sql b/src/core/SQL/SQLite/10/delete_ircservers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/9/delete_ircservers_for_network.sql rename to src/core/SQL/SQLite/10/delete_ircservers_for_network.sql diff --git a/src/core/SQL/SQLite/9/delete_network.sql b/src/core/SQL/SQLite/10/delete_network.sql similarity index 100% rename from src/core/SQL/SQLite/9/delete_network.sql rename to src/core/SQL/SQLite/10/delete_network.sql diff --git a/src/core/SQL/SQLite/9/delete_networks_by_uid.sql b/src/core/SQL/SQLite/10/delete_networks_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/9/delete_networks_by_uid.sql rename to src/core/SQL/SQLite/10/delete_networks_by_uid.sql diff --git a/src/core/SQL/SQLite/9/delete_quasseluser.sql b/src/core/SQL/SQLite/10/delete_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/9/delete_quasseluser.sql rename to src/core/SQL/SQLite/10/delete_quasseluser.sql diff --git a/src/core/SQL/SQLite/9/insert_buffer.sql b/src/core/SQL/SQLite/10/insert_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/9/insert_buffer.sql rename to src/core/SQL/SQLite/10/insert_buffer.sql diff --git a/src/core/SQL/SQLite/9/insert_message.sql b/src/core/SQL/SQLite/10/insert_message.sql similarity index 100% rename from src/core/SQL/SQLite/9/insert_message.sql rename to src/core/SQL/SQLite/10/insert_message.sql diff --git a/src/core/SQL/SQLite/9/insert_network.sql b/src/core/SQL/SQLite/10/insert_network.sql similarity index 100% rename from src/core/SQL/SQLite/9/insert_network.sql rename to src/core/SQL/SQLite/10/insert_network.sql diff --git a/src/core/SQL/SQLite/9/insert_quasseluser.sql b/src/core/SQL/SQLite/10/insert_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/9/insert_quasseluser.sql rename to src/core/SQL/SQLite/10/insert_quasseluser.sql diff --git a/src/core/SQL/SQLite/9/insert_sender.sql b/src/core/SQL/SQLite/10/insert_sender.sql similarity index 100% rename from src/core/SQL/SQLite/9/insert_sender.sql rename to src/core/SQL/SQLite/10/insert_sender.sql diff --git a/src/core/SQL/SQLite/9/insert_server.sql b/src/core/SQL/SQLite/10/insert_server.sql similarity index 100% rename from src/core/SQL/SQLite/9/insert_server.sql rename to src/core/SQL/SQLite/10/insert_server.sql diff --git a/src/core/SQL/SQLite/9/select_authuser.sql b/src/core/SQL/SQLite/10/select_authuser.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_authuser.sql rename to src/core/SQL/SQLite/10/select_authuser.sql diff --git a/src/core/SQL/SQLite/9/select_bufferByName.sql b/src/core/SQL/SQLite/10/select_bufferByName.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_bufferByName.sql rename to src/core/SQL/SQLite/10/select_bufferByName.sql diff --git a/src/core/SQL/SQLite/9/select_bufferExists.sql b/src/core/SQL/SQLite/10/select_bufferExists.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_bufferExists.sql rename to src/core/SQL/SQLite/10/select_bufferExists.sql diff --git a/src/core/SQL/SQLite/9/select_buffer_by_id.sql b/src/core/SQL/SQLite/10/select_buffer_by_id.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_buffer_by_id.sql rename to src/core/SQL/SQLite/10/select_buffer_by_id.sql diff --git a/src/core/SQL/SQLite/9/select_buffer_lastseen_dates.sql b/src/core/SQL/SQLite/10/select_buffer_lastseen_messages.sql similarity index 53% rename from src/core/SQL/SQLite/9/select_buffer_lastseen_dates.sql rename to src/core/SQL/SQLite/10/select_buffer_lastseen_messages.sql index 4e307a41..d3a0eccb 100644 --- a/src/core/SQL/SQLite/9/select_buffer_lastseen_dates.sql +++ b/src/core/SQL/SQLite/10/select_buffer_lastseen_messages.sql @@ -1,3 +1,3 @@ -SELECT bufferid, lastseen +SELECT bufferid, lastseenmsgid FROM buffer WHERE userid = :userid diff --git a/src/core/SQL/SQLite/9/select_buffers.sql b/src/core/SQL/SQLite/10/select_buffers.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_buffers.sql rename to src/core/SQL/SQLite/10/select_buffers.sql diff --git a/src/core/SQL/SQLite/9/select_connected_networks.sql b/src/core/SQL/SQLite/10/select_connected_networks.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_connected_networks.sql rename to src/core/SQL/SQLite/10/select_connected_networks.sql diff --git a/src/core/SQL/SQLite/9/select_messageRange.sql b/src/core/SQL/SQLite/10/select_messageRange.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_messageRange.sql rename to src/core/SQL/SQLite/10/select_messageRange.sql diff --git a/src/core/SQL/SQLite/9/select_messages.sql b/src/core/SQL/SQLite/10/select_messages.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_messages.sql rename to src/core/SQL/SQLite/10/select_messages.sql diff --git a/src/core/SQL/SQLite/9/select_messagesOffset.sql b/src/core/SQL/SQLite/10/select_messagesOffset.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_messagesOffset.sql rename to src/core/SQL/SQLite/10/select_messagesOffset.sql diff --git a/src/core/SQL/SQLite/9/select_messagesSince.sql b/src/core/SQL/SQLite/10/select_messagesSince.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_messagesSince.sql rename to src/core/SQL/SQLite/10/select_messagesSince.sql diff --git a/src/core/SQL/SQLite/9/select_messagesSinceOffset.sql b/src/core/SQL/SQLite/10/select_messagesSinceOffset.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_messagesSinceOffset.sql rename to src/core/SQL/SQLite/10/select_messagesSinceOffset.sql diff --git a/src/core/SQL/SQLite/9/select_networkExists.sql b/src/core/SQL/SQLite/10/select_networkExists.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_networkExists.sql rename to src/core/SQL/SQLite/10/select_networkExists.sql diff --git a/src/core/SQL/SQLite/9/select_networks_for_user.sql b/src/core/SQL/SQLite/10/select_networks_for_user.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_networks_for_user.sql rename to src/core/SQL/SQLite/10/select_networks_for_user.sql diff --git a/src/core/SQL/SQLite/9/select_persistent_channels.sql b/src/core/SQL/SQLite/10/select_persistent_channels.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_persistent_channels.sql rename to src/core/SQL/SQLite/10/select_persistent_channels.sql diff --git a/src/core/SQL/SQLite/9/select_servers_for_network.sql b/src/core/SQL/SQLite/10/select_servers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_servers_for_network.sql rename to src/core/SQL/SQLite/10/select_servers_for_network.sql diff --git a/src/core/SQL/SQLite/9/select_userid.sql b/src/core/SQL/SQLite/10/select_userid.sql similarity index 100% rename from src/core/SQL/SQLite/9/select_userid.sql rename to src/core/SQL/SQLite/10/select_userid.sql diff --git a/src/core/SQL/SQLite/9/setup_000_quasseluser.sql b/src/core/SQL/SQLite/10/setup_000_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/9/setup_000_quasseluser.sql rename to src/core/SQL/SQLite/10/setup_000_quasseluser.sql diff --git a/src/core/SQL/SQLite/9/setup_010_sender.sql b/src/core/SQL/SQLite/10/setup_010_sender.sql similarity index 100% rename from src/core/SQL/SQLite/9/setup_010_sender.sql rename to src/core/SQL/SQLite/10/setup_010_sender.sql diff --git a/src/core/SQL/SQLite/9/setup_020_network.sql b/src/core/SQL/SQLite/10/setup_020_network.sql similarity index 100% rename from src/core/SQL/SQLite/9/setup_020_network.sql rename to src/core/SQL/SQLite/10/setup_020_network.sql diff --git a/src/core/SQL/SQLite/9/setup_030_buffer.sql b/src/core/SQL/SQLite/10/setup_030_buffer.sql similarity index 88% rename from src/core/SQL/SQLite/9/setup_030_buffer.sql rename to src/core/SQL/SQLite/10/setup_030_buffer.sql index c1d8b153..fccc3827 100644 --- a/src/core/SQL/SQLite/9/setup_030_buffer.sql +++ b/src/core/SQL/SQLite/10/setup_030_buffer.sql @@ -6,7 +6,7 @@ CREATE TABLE buffer ( buffername TEXT NOT NULL, buffercname TEXT NOT NULL, -- CANONICAL BUFFER NAME (lowercase version) buffertype INTEGER NOT NULL DEFAULT 0, - lastseen INTEGER NOT NULL DEFAULT 0, + lastseenmsgid INTEGER NOT NULL DEFAULT 0, key TEXT, joined INTEGER NOT NULL DEFAULT 0 -- BOOL ) diff --git a/src/core/SQL/SQLite/9/setup_040_buffer_idx.sql b/src/core/SQL/SQLite/10/setup_040_buffer_idx.sql similarity index 100% rename from src/core/SQL/SQLite/9/setup_040_buffer_idx.sql rename to src/core/SQL/SQLite/10/setup_040_buffer_idx.sql diff --git a/src/core/SQL/SQLite/9/setup_050_buffer_cname_idx.sql b/src/core/SQL/SQLite/10/setup_050_buffer_cname_idx.sql similarity index 100% rename from src/core/SQL/SQLite/9/setup_050_buffer_cname_idx.sql rename to src/core/SQL/SQLite/10/setup_050_buffer_cname_idx.sql diff --git a/src/core/SQL/SQLite/9/setup_060_backlog.sql b/src/core/SQL/SQLite/10/setup_060_backlog.sql similarity index 100% rename from src/core/SQL/SQLite/9/setup_060_backlog.sql rename to src/core/SQL/SQLite/10/setup_060_backlog.sql diff --git a/src/core/SQL/SQLite/9/setup_070_coreinfo.sql b/src/core/SQL/SQLite/10/setup_070_coreinfo.sql similarity index 100% rename from src/core/SQL/SQLite/9/setup_070_coreinfo.sql rename to src/core/SQL/SQLite/10/setup_070_coreinfo.sql diff --git a/src/core/SQL/SQLite/9/setup_080_ircservers.sql b/src/core/SQL/SQLite/10/setup_080_ircservers.sql similarity index 100% rename from src/core/SQL/SQLite/9/setup_080_ircservers.sql rename to src/core/SQL/SQLite/10/setup_080_ircservers.sql diff --git a/src/core/SQL/SQLite/9/setup_090_create_backlog_idx.sql b/src/core/SQL/SQLite/10/setup_090_create_backlog_idx.sql similarity index 100% rename from src/core/SQL/SQLite/9/setup_090_create_backlog_idx.sql rename to src/core/SQL/SQLite/10/setup_090_create_backlog_idx.sql diff --git a/src/core/SQL/SQLite/9/setup_100_create_backlog_idx2.sql b/src/core/SQL/SQLite/10/setup_100_create_backlog_idx2.sql similarity index 100% rename from src/core/SQL/SQLite/9/setup_100_create_backlog_idx2.sql rename to src/core/SQL/SQLite/10/setup_100_create_backlog_idx2.sql diff --git a/src/core/SQL/SQLite/9/setup_110_create_buffer_idx.sql b/src/core/SQL/SQLite/10/setup_110_create_buffer_idx.sql similarity index 100% rename from src/core/SQL/SQLite/9/setup_110_create_buffer_idx.sql rename to src/core/SQL/SQLite/10/setup_110_create_buffer_idx.sql diff --git a/src/core/SQL/SQLite/10/setup_999_version.sql b/src/core/SQL/SQLite/10/setup_999_version.sql new file mode 100644 index 00000000..205c878c --- /dev/null +++ b/src/core/SQL/SQLite/10/setup_999_version.sql @@ -0,0 +1 @@ +INSERT INTO coreinfo (key, value) VALUES ('schemaversion', 10) diff --git a/src/core/SQL/SQLite/9/update_buffer_lastseen.sql b/src/core/SQL/SQLite/10/update_buffer_lastseen.sql similarity index 63% rename from src/core/SQL/SQLite/9/update_buffer_lastseen.sql rename to src/core/SQL/SQLite/10/update_buffer_lastseen.sql index 72b99b20..55415050 100644 --- a/src/core/SQL/SQLite/9/update_buffer_lastseen.sql +++ b/src/core/SQL/SQLite/10/update_buffer_lastseen.sql @@ -1,3 +1,3 @@ UPDATE buffer -SET lastseen = :lastseen +SET lastseenmsgid = :lastseenmsgid WHERE userid = :userid AND bufferid = :bufferid diff --git a/src/core/SQL/SQLite/9/update_buffer_name.sql b/src/core/SQL/SQLite/10/update_buffer_name.sql similarity index 100% rename from src/core/SQL/SQLite/9/update_buffer_name.sql rename to src/core/SQL/SQLite/10/update_buffer_name.sql diff --git a/src/core/SQL/SQLite/9/update_buffer_persistent_channel.sql b/src/core/SQL/SQLite/10/update_buffer_persistent_channel.sql similarity index 100% rename from src/core/SQL/SQLite/9/update_buffer_persistent_channel.sql rename to src/core/SQL/SQLite/10/update_buffer_persistent_channel.sql diff --git a/src/core/SQL/SQLite/9/update_buffer_set_channel_key.sql b/src/core/SQL/SQLite/10/update_buffer_set_channel_key.sql similarity index 100% rename from src/core/SQL/SQLite/9/update_buffer_set_channel_key.sql rename to src/core/SQL/SQLite/10/update_buffer_set_channel_key.sql diff --git a/src/core/SQL/SQLite/9/update_network.sql b/src/core/SQL/SQLite/10/update_network.sql similarity index 100% rename from src/core/SQL/SQLite/9/update_network.sql rename to src/core/SQL/SQLite/10/update_network.sql diff --git a/src/core/SQL/SQLite/9/update_network_connected.sql b/src/core/SQL/SQLite/10/update_network_connected.sql similarity index 100% rename from src/core/SQL/SQLite/9/update_network_connected.sql rename to src/core/SQL/SQLite/10/update_network_connected.sql diff --git a/src/core/SQL/SQLite/9/update_username.sql b/src/core/SQL/SQLite/10/update_username.sql similarity index 100% rename from src/core/SQL/SQLite/9/update_username.sql rename to src/core/SQL/SQLite/10/update_username.sql diff --git a/src/core/SQL/SQLite/9/update_userpassword.sql b/src/core/SQL/SQLite/10/update_userpassword.sql similarity index 100% rename from src/core/SQL/SQLite/9/update_userpassword.sql rename to src/core/SQL/SQLite/10/update_userpassword.sql diff --git a/src/core/SQL/SQLite/10/upgrade_000_switch_to_msgid.sql b/src/core/SQL/SQLite/10/upgrade_000_switch_to_msgid.sql new file mode 100644 index 00000000..fa40d084 --- /dev/null +++ b/src/core/SQL/SQLite/10/upgrade_000_switch_to_msgid.sql @@ -0,0 +1,3 @@ +UPDATE buffer +SET lastseen = (SELECT messageid FROM backlog WHERE backlog.bufferid = bufferid AND backlog.time = lastseen LIMIT 1) +WHERE lastseen != 0 diff --git a/src/core/SQL/SQLite/10/upgrade_010_rename_buffer_table.sql b/src/core/SQL/SQLite/10/upgrade_010_rename_buffer_table.sql new file mode 100644 index 00000000..74537bc7 --- /dev/null +++ b/src/core/SQL/SQLite/10/upgrade_010_rename_buffer_table.sql @@ -0,0 +1 @@ +ALTER TABLE buffer RENAME TO buffer_old diff --git a/src/core/SQL/SQLite/10/upgrade_020_create_buffer_table.sql b/src/core/SQL/SQLite/10/upgrade_020_create_buffer_table.sql new file mode 100644 index 00000000..fccc3827 --- /dev/null +++ b/src/core/SQL/SQLite/10/upgrade_020_create_buffer_table.sql @@ -0,0 +1,12 @@ +CREATE TABLE buffer ( + bufferid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + userid INTEGER NOT NULL, + groupid INTEGER, + networkid INTEGER NOT NULL, + buffername TEXT NOT NULL, + buffercname TEXT NOT NULL, -- CANONICAL BUFFER NAME (lowercase version) + buffertype INTEGER NOT NULL DEFAULT 0, + lastseenmsgid INTEGER NOT NULL DEFAULT 0, + key TEXT, + joined INTEGER NOT NULL DEFAULT 0 -- BOOL +) diff --git a/src/core/SQL/SQLite/10/upgrade_030_copy_buffer_table.sql b/src/core/SQL/SQLite/10/upgrade_030_copy_buffer_table.sql new file mode 100644 index 00000000..cb6b6b53 --- /dev/null +++ b/src/core/SQL/SQLite/10/upgrade_030_copy_buffer_table.sql @@ -0,0 +1,2 @@ +INSERT INTO buffer (bufferid, userid, groupid, networkid, buffername, buffercname, buffertype, lastseenmsgid, key, joined) +SELECT bufferid, userid, groupid, networkid, buffername, buffercname, buffertype, lastseen, key, joined FROM buffer_old diff --git a/src/core/SQL/SQLite/10/upgrade_040_drop_buffer_old_table.sql b/src/core/SQL/SQLite/10/upgrade_040_drop_buffer_old_table.sql new file mode 100644 index 00000000..62aa8bd5 --- /dev/null +++ b/src/core/SQL/SQLite/10/upgrade_040_drop_buffer_old_table.sql @@ -0,0 +1 @@ +DROP TABLE buffer_old diff --git a/src/core/SQL/SQLite/10/upgrade_999_version.sql b/src/core/SQL/SQLite/10/upgrade_999_version.sql new file mode 100644 index 00000000..0b132837 --- /dev/null +++ b/src/core/SQL/SQLite/10/upgrade_999_version.sql @@ -0,0 +1,3 @@ +UPDATE coreinfo +SET value = 10 +WHERE key = 'schemaversion' diff --git a/src/core/SQL/SQLite/9/setup_999_version.sql b/src/core/SQL/SQLite/9/setup_999_version.sql deleted file mode 100644 index ab6551ec..00000000 --- a/src/core/SQL/SQLite/9/setup_999_version.sql +++ /dev/null @@ -1 +0,0 @@ -INSERT INTO coreinfo (key, value) VALUES ('schemaversion', '9') diff --git a/src/core/core.cpp b/src/core/core.cpp index fee75947..b7714e39 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -305,14 +305,14 @@ BufferId Core::renameBuffer(const UserId &user, const NetworkId &networkId, cons return instance()->storage->renameBuffer(user, networkId, newName, oldName); } -void Core::setBufferLastSeen(UserId user, const BufferId &bufferId, const QDateTime &seenDate) { +void Core::setBufferLastSeenMsg(UserId user, const BufferId &bufferId, const MsgId &msgId) { QMutexLocker locker(&mutex); - return instance()->storage->setBufferLastSeen(user, bufferId, seenDate); + return instance()->storage->setBufferLastSeenMsg(user, bufferId, msgId); } -QHash Core::bufferLastSeenDates(UserId user) { +QHash Core::bufferLastSeenMsgIds(UserId user) { QMutexLocker locker(&mutex); - return instance()->storage->bufferLastSeenDates(user); + return instance()->storage->bufferLastSeenMsgIds(user); } /*** Network Management ***/ diff --git a/src/core/core.h b/src/core/core.h index 2255f56a..31d01be4 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -239,17 +239,17 @@ class Core : public QObject { * * \param user The Owner of that Buffer * \param bufferId The buffer id - * \param seenDate Time the Buffer has been visited the last time + * \param MsgId The Message id of the message that has been just seen */ - static void setBufferLastSeen(UserId user, const BufferId &bufferId, const QDateTime &seenDate); + static void setBufferLastSeenMsg(UserId user, const BufferId &bufferId, const MsgId &msgId); - //! Get a Hash of all last seen dates. - /** This Method is called when the Quassel Core is started to restore the lastSeenDates + //! Get a Hash of all last seen message ids + /** This Method is called when the Quassel Core is started to restore the lastSeenMsgIds * \note This method is threadsafe. * * \param user The Owner of the buffers */ - static QHash bufferLastSeenDates(UserId user); + static QHash bufferLastSeenMsgIds(UserId user); public slots: //! Make storage data persistent diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index 40443db2..bc4289ba 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -69,9 +69,11 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent) : QObje initScriptEngine(); // init BufferSyncer - QHash lastSeenHash = Core::bufferLastSeenDates(user()); - foreach(BufferId id, lastSeenHash.keys()) _bufferSyncer->requestSetLastSeen(id, lastSeenHash[id]); - connect(_bufferSyncer, SIGNAL(lastSeenSet(BufferId, const QDateTime &)), this, SLOT(storeBufferLastSeen(BufferId, const QDateTime &))); + QHash lastSeenHash = Core::bufferLastSeenMsgIds(user()); + foreach(BufferId id, lastSeenHash.keys()) + _bufferSyncer->requestSetLastSeenMsg(id, lastSeenHash[id]); + + connect(_bufferSyncer, SIGNAL(lastSeenMsgSet(BufferId, MsgId)), this, SLOT(storeBufferLastSeenMsg(BufferId, MsgId))); connect(_bufferSyncer, SIGNAL(removeBufferRequested(BufferId)), this, SLOT(removeBufferRequested(BufferId))); connect(this, SIGNAL(bufferRemoved(BufferId)), _bufferSyncer, SLOT(removeBuffer(BufferId))); connect(this, SIGNAL(bufferRenamed(BufferId, QString)), _bufferSyncer, SLOT(renameBuffer(BufferId, QString))); @@ -306,8 +308,8 @@ QVariant CoreSession::sessionState() { return v; } -void CoreSession::storeBufferLastSeen(BufferId buffer, const QDateTime &lastSeen) { - Core::setBufferLastSeen(user(), buffer, lastSeen); +void CoreSession::storeBufferLastSeenMsg(BufferId buffer, const MsgId &msgId) { + Core::setBufferLastSeenMsg(user(), buffer, msgId); } void CoreSession::sendBacklog(BufferInfo id, QVariant v1, QVariant v2) { diff --git a/src/core/coresession.h b/src/core/coresession.h index 7dd0a53a..6d01d176 100644 --- a/src/core/coresession.h +++ b/src/core/coresession.h @@ -165,7 +165,7 @@ private slots: */ void updateBufferInfo(UserId user, const BufferInfo &bufferInfo); - void storeBufferLastSeen(BufferId buffer, const QDateTime &lastSeen); + void storeBufferLastSeenMsg(BufferId buffer, const MsgId &msgId); void scriptRequest(QString script); diff --git a/src/core/sql.qrc b/src/core/sql.qrc index 4c38e7d6..2c806d49 100644 --- a/src/core/sql.qrc +++ b/src/core/sql.qrc @@ -3,6 +3,66 @@ ./SQL/SQLite/1/upgrade_000_drop_coreinfo.sql ./SQL/SQLite/1/upgrade_010_create_coreinfo.sql ./SQL/SQLite/1/upgrade_020_update_schemaversion.sql + ./SQL/SQLite/10/delete_backlog_by_uid.sql + ./SQL/SQLite/10/delete_backlog_for_buffer.sql + ./SQL/SQLite/10/delete_backlog_for_network.sql + ./SQL/SQLite/10/delete_buffer_for_bufferid.sql + ./SQL/SQLite/10/delete_buffers_by_uid.sql + ./SQL/SQLite/10/delete_buffers_for_network.sql + ./SQL/SQLite/10/delete_ircservers_for_network.sql + ./SQL/SQLite/10/delete_network.sql + ./SQL/SQLite/10/delete_networks_by_uid.sql + ./SQL/SQLite/10/delete_quasseluser.sql + ./SQL/SQLite/10/insert_buffer.sql + ./SQL/SQLite/10/insert_message.sql + ./SQL/SQLite/10/insert_network.sql + ./SQL/SQLite/10/insert_quasseluser.sql + ./SQL/SQLite/10/insert_sender.sql + ./SQL/SQLite/10/insert_server.sql + ./SQL/SQLite/10/select_authuser.sql + ./SQL/SQLite/10/select_buffer_by_id.sql + ./SQL/SQLite/10/select_buffer_lastseen_messages.sql + ./SQL/SQLite/10/select_bufferByName.sql + ./SQL/SQLite/10/select_bufferExists.sql + ./SQL/SQLite/10/select_buffers.sql + ./SQL/SQLite/10/select_connected_networks.sql + ./SQL/SQLite/10/select_messageRange.sql + ./SQL/SQLite/10/select_messages.sql + ./SQL/SQLite/10/select_messagesOffset.sql + ./SQL/SQLite/10/select_messagesSince.sql + ./SQL/SQLite/10/select_messagesSinceOffset.sql + ./SQL/SQLite/10/select_networkExists.sql + ./SQL/SQLite/10/select_networks_for_user.sql + ./SQL/SQLite/10/select_persistent_channels.sql + ./SQL/SQLite/10/select_servers_for_network.sql + ./SQL/SQLite/10/select_userid.sql + ./SQL/SQLite/10/setup_000_quasseluser.sql + ./SQL/SQLite/10/setup_010_sender.sql + ./SQL/SQLite/10/setup_020_network.sql + ./SQL/SQLite/10/setup_030_buffer.sql + ./SQL/SQLite/10/setup_040_buffer_idx.sql + ./SQL/SQLite/10/setup_050_buffer_cname_idx.sql + ./SQL/SQLite/10/setup_060_backlog.sql + ./SQL/SQLite/10/setup_070_coreinfo.sql + ./SQL/SQLite/10/setup_080_ircservers.sql + ./SQL/SQLite/10/setup_090_create_backlog_idx.sql + ./SQL/SQLite/10/setup_100_create_backlog_idx2.sql + ./SQL/SQLite/10/setup_110_create_buffer_idx.sql + ./SQL/SQLite/10/setup_999_version.sql + ./SQL/SQLite/10/update_buffer_lastseen.sql + ./SQL/SQLite/10/update_buffer_name.sql + ./SQL/SQLite/10/update_buffer_persistent_channel.sql + ./SQL/SQLite/10/update_buffer_set_channel_key.sql + ./SQL/SQLite/10/update_network.sql + ./SQL/SQLite/10/update_network_connected.sql + ./SQL/SQLite/10/update_username.sql + ./SQL/SQLite/10/update_userpassword.sql + ./SQL/SQLite/10/upgrade_000_switch_to_msgid.sql + ./SQL/SQLite/10/upgrade_010_rename_buffer_table.sql + ./SQL/SQLite/10/upgrade_020_create_buffer_table.sql + ./SQL/SQLite/10/upgrade_030_copy_buffer_table.sql + ./SQL/SQLite/10/upgrade_040_drop_buffer_old_table.sql + ./SQL/SQLite/10/upgrade_999_version.sql ./SQL/SQLite/2/upgrade_000_drop_buffergroup.sql ./SQL/SQLite/2/upgrade_010_update_schemaversion.sql ./SQL/SQLite/3/upgrade_000_update_backlog_flags.sql @@ -49,60 +109,6 @@ ./SQL/SQLite/8/upgrade_020_alter_buffer_add_joined.sql ./SQL/SQLite/8/upgrade_030_update_buffer_set_joined_for_channels.sql ./SQL/SQLite/8/upgrade_999_version.sql - ./SQL/SQLite/9/delete_backlog_by_uid.sql - ./SQL/SQLite/9/delete_backlog_for_buffer.sql - ./SQL/SQLite/9/delete_backlog_for_network.sql - ./SQL/SQLite/9/delete_buffer_for_bufferid.sql - ./SQL/SQLite/9/delete_buffers_by_uid.sql - ./SQL/SQLite/9/delete_buffers_for_network.sql - ./SQL/SQLite/9/delete_ircservers_for_network.sql - ./SQL/SQLite/9/delete_network.sql - ./SQL/SQLite/9/delete_networks_by_uid.sql - ./SQL/SQLite/9/delete_quasseluser.sql - ./SQL/SQLite/9/insert_buffer.sql - ./SQL/SQLite/9/insert_message.sql - ./SQL/SQLite/9/insert_network.sql - ./SQL/SQLite/9/insert_quasseluser.sql - ./SQL/SQLite/9/insert_sender.sql - ./SQL/SQLite/9/insert_server.sql - ./SQL/SQLite/9/select_authuser.sql - ./SQL/SQLite/9/select_buffer_by_id.sql - ./SQL/SQLite/9/select_buffer_lastseen_dates.sql - ./SQL/SQLite/9/select_bufferByName.sql - ./SQL/SQLite/9/select_bufferExists.sql - ./SQL/SQLite/9/select_buffers.sql - ./SQL/SQLite/9/select_connected_networks.sql - ./SQL/SQLite/9/select_messageRange.sql - ./SQL/SQLite/9/select_messages.sql - ./SQL/SQLite/9/select_messagesOffset.sql - ./SQL/SQLite/9/select_messagesSince.sql - ./SQL/SQLite/9/select_messagesSinceOffset.sql - ./SQL/SQLite/9/select_networkExists.sql - ./SQL/SQLite/9/select_networks_for_user.sql - ./SQL/SQLite/9/select_persistent_channels.sql - ./SQL/SQLite/9/select_servers_for_network.sql - ./SQL/SQLite/9/select_userid.sql - ./SQL/SQLite/9/setup_000_quasseluser.sql - ./SQL/SQLite/9/setup_010_sender.sql - ./SQL/SQLite/9/setup_020_network.sql - ./SQL/SQLite/9/setup_030_buffer.sql - ./SQL/SQLite/9/setup_040_buffer_idx.sql - ./SQL/SQLite/9/setup_050_buffer_cname_idx.sql - ./SQL/SQLite/9/setup_060_backlog.sql - ./SQL/SQLite/9/setup_070_coreinfo.sql - ./SQL/SQLite/9/setup_080_ircservers.sql - ./SQL/SQLite/9/setup_090_create_backlog_idx.sql - ./SQL/SQLite/9/setup_100_create_backlog_idx2.sql - ./SQL/SQLite/9/setup_110_create_buffer_idx.sql - ./SQL/SQLite/9/setup_999_version.sql - ./SQL/SQLite/9/update_buffer_lastseen.sql - ./SQL/SQLite/9/update_buffer_name.sql - ./SQL/SQLite/9/update_buffer_persistent_channel.sql - ./SQL/SQLite/9/update_buffer_set_channel_key.sql - ./SQL/SQLite/9/update_network.sql - ./SQL/SQLite/9/update_network_connected.sql - ./SQL/SQLite/9/update_username.sql - ./SQL/SQLite/9/update_userpassword.sql ./SQL/SQLite/9/upgrade_000_create_backlog_idx.sql ./SQL/SQLite/9/upgrade_010_create_backlog_idx2.sql ./SQL/SQLite/9/upgrade_020_create_buffer_idx.sql diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 3c61f985..d4b7d0c3 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -558,26 +558,26 @@ BufferId SqliteStorage::renameBuffer(const UserId &user, const NetworkId &networ return BufferId(); } -void SqliteStorage::setBufferLastSeen(UserId user, const BufferId &bufferId, const QDateTime &seenDate) { +void SqliteStorage::setBufferLastSeenMsg(UserId user, const BufferId &bufferId, const MsgId &msgId) { QSqlQuery *query = cachedQuery("update_buffer_lastseen"); query->bindValue(":userid", user.toInt()); query->bindValue(":bufferid", bufferId.toInt()); - query->bindValue(":lastseen", seenDate.toTime_t()); + query->bindValue(":lastseenmsgid", msgId.toInt()); query->exec(); watchQuery(query); } -QHash SqliteStorage::bufferLastSeenDates(UserId user) { - QHash lastSeenHash; +QHash SqliteStorage::bufferLastSeenMsgIds(UserId user) { + QHash lastSeenHash; QSqlQuery query(logDb()); - query.prepare(queryString("select_buffer_lastseen_dates")); + query.prepare(queryString("select_buffer_lastseen_messages")); 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()); + lastSeenHash[query.value(0).toInt()] = query.value(1).toInt(); } return lastSeenHash; } diff --git a/src/core/sqlitestorage.h b/src/core/sqlitestorage.h index a710b630..9968ec71 100644 --- a/src/core/sqlitestorage.h +++ b/src/core/sqlitestorage.h @@ -70,8 +70,8 @@ public slots: virtual QList requestBuffers(UserId user, QDateTime since = QDateTime()); virtual bool removeBuffer(const UserId &user, const BufferId &bufferId); virtual BufferId renameBuffer(const UserId &user, const NetworkId &networkId, const QString &newName, const QString &oldName); - virtual void setBufferLastSeen(UserId user, const BufferId &bufferId, const QDateTime &seenDate); - virtual QHash bufferLastSeenDates(UserId user); + virtual void setBufferLastSeenMsg(UserId user, const BufferId &bufferId, const MsgId &msgId); + virtual QHash bufferLastSeenMsgIds(UserId user); /* Message handling */ diff --git a/src/core/storage.h b/src/core/storage.h index ee4cbfe3..d4c4b8b3 100644 --- a/src/core/storage.h +++ b/src/core/storage.h @@ -243,15 +243,15 @@ class Storage : public QObject { /** 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 + * \param MsgId The Message id of the message that has been just seen */ - virtual void setBufferLastSeen(UserId user, const BufferId &bufferId, const QDateTime &seenDate) = 0; + virtual void setBufferLastSeenMsg(UserId user, const BufferId &bufferId, const MsgId &msgId) = 0; - //! Get a Hash of all last seen dates. - /** This Method is called when the Quassel Core is started to restore the lastSeenDates + //! Get a Hash of all last seen message ids + /** This Method is called when the Quassel Core is started to restore the lastSeenMsgIds * \param user The Owner of the buffers */ - virtual QHash bufferLastSeenDates(UserId user) = 0; + virtual QHash bufferLastSeenMsgIds(UserId user) = 0; /* Message handling */ diff --git a/version.inc b/version.inc index 6dcc0af1..a3e6cee8 100644 --- a/version.inc +++ b/version.inc @@ -4,15 +4,15 @@ { using namespace Global; quasselVersion = "0.2.0-alpha3-pre"; - quasselDate = "2008-03-06"; - quasselBuild = 617; + quasselDate = "2008-03-09"; + quasselBuild = 620; //! Minimum client build number the core needs - clientBuildNeeded = 613; + clientBuildNeeded = 620; clientVersionNeeded = quasselVersion; //! Minimum core build number the client needs - coreBuildNeeded = 613; + coreBuildNeeded = 620; coreVersionNeeded = quasselVersion; } -- 2.20.1