16#ifndef QgsQueryResultModel_H
17#define QgsQueryResultModel_H
23#include <QAbstractTableModel>
34class QgsQueryResultFetcher:
public QObject
41 QgsQueryResultFetcher(
const QgsAbstractDatabaseProviderConnection::QueryResult *queryResult )
42 : mQueryResult( queryResult )
46 void fetchRows(
long long maxRows = -1 );
54 void rowsReady(
const QList<QList<QVariant>> &newRows );
57 void fetchingComplete();
61 const QgsAbstractDatabaseProviderConnection::QueryResult *mQueryResult =
nullptr;
62 QAtomicInt mStopFetching = 0;
64 static const int ROWS_BATCH_COUNT;
79class CORE_EXPORT QgsQueryResultModel :
public QAbstractTableModel
87 QgsQueryResultModel(
const QgsAbstractDatabaseProviderConnection::QueryResult &queryResult, QObject *parent =
nullptr );
89 ~QgsQueryResultModel()
override;
94 int rowCount(
const QModelIndex &parent )
const override;
95 int columnCount(
const QModelIndex &parent )
const override;
96 QVariant data(
const QModelIndex &index,
int role )
const override;
97 QVariant headerData(
int section, Qt::Orientation orientation,
int role )
const override;
99 void fetchMore(
const QModelIndex &parent )
override;
100 bool canFetchMore(
const QModelIndex &parent )
const override;
103 QStringList columns()
const;
109 QgsAbstractDatabaseProviderConnection::QueryResult queryResult()
const;
116 void rowsReady(
const QList<QList<QVariant> > &rows );
131 void fetchingComplete();
137 void fetchMoreRows( qlonglong maxRows );
142 void fetchingStarted();
146 QgsAbstractDatabaseProviderConnection::QueryResult mQueryResult;
147 QStringList mColumns;
148 QThread mWorkerThread;
149 std::unique_ptr<QgsQueryResultFetcher> mWorker;
150 QList<QVariantList> mRows;
153 static const int FETCH_MORE_ROWS_COUNT;