// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include "EventRecord.hpp" #include #include namespace db::query::alarmEvents { class Add; class AddResult; class Edit; class EditResult; class Get; class GetBetweenDates; class GetBetweenDatesResult; class GetLimited; class GetLimitedResult; class GetNext; class GetNextResult; class GetRecurringBetweenDates; class GetRecurringBetweenDatesResult; class GetResult; class Remove; class RemoveResult; } // namespace db::query::alarmEvents struct AlarmEventRecord : public EventRecord { std::string musicTone; bool enabled{false}; uint32_t snoozeDuration{0}; AlarmEventRecord() = default; AlarmEventRecord(uint32_t id, const UTF8 &name, TimePoint startDate, uint32_t duration, bool isAllDay, const std::string &rruleText, const std::string &musicTone, bool enabled, uint32_t snoozeDuration); explicit AlarmEventRecord(const AlarmEventsTableRow &aeRow); std::shared_ptr getCopy() override; auto isValid() const -> bool; }; class AlarmEventRecordInterface : public db::Interface { public: explicit AlarmEventRecordInterface(EventsDB *eventsDB); ~AlarmEventRecordInterface(); std::unique_ptr runQuery(std::shared_ptr query) override; private: EventsDB *eventsDB; std::unique_ptr runQueryImplAdd( std::shared_ptr query); std::unique_ptr runQueryImplEdit( std::shared_ptr query); std::unique_ptr runQueryImplGet( std::shared_ptr query); std::unique_ptr runQueryImplGetBetweenDates( std::shared_ptr query); std::unique_ptr runQueryImplGetLimited( std::shared_ptr query); std::unique_ptr runQueryImplGetNext( std::shared_ptr query); std::unique_ptr runQueryImplGetRecurringBetweenDates( std::shared_ptr query); std::unique_ptr runQueryImplRemove( std::shared_ptr query); };