in fastmodel-transform/fastmodel-transform-postgresql/src/main/java/com/aliyun/fastmodel/transform/postgresql/format/PostgreSQLOutVisitor.java [73:99]
protected String formatColumnDefinition(ColumnDefinition column, Integer max) {
StringBuilder sb = appendNameAndType(column, max);
if (column.getDataType() == null) {
//如果没有数据类型,那么只返回名称即可
return sb.toString();
}
boolean isPrimary = column.getPrimary() != null && column.getPrimary();
if (isPrimary) {
sb.append(" PRIMARY KEY");
}
boolean isNotNull = column.getNotNull() != null && column.getNotNull();
if (!isPrimary && isNotNull) {
sb.append(" NOT NULL");
}
if (column.getDefaultValue() != null) {
String defaultValue = formatExpression(column.getDefaultValue());
sb.append(" DEFAULT ").append(defaultValue);
}
if (column.getColumnProperties() != null && !column.getColumnProperties().isEmpty()) {
Property property = column.getColumnProperties().stream().filter(
p -> StringUtils.equalsIgnoreCase(p.getName(), ExtensionPropertyKey.COLUMN_CHECK.getValue())).findFirst().orElse(null);
if (property != null) {
sb.append(" CHECK ").append("(").append(property.getValue()).append(")");
}
}
return sb.toString();
}