protected String formatColumnDefinition()

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();
    }