|
1 | 1 | import { parseDefault, escapeQuotes } from "./shared";
|
2 | 2 |
|
3 | 3 | import { dbToTypes } from "../../data/datatypes";
|
| 4 | +import { DB } from "../../data/constants"; |
4 | 5 |
|
5 | 6 | function generateAddExtendedPropertySQL(value, level1name, level2name = null) {
|
6 | 7 | if (!value || value.trim() === "") {
|
@@ -34,23 +35,25 @@ export function toMSSQL(diagram) {
|
34 | 35 | const tablesSql = diagram.tables
|
35 | 36 | .map((table) => {
|
36 | 37 | const fieldsSql = table.fields
|
37 |
| - .map( |
38 |
| - (field) => |
39 |
| - `\t[${field.name}] ${field.type}${field.size && `(${field.size})`}${ |
40 |
| - field.notNull ? " NOT NULL" : "" |
41 |
| - }${field.increment ? " IDENTITY" : ""}${ |
42 |
| - field.unique ? " UNIQUE" : "" |
43 |
| - }${ |
44 |
| - field.default !== "" |
45 |
| - ? ` DEFAULT ${parseDefault(field, diagram.database)}` |
46 |
| - : "" |
47 |
| - }${ |
48 |
| - field.check === "" || |
49 |
| - !dbToTypes[diagram.database][field.type].hasCheck |
50 |
| - ? "" |
51 |
| - : ` CHECK(${field.check})` |
52 |
| - }`, |
53 |
| - ) |
| 38 | + .map((field) => { |
| 39 | + const typeMetaData = dbToTypes[DB.MSSQL][field.type.toUpperCase()]; |
| 40 | + const isSized = typeMetaData.isSized || typeMetaData.hasPrecision; |
| 41 | + |
| 42 | + return `\t[${field.name}] ${field.type}${field.size && isSized ? `(${field.size})` : ""}${ |
| 43 | + field.notNull ? " NOT NULL" : "" |
| 44 | + }${field.increment ? " IDENTITY" : ""}${ |
| 45 | + field.unique ? " UNIQUE" : "" |
| 46 | + }${ |
| 47 | + field.default !== "" |
| 48 | + ? ` DEFAULT ${parseDefault(field, diagram.database)}` |
| 49 | + : "" |
| 50 | + }${ |
| 51 | + field.check === "" || |
| 52 | + !dbToTypes[diagram.database][field.type].hasCheck |
| 53 | + ? "" |
| 54 | + : ` CHECK(${field.check})` |
| 55 | + }`; |
| 56 | + }) |
54 | 57 | .join(",\n");
|
55 | 58 |
|
56 | 59 | const primaryKeys = table.fields.filter((f) => f.primary);
|
|
0 commit comments