diff --git a/reverse_engineering/helpers/columnsREHelper.js b/reverse_engineering/helpers/columnsREHelper.js index 6ed96d9..23ba7a7 100644 --- a/reverse_engineering/helpers/columnsREHelper.js +++ b/reverse_engineering/helpers/columnsREHelper.js @@ -98,7 +98,7 @@ const handleType = typeContainer => { case 'char': case 'varchar': case 'string': - return { type: 'text', mode: typeContainer.type }; + return { type: 'text', mode: typeContainer.type, maxLength: typeContainer.maxLength }; case 'boolean': return { type: 'bool' }; case 'binary': diff --git a/reverse_engineering/sqlBaseToCollectionsVisitor.js b/reverse_engineering/sqlBaseToCollectionsVisitor.js index 7a0b8f0..7ff89cd 100644 --- a/reverse_engineering/sqlBaseToCollectionsVisitor.js +++ b/reverse_engineering/sqlBaseToCollectionsVisitor.js @@ -394,10 +394,16 @@ class Visitor extends SqlBaseVisitor { } visitPrimitiveDataType(ctx) { + const type = getName(ctx.identifier(0)).toLowerCase(); + const precision = getLabelValue(ctx, 'precision'); + const scale = getLabelValue(ctx, 'scale'); + const isTextType = type === 'char' || type === 'varchar'; + return { - type: getName(ctx.identifier(0)).toLowerCase(), - precision: getLabelValue(ctx, 'precision'), - scale: getLabelValue(ctx, 'scale'), + type, + precision: isTextType ? undefined : precision, + scale, + maxLength: isTextType && precision && !scale ? precision : '', collation: ctx.collation ? getName(ctx.collation) : undefined, }; }