Albert
Loading...
Searching...
No Matches
asyncgeneratorqueryhandler.h
1// SPDX-FileCopyrightText: 2025 Manuel Schneider
2// SPDX-License-Identifier: MIT
3
4#pragma once
5#include <albert/queryhandler.h>
6#include <memory>
7#include <vector>
8namespace QCoro { template<typename T> class AsyncGenerator; }
9
10namespace albert
11{
12class Item;
13
14using AsyncItemGenerator = QCoro::AsyncGenerator<std::vector<std::shared_ptr<albert::Item>>>;
15
31class ALBERT_EXPORT AsyncGeneratorQueryHandler : public QueryHandler
32{
33public:
44 virtual AsyncItemGenerator items(QueryContext &context) = 0;
45
46protected:
49
51 std::unique_ptr<QueryExecution> execution(QueryContext &context) override;
52};
53} // namespace albert
Coroutine-based asynchronous generator query handler.
Definition asyncgeneratorqueryhandler.h:32
virtual AsyncItemGenerator items(QueryContext &context)=0
Yields batches of items for context asynchronously and lazily.
~AsyncGeneratorQueryHandler() override
Destructs the handler.
std::unique_ptr< QueryExecution > execution(QueryContext &context) override
Returns an asynchronous generator query execution for context.
Query interface.
Definition querycontext.h:19
Base query handler interface for triggered queries.
Definition queryhandler.h:33
The Albert namespace.
Definition app.h:55