[#6988] DDLFlag.TABLE does not work correctly on DSLContext.ddl()
This commit is contained in:
parent
3b7f0cecda
commit
af5fd2f80e
@ -80,43 +80,58 @@ final class DDL {
|
||||
}
|
||||
|
||||
private final Query createTable(Table<?> table) {
|
||||
List<Constraint> constraints = new ArrayList<Constraint>();
|
||||
|
||||
if (flags.contains(PRIMARY_KEY))
|
||||
for (UniqueKey<?> key : table.getKeys())
|
||||
if (key.isPrimary())
|
||||
constraints.add(constraint(key.getName()).primaryKey(key.getFieldsArray()));
|
||||
|
||||
if (flags.contains(UNIQUE))
|
||||
for (UniqueKey<?> key : table.getKeys())
|
||||
if (!key.isPrimary())
|
||||
constraints.add(constraint(key.getName()).unique(key.getFieldsArray()));
|
||||
|
||||
if (flags.contains(FOREIGN_KEY))
|
||||
for (ForeignKey<?, ?> key : table.getReferences())
|
||||
constraints.add(constraint(key.getName()).foreignKey(key.getFieldsArray()).references(key.getKey().getTable(), key.getKey().getFieldsArray()));
|
||||
|
||||
return ctx.createTable(table)
|
||||
.columns(table.fields())
|
||||
.constraints(constraints);
|
||||
.constraints(constraints(table));
|
||||
}
|
||||
|
||||
private final List<Query> alterTableAddConstraints(Table<?> table) {
|
||||
List<Query> result = new ArrayList<Query>();
|
||||
|
||||
for (Constraint constraint : constraints(table))
|
||||
result.add(ctx.alterTable(table).add(constraint));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private final List<Constraint> constraints(Table<?> table) {
|
||||
List<Constraint> result = new ArrayList<Constraint>();
|
||||
|
||||
result.addAll(primaryKeys(table));
|
||||
result.addAll(uniqueKeys(table));
|
||||
result.addAll(foreignKeys(table));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<Constraint> primaryKeys(Table<?> table) {
|
||||
List<Constraint> result = new ArrayList<Constraint>();
|
||||
|
||||
if (flags.contains(PRIMARY_KEY))
|
||||
for (UniqueKey<?> key : table.getKeys())
|
||||
if (key.isPrimary())
|
||||
result.add(ctx.alterTable(table).add(constraint(key.getName()).primaryKey(key.getFieldsArray())));
|
||||
result.add(constraint(key.getName()).primaryKey(key.getFieldsArray()));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<Constraint> uniqueKeys(Table<?> table) {
|
||||
List<Constraint> result = new ArrayList<Constraint>();
|
||||
|
||||
if (flags.contains(UNIQUE))
|
||||
for (UniqueKey<?> key : table.getKeys())
|
||||
if (!key.isPrimary())
|
||||
result.add(ctx.alterTable(table).add(constraint(key.getName()).unique(key.getFieldsArray())));
|
||||
result.add(constraint(key.getName()).unique(key.getFieldsArray()));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<Constraint> foreignKeys(Table<?> table) {
|
||||
List<Constraint> result = new ArrayList<Constraint>();
|
||||
|
||||
if (flags.contains(FOREIGN_KEY))
|
||||
for (ForeignKey<?, ?> key : table.getReferences())
|
||||
result.add(ctx.alterTable(table).add(constraint(key.getName()).foreignKey(key.getFieldsArray()).references(key.getKey().getTable(), key.getKey().getFieldsArray())));
|
||||
result.add(constraint(key.getName()).foreignKey(key.getFieldsArray()).references(key.getKey().getTable(), key.getKey().getFieldsArray()));
|
||||
|
||||
return result;
|
||||
}
|
||||
@ -158,15 +173,8 @@ final class DDL {
|
||||
for (Table<?> table : schema.getTables()) {
|
||||
List<Constraint> constraints = new ArrayList<Constraint>();
|
||||
|
||||
if (flags.contains(PRIMARY_KEY))
|
||||
for (UniqueKey<?> key : table.getKeys())
|
||||
if (key.isPrimary())
|
||||
constraints.add(constraint(key.getName()).primaryKey(key.getFieldsArray()));
|
||||
|
||||
if (flags.contains(UNIQUE))
|
||||
for (UniqueKey<?> key : table.getKeys())
|
||||
if (!key.isPrimary())
|
||||
constraints.add(constraint(key.getName()).unique(key.getFieldsArray()));
|
||||
constraints.addAll(primaryKeys(table));
|
||||
constraints.addAll(uniqueKeys(table));
|
||||
|
||||
queries.add(
|
||||
ctx.createTable(table)
|
||||
@ -174,12 +182,23 @@ final class DDL {
|
||||
.constraints(constraints)
|
||||
);
|
||||
}
|
||||
|
||||
if (flags.contains(FOREIGN_KEY))
|
||||
for (Table<?> table : schema.getTables())
|
||||
for (ForeignKey<?, ?> key : table.getReferences())
|
||||
queries.add(ctx.alterTable(table).add(constraint(key.getName()).foreignKey(key.getFieldsArray()).references(key.getKey().getTable(), key.getKey().getFieldsArray())));
|
||||
}
|
||||
else {
|
||||
if (flags.contains(PRIMARY_KEY))
|
||||
for (Table<?> table : schema.getTables())
|
||||
for (Constraint constraint : primaryKeys(table))
|
||||
queries.add(ctx.alterTable(table).add(constraint));
|
||||
|
||||
if (flags.contains(UNIQUE))
|
||||
for (Table<?> table : schema.getTables())
|
||||
for (Constraint constraint : uniqueKeys(table))
|
||||
queries.add(ctx.alterTable(table).add(constraint));
|
||||
}
|
||||
|
||||
if (flags.contains(FOREIGN_KEY))
|
||||
for (Table<?> table : schema.getTables())
|
||||
for (Constraint constraint : foreignKeys(table))
|
||||
queries.add(ctx.alterTable(table).add(constraint));
|
||||
|
||||
return ctx.queries(queries);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user