(diagram)
| 6 | } from "./shared"; |
| 7 | |
| 8 | export function toOracleSQL(diagram) { |
| 9 | return `${diagram.tables |
| 10 | .map( |
| 11 | (table) => |
| 12 | `${ |
| 13 | table.comment === "" ? "" : `/* ${table.comment} */\n` |
| 14 | }CREATE TABLE "${table.name}" (\n${table.fields |
| 15 | .map( |
| 16 | (field) => |
| 17 | `${field.comment === "" ? "" : `\t-- ${field.comment}\n`}\t"${ |
| 18 | field.name |
| 19 | }" ${field.type}${ |
| 20 | field.size !== undefined && field.size !== "" |
| 21 | ? "(" + field.size + ")" |
| 22 | : "" |
| 23 | }${field.notNull ? " NOT NULL" : ""}${ |
| 24 | field.increment ? " GENERATED ALWAYS AS IDENTITY" : "" |
| 25 | }${field.unique ? " UNIQUE" : ""}${ |
| 26 | field.default !== "" |
| 27 | ? ` DEFAULT ${parseDefault(field, diagram.database)}` |
| 28 | : "" |
| 29 | }${ |
| 30 | field.check === "" || |
| 31 | !dbToTypes[diagram.database][field.type].hasCheck |
| 32 | ? "" |
| 33 | : ` CHECK(${field.check})` |
| 34 | }${field.comment ? ` -- ${field.comment}` : ""}`, |
| 35 | ) |
| 36 | .join(",\n")}${ |
| 37 | table.fields.filter((f) => f.primary).length > 0 |
| 38 | ? `,\n\tPRIMARY KEY(${table.fields |
| 39 | .filter((f) => f.primary) |
| 40 | .map((f) => `"${f.name}"`) |
| 41 | .join(", ")})` |
| 42 | : "" |
| 43 | }${uniqueConstraintClause(table, (s) => `"${s}"`)}\n)${table.comment ? ` -- ${table.comment}` : ""};\n${`\n${table.indices |
| 44 | .map( |
| 45 | (i) => |
| 46 | `\nCREATE ${i.unique ? "UNIQUE " : ""}INDEX "${i.name}"\nON "${table.name}" (${i.fields |
| 47 | .map((f) => `"${f}"`) |
| 48 | .join(", ")});`, |
| 49 | ) |
| 50 | .join("")}`}`, |
| 51 | ) |
| 52 | .join("\n")}\n${diagram.references |
| 53 | .map((r) => { |
| 54 | const { name: startName, fields: startFields } = diagram.tables.find( |
| 55 | (t) => t.id === r.startTableId, |
| 56 | ); |
| 57 | const endTable = diagram.tables.find((t) => t.id === r.endTableId); |
| 58 | const { name: endName } = endTable; |
| 59 | const { startColumns, endColumns } = getFkColumnNames( |
| 60 | r, |
| 61 | { fields: startFields }, |
| 62 | endTable, |
| 63 | ); |
| 64 | return `ALTER TABLE "${startName}"\nADD CONSTRAINT "${r.name}" FOREIGN KEY (${startColumns |
| 65 | .map((c) => `"${c}"`) |
no test coverage detected