X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsqlitestorage.h;h=3e9de416904eae9f26752bebe25f553127047037;hp=d22ab07aa676f43227e6e58cee45f695a6862f09;hb=b134e777b822b929a78455fd92146bf7443e9aa1;hpb=cc6e7c08709c4e761e2fd9c2e322751015497003 diff --git a/src/core/sqlitestorage.h b/src/core/sqlitestorage.h index d22ab07a..3e9de416 100644 --- a/src/core/sqlitestorage.h +++ b/src/core/sqlitestorage.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2019 by the Quassel Project * + * Copyright (C) 2005-2020 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -20,6 +20,9 @@ #pragma once +#include + +#include #include #include "abstractsqlstorage.h" @@ -64,14 +67,14 @@ public slots: IdentityId createIdentity(UserId user, CoreIdentity& identity) override; bool updateIdentity(UserId user, const CoreIdentity& identity) override; void removeIdentity(UserId user, IdentityId identityId) override; - QList identities(UserId user) override; + std::vector identities(UserId user) override; /* Network handling */ NetworkId createNetwork(UserId user, const NetworkInfo& info) override; bool updateNetwork(UserId user, const NetworkInfo& info) override; bool removeNetwork(UserId user, const NetworkId& networkId) override; - QList networks(UserId user) override; - QList connectedNetworks(UserId user) override; + std::vector networks(UserId user) override; + std::vector connectedNetworks(UserId user) override; void setNetworkConnected(UserId user, const NetworkId& networkId, bool isConnected) override; /* persistent channels */ @@ -88,11 +91,12 @@ public slots: /* Buffer handling */ BufferInfo bufferInfo(UserId user, const NetworkId& networkId, BufferInfo::Type type, const QString& buffer = "", bool create = true) override; BufferInfo getBufferInfo(UserId user, const BufferId& bufferId) override; - QList requestBuffers(UserId user) override; - QList requestBufferIdsForNetwork(UserId user, NetworkId networkId) override; + std::vector requestBuffers(UserId user) override; + std::vector requestBufferIdsForNetwork(UserId user, NetworkId networkId) override; bool removeBuffer(const UserId& user, const BufferId& bufferId) override; bool renameBuffer(const UserId& user, const BufferId& bufferId, const QString& newName) override; bool mergeBuffersPermanently(const UserId& user, const BufferId& bufferId1, const BufferId& bufferId2) override; + QHash bufferLastMsgIds(UserId user) override; void setBufferLastSeenMsg(UserId user, const BufferId& bufferId, const MsgId& msgId) override; QHash bufferLastSeenMsgIds(UserId user) override; void setBufferMarkerLineMsg(UserId user, const BufferId& bufferId, const MsgId& msgId) override; @@ -109,21 +113,21 @@ public slots: /* Message handling */ bool logMessage(Message& msg) override; bool logMessages(MessageList& msgs) override; - QList requestMsgs(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1) override; - QList requestMsgsFiltered(UserId user, - BufferId bufferId, - MsgId first = -1, - MsgId last = -1, - int limit = -1, - Message::Types type = Message::Types{-1}, - Message::Flags flags = Message::Flags{-1}) override; - QList requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1) override; - QList requestAllMsgsFiltered(UserId user, - MsgId first = -1, - MsgId last = -1, - int limit = -1, - Message::Types type = Message::Types{-1}, - Message::Flags flags = Message::Flags{-1}) override; + std::vector requestMsgs(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1) override; + std::vector requestMsgsFiltered(UserId user, + BufferId bufferId, + MsgId first = -1, + MsgId last = -1, + int limit = -1, + Message::Types type = Message::Types{-1}, + Message::Flags flags = Message::Flags{-1}) override; + std::vector requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1) override; + std::vector requestAllMsgsFiltered(UserId user, + MsgId first = -1, + MsgId last = -1, + int limit = -1, + Message::Types type = Message::Types{-1}, + Message::Flags flags = Message::Flags{-1}) override; /* Sysident handling */ QMap getAllAuthUserNames() override; @@ -139,8 +143,24 @@ protected: QString driverName() override { return "QSQLITE"; } QString databaseName() override { return backlogFile(); } int installedSchemaVersion() override; - bool updateSchemaVersion(int newVersion) override; + bool updateSchemaVersion(int newVersion, bool clearUpgradeStep) override; bool setupSchemaVersion(int version) override; + + /** + * Gets the last successful schema upgrade step, or an empty string if no upgrade is in progress + * + * @return Filename of last successful schema upgrade query, or empty string if not upgrading + */ + QString schemaVersionUpgradeStep() override; + + /** + * Sets the last successful schema upgrade step + * + * @param upgradeQuery The filename of the last successful schema upgrade query + * @return True if successfully set, otherwise false + */ + virtual bool setSchemaVersionUpgradeStep(QString upgradeQuery) override; + bool safeExec(QSqlQuery& query, int retryCount = 0); private: