pgLab/pglab/ColumnTableModel.h
eelke 52011a9842 Updating of detail tabs besides list of tables works correctly again.
Had stopped working because the catalog now behaves a little different,
returning nullptr instead of an invalid element.
2018-11-18 20:24:27 +01:00

54 lines
1.2 KiB
C++

#ifndef COLUMNTABLEMODEL_H
#define COLUMNTABLEMODEL_H
#include "BaseTableModel.h"
#include "PgClass.h"
#include "PgIndex.h"
#include <memory>
#include <optional>
#include <vector>
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<const PgDatabaseCatalog> cat, const std::optional<PgClass> &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<PgAttribute>;
std::shared_ptr<const PgDatabaseCatalog> m_catalog;
std::optional<PgClass> m_table;
t_Columns m_columns;
std::vector<PgIndex> m_indexes;
QString getFKey(const PgAttribute &column) const;
};
#endif // COLUMNTABLEMODEL_H