#ifndef COLUMNTABLEMODEL_H #define COLUMNTABLEMODEL_H #include "BaseTableModel.h" #include "PgClass.h" #include "PgIndex.h" #include #include #include class PgDatabaseCatalog; class PgAttribute; class ColumnTableModel: public BaseTableModel { public: enum e_Columns : int { AttnumCol, NameCol, /// TypeCol, NullCol, DefaultCol, ForeignKeyCol, CollationCol, colCount }; using BaseTableModel::BaseTableModel; void setData(std::shared_ptr cat, const std::optional &table); // Header: QVariant headerData(int section, Qt::Orientation orientation, int role) const override; // Basic functionality: int rowCount(const QModelIndex &parent) const override; int columnCount(const QModelIndex &parent) const override; QVariant data(const QModelIndex &index, int role) const override; protected: virtual Oid getType(int column) const override; virtual QVariant getData(const QModelIndex &index) const override; using t_Columns = std::vector; std::shared_ptr m_catalog; std::optional m_table; t_Columns m_columns; std::vector m_indexes; QString getFKey(const PgAttribute &column) const; }; #endif // COLUMNTABLEMODEL_H