in src/main/java/com/epam/digital/data/platform/liquibase/extension/change/core/DdmCreateTableChange.java [221:285]
protected CreateTableStatement createStatement(Database database) {
SqlStatement[] statements = super.generateStatements(database);
CreateTableStatement statement = (CreateTableStatement) statements[0];
UniqueConstraint uc = new UniqueConstraint(DdmConstants.PREFIX_UNIQUE_INDEX + getTableName());
if (statement.getPrimaryKeyConstraint() != null) {
statement.getPrimaryKeyConstraint().getColumns().forEach(uc::addColumns);
}
for (DdmHistoryTableColumn column : parameters.getHistoryTableColumns()) {
if (StringUtil.isEmpty(column.getScope())
|| DdmParameters.isAll(column.getScope())
|| (DdmParameters.isPrimary(column.getScope()) && (!historyTable.get()))
|| (DdmParameters.isHistory(column.getScope()) && (historyTable.get()))) {
statement.addColumn(
column.getName(),
DataTypeFactory.getInstance().fromDescription(column.getType(), database),
!StringUtil.isEmpty(column.getDefaultValueComputed()) ? new DatabaseFunction(column.getDefaultValueComputed()) : null);
}
if (!column.getNullable()) {
statement.addColumnConstraint(new NotNullConstraint(column.getName()));
}
if (column.getUniqueWithPrimaryKey()) {
uc.addColumns(column.getName());
}
}
if (hasClassify()) {
parameters.getDcmColumns().forEach(column -> statement.addColumn(
column.getName(),
DataTypeFactory.getInstance().fromDescription(column.getType(), database),
null));
setIsObject(true);
}
if (Boolean.TRUE.equals(getIsObject())) {
if (!fieldExists(statement, parameters.getSubjectColumn())) {
statement.addColumn(
parameters.getSubjectColumn(),
DataTypeFactory.getInstance().fromDescription(parameters.getSubjectColumnType(), database),
new ColumnConstraint[]{new NotNullConstraint(parameters.getSubjectColumn())});
}
if (!historyTable.get()) {
ForeignKeyConstraint fkConstraint = new ForeignKeyConstraint(
"fk_" + getTableName() + "_" + parameters.getSubjectTable(),
null,
parameters.getSubjectTable(),
parameters.getSubjectColumn());
fkConstraint.setColumn(parameters.getSubjectColumn());
statement.addColumnConstraint(fkConstraint);
}
}
if (historyTable.get()) {
statement.getUniqueConstraints().clear();
statement.addColumnConstraint(uc);
}
return statement;
}