// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "AlarmEventsDBRepository.hpp" #include #include #include #include #include #include #include #include namespace alarms { AlarmEventsDBRepository::AlarmEventsDBRepository(sys::Service *service) : service{service} {} auto AlarmEventsDBRepository::getAlarmEvent(const std::uint32_t alarmId, const OnGetAlarmEventCallback &callback) -> void { sendQueryWithCallback( callback, alarmId); } auto AlarmEventsDBRepository::getAlarmEnabledEvents(const OnGetAlarmEventsCallback &callback) -> void { sendQueryWithCallback(callback); } auto AlarmEventsDBRepository::getAlarmEventsInRange(std::uint32_t offset, std::uint32_t limit, const OnGetAlarmEventsInRangeCallback &callback) -> void { sendQueryWithCallback(callback, offset, limit); } auto AlarmEventsDBRepository::addAlarmEvent(const AlarmEventRecord &alarmEvent, const OnAddAlarmEventCallback &callback) -> void { sendQueryWithCallback( callback, alarmEvent); } auto AlarmEventsDBRepository::updateAlarmEvent(const AlarmEventRecord &alarmEvent, const OnUpdateAlarmEventCallback &callback) -> void { sendQueryWithCallback(callback, alarmEvent); } auto AlarmEventsDBRepository::removeAlarmEvent(const std::uint32_t id, const OnRemoveAlarmEventCallback &callback) -> void { sendQueryWithCallback(callback, id); } auto AlarmEventsDBRepository::toggleAll(bool toggle, const OnToggleAll &callback) -> void { sendQueryWithCallback( callback, toggle); } template void AlarmEventsDBRepository::sendQueryWithCallback(const callbackT &callback, Types... queryArgs) { auto query = std::make_unique(queryArgs...); query->setQueryListener(db::QueryCallback::fromFunction([callback](auto response) { auto result = dynamic_cast(response); if (result == nullptr) { return false; } if (callback) { callback(result->getResult()); } return true; })); DBServiceAPI::GetQuery(service, db::Interface::Name::AlarmEvents, std::move(query)); } } // namespace alarms