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

View file

@ -21,9 +21,9 @@ QString dollarQuoteString(const QString &value);
//QString genFQTableName(const PgDatabaseCatalog &catalog, const PgClass &cls); //QString genFQTableName(const PgDatabaseCatalog &catalog, const PgClass &cls);
QString getDropConstraintDefinition(const PgDatabaseCatalog &catalog, const PgConstraint &constraint); QString getDropConstraintDefinition(const PgDatabaseCatalog &catalog, const PgConstraint &constraint);
QString getAlterTableConstraintDefinition(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 /// 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 /// Returns the REFERENCES construct as used directly after a column in the create table statement
QString getForeignKeyConstraintReferences(const PgDatabaseCatalog &catalog, const PgConstraint &constraint); QString getForeignKeyConstraintReferences(const PgDatabaseCatalog &catalog, const PgConstraint &constraint);
/// Same as above but shortened as much as possible by leaving out defaults /// 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) { for (auto && col : cols) {
if (col.num > 0 && !col.isdropped) { if (col.num > 0 && !col.isdropped) {
if (first) { if (first) {
sql += "\n ";
first = false; first = false;
} }
else sql += ",\n "; else sql += ",\n ";
@ -136,10 +135,10 @@ QString PgClass::createTableSql() const
first = false; first = false;
} }
else sql += ",\n "; else sql += ",\n ";
sql += getConstraintDefinition(catalog(), constraint); sql += getConstraintDefinition(catalog(), constraint, " ");
} }
sql += ")"; sql += "\n)";
{ {
// [ INHERITS ( parent_table [, ... ] ) ] // [ INHERITS ( parent_table [, ... ] ) ]
auto parents = catalog().inherits()->getParentsOf(oid()); auto parents = catalog().inherits()->getParentsOf(oid());