The tablespage now has a namespace filter allowing it to be used for
a pg_catalog and information_schema tab.
This commit is contained in:
parent
d129876d06
commit
a0579538df
5 changed files with 60 additions and 9 deletions
|
|
@ -12,25 +12,49 @@ TablesTableModel::TablesTableModel(QObject *parent)
|
|||
: QAbstractTableModel(parent)
|
||||
{}
|
||||
|
||||
void TablesTableModel::setNamespaceFilter(NamespaceFilter nsf)
|
||||
{
|
||||
m_namespaceFilter = nsf;
|
||||
reloadData();
|
||||
}
|
||||
|
||||
void TablesTableModel::setCatalog(std::shared_ptr<const PgDatabaseCatalog> cat)
|
||||
{
|
||||
beginResetModel();
|
||||
m_catalog = cat;
|
||||
reloadData();
|
||||
|
||||
}
|
||||
|
||||
void TablesTableModel::reloadData()
|
||||
{
|
||||
if (!m_catalog)
|
||||
return;
|
||||
|
||||
beginResetModel();
|
||||
|
||||
// Later afscheiden naar filter functie
|
||||
auto classes = cat->classes();
|
||||
auto classes = m_catalog->classes();
|
||||
|
||||
// How many?
|
||||
int n = 0;
|
||||
for (const auto &e : *classes)
|
||||
if (e.kind == RelKind::Table && !e.ns().isSystemCatalog()) ++n;
|
||||
|
||||
m_tables.clear();
|
||||
m_tables.reserve(n); // reserve space
|
||||
for (const auto &e : *classes) {
|
||||
if (e.kind == RelKind::Table && !e.ns().isSystemCatalog()) {
|
||||
m_tables.push_back(e);
|
||||
bool add = false;
|
||||
if (e.kind == RelKind::Table) {
|
||||
switch (m_namespaceFilter) {
|
||||
case TablesTableModel::User:
|
||||
add = !e.ns().isSystemCatalog();
|
||||
break;
|
||||
case TablesTableModel::PgCatalog:
|
||||
add = e.ns().objectName() == "pg_catalog";
|
||||
break;
|
||||
case TablesTableModel::InformationSchema:
|
||||
add = e.ns().objectName() == "information_schema";
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (add)
|
||||
m_tables.push_back(e);
|
||||
}
|
||||
|
||||
doSort(1);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue