Added dependants tab to table page

Retrieves all foreignkeys pointing to the current table
and shows the tables they are foreignkeys of.
This commit is contained in:
eelke 2019-11-17 10:27:11 +01:00
parent b90df1cd77
commit 8dd13d103e
10 changed files with 268 additions and 4 deletions

View file

@ -1,6 +1,7 @@
#include "PgConstraintContainer.h"
#include "Pgsql_Col.h"
#include <algorithm>
#include <iterator>
std::string PgConstraintContainer::getLoadQuery() const
{
@ -56,9 +57,11 @@ std::vector<PgConstraint> PgConstraintContainer::getFKeyForTableColumn(Oid relid
std::vector<PgConstraint> PgConstraintContainer::getConstraintsForRelation(Oid relid) const
{
std::vector<PgConstraint> result;
for (const auto &e : m_container)
if (e.relid == relid)
result.push_back(e);
// for (const auto &e : m_container)
// if (e.relid == relid)
// result.push_back(e);
std::copy_if(m_container.begin(), m_container.end(), std::back_inserter(result),
[relid] (auto && item) { return item.relid == relid; });
return result;
}
@ -73,3 +76,14 @@ std::optional<PgConstraint> PgConstraintContainer::getPrimaryForRelation(Oid rel
}
return result;
}
std::vector<PgConstraint> PgConstraintContainer::getReferencedForRelation(Oid relid) const
{
std::vector<PgConstraint> result;
// for (const auto &e : m_container)
// if (e.frelid == relid)
// result.push_back(e);
std::copy_if(m_container.begin(), m_container.end(), std::back_inserter(result),
[relid] (auto && item) { return item.frelid == relid; });
return result;
}

View file

@ -17,6 +17,7 @@ public:
std::vector<PgConstraint> getConstraintsForRelation(Oid relid) const;
std::optional<PgConstraint> getPrimaryForRelation(Oid relid) const;
std::vector<PgConstraint> getReferencedForRelation(Oid relid) const;
protected:
virtual PgConstraint loadElem(const Pgsql::Row &row) override;
};