pgLab/pglablib/PgConstraint.cpp
eelke a99f059b70 Added list of constraints to the tables page.
Last column shows the full textual definition until I have decided on
a better way to visualize the details.
2017-12-30 13:02:40 +01:00

129 lines
2.1 KiB
C++

#include "PgConstraint.h"
void operator<<(ConstraintType &s, const Pgsql::Value &v)
{
const char *c = v.c_str();
switch (*c) {
case 'c':
s = ConstraintType::Check;
break;
case 'f':
s = ConstraintType::ForeignKey;
break;
case 'p':
s = ConstraintType::PrimaryKey;
break;
case 'u':
s = ConstraintType::Unique;
break;
case 't':
s = ConstraintType::ConstraintTrigger;
break;
case 'x':
s = ConstraintType::ExclusionConstraint;
break;
}
}
QString ShortNameForConstraintType(ConstraintType ct)
{
QString s;
switch (ct) {
case ConstraintType::Check:
s = "C";
break;
case ConstraintType::ForeignKey:
s = "FK";
break;
case ConstraintType::PrimaryKey:
s = "PK";
break;
case ConstraintType::Unique:
s = "U";
break;
case ConstraintType::ConstraintTrigger:
s = "CT";
break;
case ConstraintType::ExclusionConstraint:
s = "XC";
break;
default:
s = "?";
break;
}
return s;
}
QString LongNameForConstraintType(ConstraintType ct)
{
QString s;
switch (ct) {
case ConstraintType::Check:
s = "check";
break;
case ConstraintType::ForeignKey:
s = "foreign key";
break;
case ConstraintType::PrimaryKey:
s = "primary key";
break;
case ConstraintType::Unique:
s = "unique";
break;
case ConstraintType::ConstraintTrigger:
s = "constraint trigger";
break;
case ConstraintType::ExclusionConstraint:
s = "exclusion constraint";
break;
default:
s = "?";
break;
}
return s;
}
void operator<<(ForeignKeyAction &s, const Pgsql::Value &v)
{
const char *c = v.c_str();
switch (*c) {
case 'a':
s = ForeignKeyAction::NoAction;
break;
case 'r':
s = ForeignKeyAction::Restrict;
break;
case 'c':
s = ForeignKeyAction::Cascade;
break;
case 'n':
s = ForeignKeyAction::SetNull;
break;
case 'd':
s = ForeignKeyAction::SetDefault;
break;
}
}
void operator<<(ForeignKeyMatch &s, const Pgsql::Value &v)
{
const char *c = v.c_str();
switch (*c) {
case 'f':
s = ForeignKeyMatch::Full;
break;
case 'p':
s = ForeignKeyMatch::Partial;
break;
case 's':
s = ForeignKeyMatch::Simple;
break;
}
}
PgConstraint::PgConstraint()
{
}