/* * Copyright 2023 jacqueline * * SPDX-License-Identifier: GPL-3.0-only */ #pragma once #include #include #include namespace database { auto StartDbTask() -> bool; auto QuitDbTask() -> void; auto SendToDbTask(std::function fn) -> void; template auto RunOnDbTask(std::function fn) -> std::future { std::shared_ptr> promise = std::make_shared>(); SendToDbTask([=]() { promise->set_value(std::invoke(fn)); }); return promise->get_future(); } template <> auto RunOnDbTask(std::function fn) -> std::future; } // namespace database