#ifndef PGCONSTRAINT_H #define PGCONSTRAINT_H #include "Pgsql_Value.h" #include #include #include #include enum class ConstraintType { Check, // c ForeignKey, // f PrimaryKey, // p Unique, // u ConstraintTrigger, // t ExclusionConstraint, // x }; void operator<<(ConstraintType &s, const Pgsql::Value &v); enum class ForeignKeyAction { NoAction, // a Restrict, // r Cascade, // c SetNull, // n SetDefault // d }; void operator<<(ForeignKeyAction &s, const Pgsql::Value &v); enum class ForeignKeyMatch { Full, // f Partial, // p Simple // s }; void operator<<(ForeignKeyMatch &s, const Pgsql::Value &v); class PgConstraint { public: Oid oid = InvalidOid; QString name; Oid connamespace = InvalidOid; ConstraintType type; bool deferrable; bool deferred; bool validated; Oid relid = InvalidOid; ///< the table this constraint is on Oid typid = InvalidOid; Oid indid = InvalidOid; ///< index supporting the constraint Oid frelid = InvalidOid; ///< only for FK, referenced table pg_class ForeignKeyAction fupdtype; // on update ForeignKeyAction fdeltype; // on delete ForeignKeyMatch fmatchtype; // match type bool islocal; int32_t inhcount; bool noinherit; std::vector key; // list of constraint columns attnum std::vector fkey; // fkey list of referenced columns std::vector pfeqop; std::vector ppeqop; std::vector ffeqop; std::vector exclop; QString bin; QString src; QString definition; PgConstraint(); bool operator==(Oid _oid) const { return oid == _oid; } bool operator==(const QString &n) const { return name == n; } bool operator<(Oid _oid) const { return oid < _oid; } bool operator<(const PgConstraint &rhs) const { return oid < rhs.oid; } }; #endif // PGCONSTRAINT_H