38 _query = std::move(right._query);
39 _callbacks = std::move(right._callbacks);
58 ASSERT(!
_callbacks.empty() || std::holds_alternative<std::future<QueryResult>>(
_query),
"Attempted to set callback function for string query on a prepared async query");
60 return std::move(*
this);
65 ASSERT(!
_callbacks.empty() || std::holds_alternative<std::future<PreparedQueryResult>>(
_query),
"Attempted to set callback function for prepared query on a string async query");
67 return std::move(*
this);
73 _query = std::move(next)._query;
78 auto checkStateAndReturnCompletion = [
this]()
81 bool hasNext = std::visit([](
auto const& future) {
return future.valid(); },
_query);
96 return std::visit([&]<
typename Result>(std::future<Result>&& future)
98 if (future.valid() && future.wait_for(0s) == std::future_status::ready)
100 std::future<Result> f(std::move(future));
101 std::function<void(QueryCallback&, Result)> cb(std::get<std::function<void(QueryCallback&, Result)>>(std::move(_callbacks.front())));
103 return checkStateAndReturnCompletion();
std::shared_ptr< ResultSet > QueryResult
std::shared_ptr< PreparedResultSet > PreparedQueryResult
std::queue< QueryCallbackData, std::list< QueryCallbackData > > _callbacks
QueryCallback && WithCallback(std::function< void(QueryResult)> &&callback)
std::variant< std::future< QueryResult >, std::future< PreparedQueryResult > > _query
QueryCallback & operator=(QueryCallback &&right) noexcept
void SetNextQuery(QueryCallback &&next)
QueryCallback && WithChainingPreparedCallback(std::function< void(QueryCallback &, PreparedQueryResult)> &&callback)
QueryCallback && WithChainingCallback(std::function< void(QueryCallback &, QueryResult)> &&callback)
QueryCallback(std::future< QueryResult > &&result)
QueryCallback && WithPreparedCallback(std::function< void(PreparedQueryResult)> &&callback)