// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "AlarmsRepository.hpp" #include #include #include #include #include #include #include "AsyncTask.hpp" namespace app::alarmClock { AlarmsDBRepository::AlarmsDBRepository(Application *application) : AsyncCallbackReceiver{application}, application{application} {} void AlarmsDBRepository::getLimited(std::uint32_t offset, std::uint32_t limit, const OnGetCallback &callback) { auto query = std::make_unique(offset, limit); auto task = app::AsyncQuery::createFromQuery(std::move(query), db::Interface::Name::Alarms); task->setCallback([callback](auto response) { auto result = dynamic_cast(response); if (result == nullptr) { return false; } if (callback) { callback(result->getResult(), result->getCountResult()); } return true; }); task->execute(application, this); } template void AlarmsDBRepository::GetQuery(std::unique_ptr query, const AbstractAlarmsRepository::OnResultCallback &callback) { auto task = app::AsyncQuery::createFromQuery(std::move(query), db::Interface::Name::Alarms); task->setCallback([callback](auto response) { auto result = dynamic_cast(response); if (result == nullptr) { return false; } if (callback) { callback(result->succeed()); } return true; }); task->execute(application, this); } void AlarmsDBRepository::add(const AlarmsRecord &alarm, const AbstractAlarmsRepository::OnResultCallback &callback) { GetQuery(std::make_unique(alarm), callback); } void AlarmsDBRepository::remove(const AlarmsRecord &alarm, const AbstractAlarmsRepository::OnResultCallback &callback) { GetQuery( std::make_unique(alarm.ID), callback); } void AlarmsDBRepository::update(const AlarmsRecord &alarm, const AbstractAlarmsRepository::OnResultCallback &callback) { GetQuery( std::make_unique(alarm), callback); } void AlarmsDBRepository::turnOffAll(const AbstractAlarmsRepository::OnResultCallback &callback) { GetQuery( std::make_unique(), callback); } } // namespace app::alarmClock