#ifndef INDEXMODEL_H #define INDEXMODEL_H #include #include "catalog/PgClass.h" #include "catalog/PgIndex.h" #include #include #include class PgDatabaseCatalog; class IndexModel: public QAbstractTableModel { Q_OBJECT public: using QAbstractTableModel::QAbstractTableModel; enum e_Columns : int { TypeCol, /// primary/unique/normal NameCol, /// AmCol, ///< Access Method ColumnsCol, /// ConditionCol, colCount }; // oid // tablespace // operator class // unique // primary // clustered // valid // constraint // system index // fill factor // comment QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; void setData(std::shared_ptr cat, const std::optional &table); // 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; PgIndex getIndex(int row) const { return m_indexes[row]; } protected: Oid getType(int column) const; QVariant getData(const QModelIndex &index) const; private: std::shared_ptr m_catalog; std::optional m_table; using t_Indexes = std::vector; t_Indexes m_indexes; }; #endif // INDEXMODEL_H