Improved formatting of generated table sql

- Removed empty line before first column
- The follow up lines of fkey's are indented
- The closing parentheses is now on a new line
This commit is contained in:
eelke 2019-12-01 07:09:18 +01:00
parent 2c2253f75e
commit e53b85bd86
3 changed files with 11 additions and 12 deletions

View file

@ -298,7 +298,7 @@ QString getColumnNameList(const PgDatabaseCatalog &catalog, Oid relid, const Sma
return result.str();
}
QString getForeignKeyConstraintDefinition(const PgDatabaseCatalog &catalog, const PgConstraint &constraint)
QString getForeignKeyConstraintDefinition(const PgDatabaseCatalog &catalog, const PgConstraint &constraint, const QString &indent)
{
//PgClass cls = catalog.classes()->getByKey(constraint.relid);
const PgClass *fcls = catalog.classes()->getByKey(constraint.frelid);
@ -310,10 +310,10 @@ QString getForeignKeyConstraintDefinition(const PgDatabaseCatalog &catalog, cons
deferrable = QLatin1String(" DEFERRABLE INITIALLY ") % (constraint.deferred ? "DEFERRED" : "IMMEDIATE");
}
return "\n FOREIGN KEY ("
% getColumnNameList(catalog, constraint.relid, constraint.key) % ")\n REFERENCES "
return "\n" + indent + "FOREIGN KEY ("
% getColumnNameList(catalog, constraint.relid, constraint.key) % ")\n" + indent + "REFERENCES "
% fcls->fullyQualifiedQuotedObjectName() % " ("
% getColumnNameList(catalog, constraint.frelid, constraint.fkey) % ")\n MATCH "
% getColumnNameList(catalog, constraint.frelid, constraint.fkey) % ")\n" + indent + "MATCH "
% ForeignKeyMatchToString(constraint.fmatchtype)
% " ON UPDATE " % ForeignKeyActionToString(constraint.fupdtype)
% " ON DELETE " % ForeignKeyActionToString(constraint.fdeltype)
@ -385,16 +385,16 @@ QString getAlterTableConstraintDefinition(const PgDatabaseCatalog &catalog, cons
{
const PgClass *cls = catalog.classes()->getByKey(constraint.relid);
QString result = genAlterTable(catalog, *cls) % "\n ADD ";
result += getConstraintDefinition(catalog, constraint) % ";";
result += getConstraintDefinition(catalog, constraint, " ") % ";";
return result;
}
QString getConstraintDefinition(const PgDatabaseCatalog &catalog, const PgConstraint &constraint)
QString getConstraintDefinition(const PgDatabaseCatalog &catalog, const PgConstraint &constraint, const QString &indent)
{
QString result = "CONSTRAINT " % quoteIdent(constraint.objectName());
switch (constraint.type) {
case ConstraintType::ForeignKey:
result += getForeignKeyConstraintDefinition(catalog, constraint);
result += getForeignKeyConstraintDefinition(catalog, constraint, indent);
break;
case ConstraintType::PrimaryKey:
result += getPrimaryKeyConstraintDefinition(catalog, constraint);

View file

@ -21,9 +21,9 @@ QString dollarQuoteString(const QString &value);
//QString genFQTableName(const PgDatabaseCatalog &catalog, const PgClass &cls);
QString getDropConstraintDefinition(const PgDatabaseCatalog &catalog, const PgConstraint &constraint);
QString getAlterTableConstraintDefinition(const PgDatabaseCatalog &catalog, const PgConstraint &constraint);
QString getConstraintDefinition(const PgDatabaseCatalog &catalog, const PgConstraint &constraint);
QString getConstraintDefinition(const PgDatabaseCatalog &catalog, const PgConstraint &constraint, const QString &indent);
/// Returns the foreignKey specific part of the constraint definition
QString getForeignKeyConstraintDefinition(const PgDatabaseCatalog &catalog, const PgConstraint &constraint);
QString getForeignKeyConstraintDefinition(const PgDatabaseCatalog &catalog, const PgConstraint &constraint, const QString &indent);
/// Returns the REFERENCES construct as used directly after a column in the create table statement
QString getForeignKeyConstraintReferences(const PgDatabaseCatalog &catalog, const PgConstraint &constraint);
/// Same as above but shortened as much as possible by leaving out defaults

View file

@ -118,7 +118,6 @@ QString PgClass::createTableSql() const
for (auto && col : cols) {
if (col.num > 0 && !col.isdropped) {
if (first) {
sql += "\n ";
first = false;
}
else sql += ",\n ";
@ -136,10 +135,10 @@ QString PgClass::createTableSql() const
first = false;
}
else sql += ",\n ";
sql += getConstraintDefinition(catalog(), constraint);
sql += getConstraintDefinition(catalog(), constraint, " ");
}
sql += ")";
sql += "\n)";
{
// [ INHERITS ( parent_table [, ... ] ) ]
auto parents = catalog().inherits()->getParentsOf(oid());