// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include "Record.hpp" #include "module-db/databases/SmsDB.hpp" #include "Common/Common.hpp" #include #include struct SMSTemplateRecord : public Record { UTF8 text; time_t lastUsageTimestamp = 0; std::uint32_t order = 0; SMSTemplateRecord() = default; SMSTemplateRecord(const SMSTemplateTableRow &); }; enum class SMSTemplateRecordField { }; class SMSTemplateRecordInterface : public RecordInterface { public: SMSTemplateRecordInterface(SmsDB *smsDb); ~SMSTemplateRecordInterface() = default; bool Add(const SMSTemplateRecord &rec) override final; bool RemoveByID(uint32_t id) override final; bool RemoveByField(SMSTemplateRecordField field, const char *str) override final; bool Update(const SMSTemplateRecord &rec) override final; SMSTemplateRecord GetByID(uint32_t id) override final; uint32_t GetCount() override final; std::unique_ptr> GetLimitOffset(uint32_t offset, uint32_t limit) override final; std::unique_ptr> GetLimitOffsetByField(uint32_t offset, uint32_t limit, SMSTemplateRecordField field, const char *str) override final; std::unique_ptr runQuery(std::shared_ptr query) override; private: SmsDB *smsDB = nullptr; std::unique_ptr getByIDQuery(const std::shared_ptr &query); auto getQueryRecords(const std::shared_ptr &query) -> std::vector; auto getQuery(const std::shared_ptr &query) -> std::unique_ptr; auto getQueryWithTotalCount(const std::shared_ptr &query) -> std::unique_ptr; std::unique_ptr getForListQuery(const std::shared_ptr &query); std::unique_ptr getCountQuery(const std::shared_ptr &query); std::unique_ptr addQuery(const std::shared_ptr &query); std::unique_ptr removeQuery(const std::shared_ptr &query); std::unique_ptr updateQuery(const std::shared_ptr &query); };