/* * Copyright (c) 2010 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #pragma once #include #include struct sqlite3; namespace Swift { class SQLiteHistoryManager : public HistoryManager { public: SQLiteHistoryManager(const std::string& file); ~SQLiteHistoryManager(); void addMessage(const HistoryMessage& message); ContactsMap getContacts(const JID& selfJID, HistoryMessage::Type type, const std::string& keyword) const; std::vector getMessagesFromDate(const JID& selfJID, const JID& contactJID, HistoryMessage::Type type, const boost::gregorian::date& date) const; std::vector getMessagesFromNextDate(const JID& selfJID, const JID& contactJID, HistoryMessage::Type type, const boost::gregorian::date& date) const; std::vector getMessagesFromPreviousDate(const JID& selfJID, const JID& contactJID, HistoryMessage::Type type, const boost::gregorian::date& date) const; private: boost::gregorian::date getNextDateWithLogs(const JID& selfJID, const JID& contactJID, HistoryMessage::Type type, const boost::gregorian::date& date, bool reverseOrder) const; int getIDForJID(const JID&); int addJID(const JID&); boost::optional getJIDFromID(int id) const; boost::optional getIDFromJID(const JID& jid) const; sqlite3* db_; }; }