MCPcopy
hub / github.com/drawdb-io/drawdb / toMariaDB

Function toMariaDB

src/utils/exportSQL/mariadb.js:28–86  ·  view source on GitHub ↗
(diagram)

Source from the content-addressed store, hash-verified

26}
27
28export function toMariaDB(diagram) {
29 return `${diagram.tables
30 .map(
31 (table) =>
32 `CREATE OR REPLACE TABLE \`${table.name}\` (\n${table.fields
33 .map(
34 (field) =>
35 `\t\`${field.name}\` ${parseType(field)}${field.unsigned ? " UNSIGNED" : ""}${field.notNull ? " NOT NULL" : ""}${
36 field.increment ? " AUTO_INCREMENT" : ""
37 }${field.unique ? " UNIQUE" : ""}${
38 field.default !== ""
39 ? ` DEFAULT ${parseDefault(field, diagram.database)}`
40 : ""
41 }${
42 field.check === "" ||
43 !dbToTypes[diagram.database][field.type].hasCheck
44 ? ""
45 : ` CHECK(${field.check})`
46 }${field.comment ? ` COMMENT '${escapeQuotes(field.comment)}'` : ""}`,
47 )
48 .join(",\n")}${
49 table.fields.filter((f) => f.primary).length > 0
50 ? `,\n\tPRIMARY KEY(${table.fields
51 .filter((f) => f.primary)
52 .map((f) => `\`${f.name}\``)
53 .join(", ")})`
54 : ""
55 }${uniqueConstraintClause(table, (s) => `\`${s}\``)}\n)${table.comment ? ` COMMENT='${escapeQuotes(table.comment)}'` : ""};${`\n${table.indices
56 .map(
57 (i) =>
58 `\nCREATE ${i.unique ? "UNIQUE " : ""}INDEX \`${
59 i.name
60 }\`\nON \`${table.name}\` (${i.fields
61 .map((f) => `\`${f}\``)
62 .join(", ")});`,
63 )
64 .join("")}`}`,
65 )
66 .join("\n")}\n${diagram.references
67 .map((r) => {
68 const { name: startName, fields: startFields } = diagram.tables.find(
69 (t) => t.id === r.startTableId,
70 );
71
72 const endTable = diagram.tables.find((t) => t.id === r.endTableId);
73 const { name: endName } = endTable;
74 const { startColumns, endColumns } = getFkColumnNames(
75 r,
76 { fields: startFields },
77 endTable,
78 );
79 return `ALTER TABLE \`${startName}\`\nADD FOREIGN KEY(${startColumns
80 .map((c) => `\`${c}\``)
81 .join(", ")}) REFERENCES \`${endName}\`(${endColumns
82 .map((c) => `\`${c}\``)
83 .join(", ")})\nON UPDATE ${r.updateConstraint.toUpperCase()} ON DELETE ${r.deleteConstraint.toUpperCase()};`;
84 })
85 .join("\n")}`;

Callers 1

exportSQLFunction · 0.90

Calls 5

parseDefaultFunction · 0.90
escapeQuotesFunction · 0.90
uniqueConstraintClauseFunction · 0.90
getFkColumnNamesFunction · 0.90
parseTypeFunction · 0.70

Tested by

no test coverage detected