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

Function toMySQL

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

Source from the content-addressed store, hash-verified

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

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