From 11d0c4eca61f62009f03bb4ce59def5d9c68be5f Mon Sep 17 00:00:00 2001 From: chulanovskyi Date: Thu, 13 Aug 2026 12:26:38 +0300 Subject: [PATCH 1/2] fix: proper handling of precision param for defcloat type --- .oxlintrc.json | 3 ++- forward_engineering/ddlProvider/ddlProvider.js | 7 ++++--- forward_engineering/types/ddlProvider.d.ts | 3 +++ forward_engineering/utils/general.js | 9 +++++++++ 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/.oxlintrc.json b/.oxlintrc.json index 18a6340..333c797 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -46,7 +46,8 @@ "jsdoc/require-param-name": "error", "jsdoc/require-param-type": "error", "jsdoc/require-returns": "error", - "jsdoc/require-returns-type": "error" + "jsdoc/require-returns-type": "error", + "typescript/prefer-nullish-coalescing": "warn" }, "ignorePatterns": [ "**/*.config.*", diff --git a/forward_engineering/ddlProvider/ddlProvider.js b/forward_engineering/ddlProvider/ddlProvider.js index 22be9eb..ba786cf 100644 --- a/forward_engineering/ddlProvider/ddlProvider.js +++ b/forward_engineering/ddlProvider/ddlProvider.js @@ -61,6 +61,7 @@ const { joinActivatedAndDeactivatedStatements } = require('../utils/joinActivate const { getIndexName } = require('./ddlHelpers/index/getIndexName.js'); const { getIndexType } = require('./ddlHelpers/index/getIndexType.js'); const { getIndexOptions } = require('./ddlHelpers/index/getIndexOptions.js'); +const { getNumericValue } = require('../utils/general.js'); /** * Format view columns as a string. @@ -214,9 +215,9 @@ const hydrateColumn = ({ columnDefinition, jsonSchema, schemaData, definitionJso default: columnDefinition.default, comment: jsonSchema.refDescription ?? jsonSchema.description ?? definitionSchema.description, isActivated: columnDefinition.isActivated, - scale: columnDefinition.scale, - precision: columnDefinition.precision, - length: columnDefinition.length, + scale: getNumericValue(columnDefinition.scale ?? jsonSchema.scale), + precision: getNumericValue(columnDefinition.precision ?? jsonSchema.precision), + length: columnDefinition.length ?? jsonSchema.length, schemaName: schemaData.schemaName, fractSecPrecision: jsonSchema.fractSecPrecision, withTimeZone: jsonSchema.withTimeZone, diff --git a/forward_engineering/types/ddlProvider.d.ts b/forward_engineering/types/ddlProvider.d.ts index 98741a8..5b08792 100644 --- a/forward_engineering/types/ddlProvider.d.ts +++ b/forward_engineering/types/ddlProvider.d.ts @@ -90,6 +90,9 @@ export type JsonSchemaColumn = { collectionName?: string; bucketName?: string; properties?: Record; + scale?: number; + precision?: number; + length?: number; }; export type CompositeKeyGroup = { diff --git a/forward_engineering/utils/general.js b/forward_engineering/utils/general.js index 19d39e7..b0a462d 100644 --- a/forward_engineering/utils/general.js +++ b/forward_engineering/utils/general.js @@ -321,6 +321,14 @@ const getUpdatedProperties = (compMod, properties) => { return updatedProperties; }; +/** + * Converts input into a number, if it's not valid - returns undefined. + * + * @param {unknown} prop Unknown input value + * @returns {number | undefined} . + */ +const getNumericValue = prop => (prop && !Number.isNaN(Number(prop)) ? Number(prop) : undefined); + module.exports = { setTab, hasType, @@ -343,4 +351,5 @@ module.exports = { getSchemaNameFromCollection, getUpdatedProperties, checkFieldPropertiesChanged, + getNumericValue, }; From 5fd3cfc496962a7df3e2375f88bd60ca5c564610 Mon Sep 17 00:00:00 2001 From: chulanovskyi Date: Thu, 13 Aug 2026 12:31:11 +0300 Subject: [PATCH 2/2] chore: proper operator --- .oxlintrc.json | 2 +- forward_engineering/ddlProvider/ddlProvider.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.oxlintrc.json b/.oxlintrc.json index 333c797..0c6d226 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -47,7 +47,7 @@ "jsdoc/require-param-type": "error", "jsdoc/require-returns": "error", "jsdoc/require-returns-type": "error", - "typescript/prefer-nullish-coalescing": "warn" + "typescript/prefer-nullish-coalescing": "off" }, "ignorePatterns": [ "**/*.config.*", diff --git a/forward_engineering/ddlProvider/ddlProvider.js b/forward_engineering/ddlProvider/ddlProvider.js index ba786cf..adb45c0 100644 --- a/forward_engineering/ddlProvider/ddlProvider.js +++ b/forward_engineering/ddlProvider/ddlProvider.js @@ -215,9 +215,9 @@ const hydrateColumn = ({ columnDefinition, jsonSchema, schemaData, definitionJso default: columnDefinition.default, comment: jsonSchema.refDescription ?? jsonSchema.description ?? definitionSchema.description, isActivated: columnDefinition.isActivated, - scale: getNumericValue(columnDefinition.scale ?? jsonSchema.scale), - precision: getNumericValue(columnDefinition.precision ?? jsonSchema.precision), - length: columnDefinition.length ?? jsonSchema.length, + scale: getNumericValue(columnDefinition.scale || jsonSchema.scale), + precision: getNumericValue(columnDefinition.precision || jsonSchema.precision), + length: columnDefinition.length, schemaName: schemaData.schemaName, fractSecPrecision: jsonSchema.fractSecPrecision, withTimeZone: jsonSchema.withTimeZone,