# -*- coding: utf-8 -*- """ /*************************************************************************** Name : DB Manager Description : Database manager plugin for QGIS Date : May 23, 2011 copyright : (C) 2011 by Giuseppe Sucameli email : brush.tyler@gmail.com ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ """ from qgis.core import QgsMessageLog from ..data_model import (TableDataModel, SqlResultModel, SqlResultModelAsync, SqlResultModelTask) from ..plugin import BaseError class GPKGTableDataModel(TableDataModel): def __init__(self, table, parent=None): TableDataModel.__init__(self, table, parent) #fields_txt = u", ".join(self.fields) #table_txt = self.db.quoteId((self.table.schemaName(), self.table.name)) # run query and get results #sql = u"SELECT %s FROM %s" % (fields_txt, table_txt) #self.resdata = self.db._fetchAll(sql, include_fid_and_geometry = True) self.resdata = self.db._fetchAllFromLayer(table) self.fetchedFrom = 0 self.fetchedCount = len(self.resdata) def _sanitizeTableField(self, field): return self.db.quoteId(field.name) def rowCount(self, index=None): return self.fetchedCount class GPKGSqlResultModelTask(SqlResultModelTask): def __init__(self, db, sql, parent): super().__init__(db, sql, parent) def run(self): try: self.model = GPKGSqlResultModel(self.db, self.sql, None) except BaseError as e: self.error = e QgsMessageLog.logMessage(e.msg) return False return True def cancel(self): self.db.connector.cancel() SqlResultModelTask.cancel(self) class GPKGSqlResultModelAsync(SqlResultModelAsync): def __init__(self, db, sql, parent): super().__init__() self.task = GPKGSqlResultModelTask(db, sql, parent) self.task.taskCompleted.connect(self.modelDone) self.task.taskTerminated.connect(self.modelDone) class GPKGSqlResultModel(SqlResultModel): pass