Sequence and Function pages are now properly filtered on namespace.
This commit is contained in:
parent
7ca671a078
commit
f2808de613
17 changed files with 136 additions and 48 deletions
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue