#ifndef TRIGGERTABLEMODEL_H #define TRIGGERTABLEMODEL_H #include #include "PgClass.h" #include "PgTrigger.h" #include class PgDatabaseCatalog; class PgTriggerContainer; /** * @brief The TriggerTableModel class * * Hidden values: * - FirstHiddenValue: oid of table the trigger belongs to */ class TriggerTableModel: public QAbstractTableModel { Q_OBJECT public: //using QAbstractTableModel::QAbstractTableModel; enum e_Columns : int { NameCol, // EventsCol, // Insert, Update, Delete Truncate WhenCol, // before after instead of DeferrableCol, InitiallyCol, ForCol, CondCol, //ReferencingCol, ProcedureCol, colCount }; TriggerTableModel(QObject *parent = nullptr); // CREATE [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] } // ON table_name // [ FROM referenced_table_name ] // [ NOT DEFERRABLE | [ DEFERRABLE ] [ INITIALLY IMMEDIATE | INITIALLY DEFERRED ] ] // [ REFERENCING { { OLD | NEW } TABLE [ AS ] transition_relation_name } [ ... ] ] // [ FOR [ EACH ] { ROW | STATEMENT } ] // [ WHEN ( condition ) ] // EXECUTE PROCEDURE function_name ( arguments ) // where event can be one of: // INSERT // UPDATE [ OF column_name [, ... ] ] // DELETE // TRUNCATE QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; void setCatalog(std::shared_ptr cat); // Basic functionality: int rowCount(const QModelIndex &parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override; virtual QVariant data(const QModelIndex &index, int role) const override; PgTrigger trigger(int row) const; private: std::shared_ptr m_catalog; std::shared_ptr m_triggers; Oid getType(int column) const; QVariant getData(const QModelIndex &index) const; }; #endif // TRIGGERTABLEMODEL_H