16#ifndef QgsQueryResultModel_H
17#define QgsQueryResultModel_H
23#include <QAbstractTableModel>
34class QgsQueryResultFetcher :
public QObject
40 QgsQueryResultFetcher(
const QgsAbstractDatabaseProviderConnection::QueryResult *queryResult )
41 : mQueryResult( queryResult )
45 void fetchRows(
long long maxRows = -1 );
53 void rowsReady(
const QList<QList<QVariant>> &newRows );
56 void fetchingComplete();
59 const QgsAbstractDatabaseProviderConnection::QueryResult *mQueryResult =
nullptr;
60 QAtomicInt mStopFetching = 0;
62 static const int ROWS_BATCH_COUNT;
76class CORE_EXPORT QgsQueryResultModel :
public QAbstractTableModel
83 QgsQueryResultModel(
const QgsAbstractDatabaseProviderConnection::QueryResult &queryResult, QObject *parent =
nullptr );
85 ~QgsQueryResultModel()
override;
89 int rowCount(
const QModelIndex &parent )
const override;
90 int columnCount(
const QModelIndex &parent )
const override;
91 QVariant data(
const QModelIndex &index,
int role )
const override;
92 QVariant headerData(
int section, Qt::Orientation orientation,
int role )
const override;
94 void fetchMore(
const QModelIndex &parent )
override;
95 bool canFetchMore(
const QModelIndex &parent )
const override;
98 QStringList columns()
const;
104 QgsAbstractDatabaseProviderConnection::QueryResult queryResult()
const;
111 void rowsReady(
const QList<QList<QVariant> > &rows );
126 void fetchingComplete();
132 void fetchMoreRows( qlonglong maxRows );
137 void fetchingStarted();
140 QgsAbstractDatabaseProviderConnection::QueryResult mQueryResult;
141 QStringList mColumns;
142 QThread mWorkerThread;
143 std::unique_ptr<QgsQueryResultFetcher> mWorker;
144 QList<QVariantList> mRows;
147 static const int FETCH_MORE_ROWS_COUNT;