Updating of detail tabs besides list of tables works correctly again.
Had stopped working because the catalog now behaves a little different, returning nullptr instead of an invalid element.
This commit is contained in:
parent
fcb191f2cc
commit
52011a9842
12 changed files with 114 additions and 92 deletions
|
|
@ -12,42 +12,23 @@ ConstraintModel::ConstraintModel(QObject *parent)
|
|||
|
||||
|
||||
|
||||
void ConstraintModel::setData(std::shared_ptr<const PgDatabaseCatalog> cat, const PgClass &table)
|
||||
void ConstraintModel::setData(std::shared_ptr<const PgDatabaseCatalog> cat, const std::optional<PgClass> &table)
|
||||
{
|
||||
beginResetModel();
|
||||
SCOPE_EXIT { endResetModel(); };
|
||||
|
||||
m_table = table;
|
||||
m_catalog = cat;
|
||||
m_constraints = cat->constraints()->getConstraintsForRelation(table.oid);
|
||||
|
||||
std::sort(m_constraints.begin(), m_constraints.end(),
|
||||
[] (auto &l, auto &r) {
|
||||
return l.type < r.type ||
|
||||
(l.type == r.type && l.name < r.name);
|
||||
});
|
||||
|
||||
// // hide system columns
|
||||
// auto si = table.hasoids
|
||||
// ? std::remove_if(m_columns.begin(), m_columns.end(),
|
||||
// [](PgAttribute &e) { return e.num <= 0 && e.name != "oid"; })
|
||||
// : std::remove_if(m_columns.begin(), m_columns.end(),
|
||||
// [](PgAttribute &e) { return e.num <= 0; });
|
||||
// // move columns to end and remove them
|
||||
// m_columns.erase(si, m_columns.end());
|
||||
|
||||
// // sort remaining columns by order in table
|
||||
// std::sort(m_columns.begin(), m_columns.end(),
|
||||
// [] (auto &l, auto &r) -> bool { return l.num < r.num; });
|
||||
|
||||
// m_indexes = m_catalog->indexes()->getIndexesForTable(table.oid);
|
||||
// std::sort(m_indexes.begin(), m_indexes.end(),
|
||||
// [] (const auto &l, const auto &r) -> bool
|
||||
// {
|
||||
// return l.isprimary > r.isprimary
|
||||
// || (l.isprimary == r.isprimary && l.indexrelid < r.indexrelid);
|
||||
// });
|
||||
|
||||
if (table) {
|
||||
m_constraints = cat->constraints()->getConstraintsForRelation(table->oid);
|
||||
std::sort(m_constraints.begin(), m_constraints.end(),
|
||||
[] (auto &l, auto &r) {
|
||||
return l.type < r.type ||
|
||||
(l.type == r.type && l.name < r.name);
|
||||
});
|
||||
}
|
||||
else
|
||||
m_constraints.clear();
|
||||
}
|
||||
|
||||
QVariant ConstraintModel::headerData(int section, Qt::Orientation orientation, int role) const
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue