diff --git a/.oxlintrc.json b/.oxlintrc.json index 18a6340..0c6d226 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": "off" }, "ignorePatterns": [ "**/*.config.*", diff --git a/forward_engineering/ddlProvider/ddlProvider.js b/forward_engineering/ddlProvider/ddlProvider.js index 22be9eb..adb45c0 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,8 +215,8 @@ 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, + scale: getNumericValue(columnDefinition.scale || jsonSchema.scale), + precision: getNumericValue(columnDefinition.precision || jsonSchema.precision), length: columnDefinition.length, schemaName: schemaData.schemaName, fractSecPrecision: jsonSchema.fractSecPrecision, 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, };