From a62721bc55d025a21c325d5d5ff4f751fd705bd3 Mon Sep 17 00:00:00 2001 From: 1ilit <1ilit@proton.me> Date: Sun, 15 Jun 2025 20:24:11 +0400 Subject: [PATCH] Fix mssql export to have types with correct sizes (#496) --- src/utils/exportSQL/mssql.js | 37 +++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/utils/exportSQL/mssql.js b/src/utils/exportSQL/mssql.js index 5cead3b..a2354d3 100644 --- a/src/utils/exportSQL/mssql.js +++ b/src/utils/exportSQL/mssql.js @@ -1,6 +1,7 @@ import { parseDefault, escapeQuotes } from "./shared"; import { dbToTypes } from "../../data/datatypes"; +import { DB } from "../../data/constants"; function generateAddExtendedPropertySQL(value, level1name, level2name = null) { if (!value || value.trim() === "") { @@ -34,23 +35,25 @@ export function toMSSQL(diagram) { const tablesSql = diagram.tables .map((table) => { const fieldsSql = table.fields - .map( - (field) => - `\t[${field.name}] ${field.type}${field.size && `(${field.size})`}${ - field.notNull ? " NOT NULL" : "" - }${field.increment ? " IDENTITY" : ""}${ - field.unique ? " UNIQUE" : "" - }${ - field.default !== "" - ? ` DEFAULT ${parseDefault(field, diagram.database)}` - : "" - }${ - field.check === "" || - !dbToTypes[diagram.database][field.type].hasCheck - ? "" - : ` CHECK(${field.check})` - }`, - ) + .map((field) => { + const typeMetaData = dbToTypes[DB.MSSQL][field.type.toUpperCase()]; + const isSized = typeMetaData.isSized || typeMetaData.hasPrecision; + + return `\t[${field.name}] ${field.type}${field.size && isSized ? `(${field.size})` : ""}${ + field.notNull ? " NOT NULL" : "" + }${field.increment ? " IDENTITY" : ""}${ + field.unique ? " UNIQUE" : "" + }${ + field.default !== "" + ? ` DEFAULT ${parseDefault(field, diagram.database)}` + : "" + }${ + field.check === "" || + !dbToTypes[diagram.database][field.type].hasCheck + ? "" + : ` CHECK(${field.check})` + }`; + }) .join(",\n"); const primaryKeys = table.fields.filter((f) => f.primary);