pgLab/pglab/TriggerPage.cpp

55 lines
1.4 KiB
C++

#include "TriggerPage.h"
#include "ResultTableModelUtil.h"
#include "UserConfiguration.h"
#include "catalog/PgClass.h"
#include "SqlCodePreview.h"
#include "TriggerTableModel.h"
#include "CustomFilterSortModel.h"
#include "CustomDataRole.h"
#include "PgLabTableView.h"
#include "catalog/PgProcContainer.h"
#include <QStringBuilder>
#include <unordered_set>
TriggerPage::TriggerPage(QWidget *parent)
: CatalogPageBase(parent)
{
m_model = new TriggerTableModel(this);
m_sortFilterProxy->setSourceModel(m_model);
connect(m_tableView->selectionModel(), &QItemSelectionModel::selectionChanged,
this, &TriggerPage::tableView_selectionChanged);
}
void TriggerPage::catalogSet()
{
m_model->setCatalog(m_catalog);
}
void TriggerPage::setFilter(const std::optional<PgClass> &cls)
{
m_sortFilterProxy->setOidFilterTable(cls ? cls->oid() : InvalidOid, FirstHiddenValue);
m_tableView->resizeColumnsToContents();
}
void TriggerPage::tableView_selectionChanged(const QItemSelection &/*selected*/, const QItemSelection &/*deselected*/)
{
auto rijen = selectedRows();
QString drops;
QString creates;
for (auto rij : rijen) {
auto&& t = m_model->trigger(rij);
drops += t.dropSql() % "\n";
creates += t.createSql() % "\n";
const PgProc *proc = m_catalog->procs()->getByKey(t.foid);
if (proc) {
creates += "\n" % proc->createSql() % "\n";
}
}
m_definitionView->setPlainText(drops % "\n" % creates);
}