(obj)
| 509 | } |
| 510 | |
| 511 | export function jsonToSQLServer(obj) { |
| 512 | return `${obj.types |
| 513 | .map((type) => { |
| 514 | return `${ |
| 515 | type.comment === "" ? "" : `/**\n${type.comment}\n*/\n` |
| 516 | }CREATE TYPE [${type.name}] FROM ${ |
| 517 | type.fields.length < 0 |
| 518 | ? "" |
| 519 | : `${getTypeString(type.fields[0], obj.database, DB.MSSQL, true)}` |
| 520 | };\nGO\n`; |
| 521 | }) |
| 522 | .join("\n")}\n${obj.tables |
| 523 | .map( |
| 524 | (table) => |
| 525 | `${ |
| 526 | table.comment === "" ? "" : `/**\n${table.comment}\n*/\n` |
| 527 | }CREATE TABLE [${table.name}] (\n${table.fields |
| 528 | .map( |
| 529 | (field) => |
| 530 | `${field.comment === "" ? "" : `\t-- ${field.comment}\n`}\t[${ |
| 531 | field.name |
| 532 | }] ${getTypeString(field, obj.database, DB.MSSQL)}${ |
| 533 | field.notNull ? " NOT NULL" : "" |
| 534 | }${field.increment ? " IDENTITY" : ""}${ |
| 535 | field.unique ? " UNIQUE" : "" |
| 536 | }${ |
| 537 | field.default !== "" |
| 538 | ? ` DEFAULT ${parseDefault(field, obj.database)}` |
| 539 | : "" |
| 540 | }${ |
| 541 | field.check === "" || |
| 542 | !dbToTypes[obj.database][field.type].hasCheck |
| 543 | ? "" |
| 544 | : ` CHECK(${field.check})` |
| 545 | }`, |
| 546 | ) |
| 547 | .join(",\n")}${ |
| 548 | table.fields.filter((f) => f.primary).length > 0 |
| 549 | ? `,\n\tPRIMARY KEY(${table.fields |
| 550 | .filter((f) => f.primary) |
| 551 | .map((f) => `[${f.name}]`) |
| 552 | .join(", ")})` |
| 553 | : "" |
| 554 | }${uniqueConstraintClause(table, (s) => `[${s}]`)}\n);\nGO\n${table.indices |
| 555 | .map( |
| 556 | (i) => |
| 557 | `\nCREATE ${i.unique ? "UNIQUE " : ""}INDEX [${ |
| 558 | i.name |
| 559 | }]\nON [${table.name}] (${i.fields |
| 560 | .map((f) => `[${f}]`) |
| 561 | .join(", ")});\nGO\n`, |
| 562 | ) |
| 563 | .join("")}`, |
| 564 | ) |
| 565 | .join("\n")}\n${obj.references |
| 566 | .map((r) => { |
| 567 | const { name: startName, fields: startFields } = obj.tables.find( |
| 568 | (t) => t.id === r.startTableId, |
no test coverage detected