From af327106df1f6d820e700d63a6d11c7ed1809657 Mon Sep 17 00:00:00 2001 From: MaksymSlobodianyk Date: Thu, 11 Nov 2021 11:09:55 +0200 Subject: [PATCH 1/2] Fix connection error in case ssl is disabled --- reverse_engineering/helpers/connectionHelper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reverse_engineering/helpers/connectionHelper.js b/reverse_engineering/helpers/connectionHelper.js index 2b3261b..7afd190 100644 --- a/reverse_engineering/helpers/connectionHelper.js +++ b/reverse_engineering/helpers/connectionHelper.js @@ -45,7 +45,7 @@ const connectViaSsh = info => const getSslOptions = (connectionInfo, logger) => { const sslType = mapSslType(connectionInfo.sslType); - if (sslType === 'disable') { + if (!sslType || sslType === 'disable') { return false; } From 693994c0a60ca7b743cfcbfffff0bf80a3c696c6 Mon Sep 17 00:00:00 2001 From: MaksymSlobodianyk Date: Fri, 12 Nov 2021 14:14:11 +0200 Subject: [PATCH 2/2] Implement FE of Postgis types --- forward_engineering/ddlProvider.js | 2 ++ .../helpers/columnDefinitionHelper.js | 15 ++++++++ .../field_level/fieldLevelConfig.json | 36 +++++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/forward_engineering/ddlProvider.js b/forward_engineering/ddlProvider.js index 35c215e..636796c 100644 --- a/forward_engineering/ddlProvider.js +++ b/forward_engineering/ddlProvider.js @@ -470,6 +470,8 @@ module.exports = (baseProvider, options, app) => { schemaName: schemaData.schemaName, underlyingType: jsonSchema.underlyingType, checkConstraints: jsonSchema.checkConstraints, + typeModifier: jsonSchema.typeModifier, + srid: jsonSchema.srid, collationRule, timePrecision, timezone, diff --git a/forward_engineering/helpers/columnDefinitionHelper.js b/forward_engineering/helpers/columnDefinitionHelper.js index 9460317..17d86a0 100644 --- a/forward_engineering/helpers/columnDefinitionHelper.js +++ b/forward_engineering/helpers/columnDefinitionHelper.js @@ -35,10 +35,19 @@ module.exports = ({ return type; }; + const addTypeModifier = ({ type, typeModifier, srid }) => { + const typeSrid = srid ? `, ${srid}` : ``; + if (typeModifier && typeModifier !== "") { + return `${type}(${typeModifier}${typeSrid})` + } + return type; + } + const canHaveLength = type => ['char', 'varchar', 'bit', 'varbit'].includes(type); const canHavePrecision = type => type === 'numeric'; const canHaveTimePrecision = type => ['time', 'timestamp'].includes(type); const canHaveScale = type => type === 'numeric'; + const canHaveTypeModifier = type => ['geography', 'geometry'].includes(type); const decorateType = (type, columnDefinition) => { if (canHaveLength(type) && _.isNumber(columnDefinition.length)) { @@ -47,6 +56,12 @@ module.exports = ({ return addScalePrecision(type, columnDefinition.precision, columnDefinition.scale); } else if (canHavePrecision(type) && _.isNumber(columnDefinition.precision)) { return addPrecision(type, columnDefinition.precision); + } else if (canHaveTypeModifier(type)) { + return addTypeModifier({ + type, + typeModifier: columnDefinition.typeModifier, + srid: columnDefinition.srid + }); } else if ( canHaveTimePrecision(type) && (_.isNumber(columnDefinition.timePrecision) || columnDefinition.timezone) diff --git a/properties_pane/field_level/fieldLevelConfig.json b/properties_pane/field_level/fieldLevelConfig.json index b1767c6..79f69f4 100644 --- a/properties_pane/field_level/fieldLevelConfig.json +++ b/properties_pane/field_level/fieldLevelConfig.json @@ -2236,6 +2236,42 @@ making sure that you maintain a proper JSON format. "data": "options", "valueType": "string" }, + { + "propertyName": "Type modifier", + "propertyKeyword": "typeModifier", + "propertyType": "text", + "dependency": { + "type": "or", + "values": [ + { + "key": "mode", + "value": "geometry" + }, + { + "key": "mode", + "value": "geography" + } + ] + } + }, + { + "propertyName": "SRID", + "propertyKeyword": "srid", + "propertyType": "text", + "dependency": { + "type": "or", + "values": [ + { + "key": "mode", + "value": "geometry" + }, + { + "key": "mode", + "value": "geography" + } + ] + } + }, { "propertyName": "Comments", "propertyKeyword": "description",