// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include "agents/file_indexer/FileIndexerAgent.hpp" #include "agents/settings/SettingsAgent.hpp" #include "service-db/DatabaseAgent.hpp" #include "service-db/DBNotificationMessage.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include class AlarmsDB; class AlarmsRecordInterface; class CalllogDB; class CalllogRecordInterface; class ContactRecordInterface; class ContactsDB; class CountryCodeRecordInterface; class CountryCodesDB; class DatabaseAgent; class EventsDB; class EventsRecordInterface; class NotesDB; class NotesRecordInterface; class NotificationsDB; class NotificationsRecordInterface; class SMSRecordInterface; class SMSTemplateRecordInterface; class SettingsDB; class SmsDB; class ThreadRecordInterface; class ServiceDB : public sys::Service { private: std::unique_ptr smsDB; std::unique_ptr contactsDB; std::unique_ptr alarmsDB; std::unique_ptr notesDB; std::unique_ptr calllogDB; std::unique_ptr countryCodesDB; std::unique_ptr notificationsDB; std::unique_ptr eventsDB; std::unique_ptr smsRecordInterface; std::unique_ptr threadRecordInterface; std::unique_ptr smsTemplateRecordInterface; std::unique_ptr contactRecordInterface; std::unique_ptr alarmsRecordInterface; std::unique_ptr notesRecordInterface; std::unique_ptr calllogRecordInterface; std::unique_ptr countryCodeRecordInterface; std::unique_ptr notificationsRecordInterface; std::unique_ptr eventsRecordInterface; protected: db::Interface *getInterface(db::Interface::Name interface); std::set> databaseAgents; public: ServiceDB(); ~ServiceDB() override; sys::MessagePointer DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp) override; sys::ReturnCodes InitHandler() override; sys::ReturnCodes DeinitHandler() override; sys::ReturnCodes SwitchPowerModeHandler(const sys::ServicePowerMode mode) final; bool StoreIntoBackup(const std::string &backupPath); void sendUpdateNotification(db::Interface::Name interface, db::Query::Type type); };