Path: blob/main/databases/cutelyst-asql/files/patch-src_acoroexpected.h
16461 views
--- src/acoroexpected.h.orig 2024-11-11 20:32:28 UTC1+++ src/acoroexpected.h2@@ -3,6 +3,9 @@3#include <adatabase.h>4#include <aresult.h>5#include <asqlexports.h>6+#include <atransaction.h>7+8+#include <concepts>9#include <coroutine>10#include <expected>1112@@ -34,7 +37,7 @@ class ASQL_EXPORT ACoroExpected (public)1314std::expected<T, QString> await_resume() { return m_result; }1516- ACoroExpected(QObject *receiver)17+ ACoroExpected(QObject *receiver) requires (std::same_as<T, ATransaction>)18: m_receiver(receiver)19, m_result{std::unexpected(QString{})}20{21@@ -42,11 +45,24 @@ class ASQL_EXPORT ACoroExpected (public)22if (result.error()) {23m_result = std::unexpected(result.errorString());24} else {25- if constexpr (std::is_same_v<T, ATransaction>) {26- m_result = ATransaction(database, true);27- } else {28- m_result = result;29- }30+ m_result = ATransaction(database, true);31+ }32+33+ if (m_handle) {34+ m_handle.resume();35+ }36+ };37+ }38+39+ ACoroExpected(QObject *receiver) requires (!std::same_as<T, ATransaction>)40+ : m_receiver(receiver)41+ , m_result{std::unexpected(QString{})}42+ {43+ callback = [this](AResult &result) {44+ if (result.error()) {45+ m_result = std::unexpected(result.errorString());46+ } else {47+ m_result = result;48}4950if (m_handle) {515253