// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md #pragma once #include "EventsTable.hpp" #include #include #include struct AlarmEventRecord; struct AlarmEventsTableRow : public Record { uint32_t hourOfDay{0}; uint32_t minuteOfHour{0}; std::string musicTone{""}; bool enabled{false}; uint32_t snoozeDuration{0}; std::string rruleText{""}; AlarmEventsTableRow() = default; AlarmEventsTableRow(uint32_t id, uint32_t hourOfDay, uint32_t minuteOfHour, const std::string &musicTone, bool enabled, uint32_t snoozeDuration, const std::string &rruleText); explicit AlarmEventsTableRow(const AlarmEventRecord &rec); explicit AlarmEventsTableRow(const QueryResult &result); auto isValid() const -> bool; }; enum class AlarmEventsTableFields { AlarmTimeHour, AlarmTimeMinute, MusicTone, Enabled, SnoozeDuration, Rrule, }; class AlarmEventsTable : public Table { public: explicit AlarmEventsTable(Database *db); virtual ~AlarmEventsTable() = default; auto create() -> bool override; auto add(AlarmEventsTableRow entry) -> bool override; auto removeById(uint32_t id) -> bool override; auto update(AlarmEventsTableRow entry) -> bool override; auto getById(uint32_t id) -> AlarmEventsTableRow override; auto getLimitOffset(uint32_t offset, uint32_t limit) -> std::vector override; auto getLimitOffsetByField(uint32_t offset, uint32_t limit, AlarmEventsTableFields field, const char *str) -> std::vector override; auto getEnabled() -> std::vector; auto toggleAll(bool toggle) -> bool; auto count() -> uint32_t override; auto countByFieldId(const char *field, uint32_t id) -> uint32_t override; private: auto getFieldName(AlarmEventsTableFields field) -> std::string; };