Sequence and Function pages are now properly filtered on namespace.

This commit is contained in:
eelke 2019-02-09 20:37:34 +01:00
parent 7ca671a078
commit f2808de613
17 changed files with 136 additions and 48 deletions

View file

@ -1,5 +1,6 @@
#include "SequenceModel.h"
#include "catalog/PgDatabaseCatalog.h"
#include "catalog/PgNamespace.h"
#include "catalog/PgSequenceContainer.h"
SequenceModel::SequenceModel(QObject * parent)
@ -31,22 +32,53 @@ QVariant SequenceModel::headerData(int section, Qt::Orientation orientation, int
void SequenceModel::setCatalog(std::shared_ptr<const PgDatabaseCatalog> cat)
{
m_catalog = cat;
reloadData();
}
void SequenceModel::setNamespaceFilter(NamespaceFilter filter)
{
m_namespaceFilter = filter;
reloadData();
}
void SequenceModel::reloadData()
{
if (!m_catalog)
return;
beginResetModel();
m_catalog = cat;
m_sequences = cat->sequences();
auto && seqs = m_catalog->sequences();
m_sequences.clear();
for (auto&& s : *seqs) {
bool add = false;
switch (m_namespaceFilter) {
case NamespaceFilter::User:
add = !s.ns().isSystemCatalog();
break;
case NamespaceFilter::PgCatalog:
add = s.ns().objectName() == "pg_catalog";
break;
case NamespaceFilter::InformationSchema:
add = s.ns().objectName() == "information_schema";
break;
}
if (add)
m_sequences.push_back(s);
}
endResetModel();
}
PgSequence SequenceModel::sequence(int row) const
{
return m_sequences->getByIdx(row);
return m_sequences.at(static_cast<size_t>(row));
}
int SequenceModel::rowCount(const QModelIndex &) const
{
return m_sequences ? static_cast<int>(m_sequences->count()) : 0;
return static_cast<int>(m_sequences.size());
}
int SequenceModel::columnCount(const QModelIndex &) const
@ -56,11 +88,11 @@ int SequenceModel::columnCount(const QModelIndex &) const
QVariant SequenceModel::data(const QModelIndex &index, int role) const
{
if (!m_sequences)
if (m_sequences.empty())
return {};
int row = index.row();
auto && seq = m_sequences->getByIdx(row);
auto && seq = m_sequences.at(static_cast<size_t>(row));
if (role == Qt::DisplayRole) {
switch (index.column()) {
case NameCol: return seq.objectName();