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

Function jsonToMySQL

src/utils/exportSQL/generic.js:192–256  ·  view source on GitHub ↗
(obj)

Source from the content-addressed store, hash-verified

190}
191
192export function jsonToMySQL(obj) {
193 return `${obj.tables
194 .map(
195 (table) =>
196 `CREATE TABLE IF NOT EXISTS \`${table.name}\` (\n${table.fields
197 .map(
198 (field) =>
199 `\t\`${
200 field.name
201 }\` ${getTypeString(field, obj.database)}${field.notNull ? " NOT NULL" : ""}${
202 field.increment ? " AUTO_INCREMENT" : ""
203 }${field.unique ? " UNIQUE" : ""}${
204 field.default !== ""
205 ? ` DEFAULT ${parseDefault(field, obj.database)}`
206 : ""
207 }${
208 field.check === "" ||
209 !dbToTypes[obj.database][field.type].hasCheck
210 ? !Object.keys(defaultTypes).includes(field.type)
211 ? ` CHECK(\n\t\tJSON_SCHEMA_VALID("${generateSchema(
212 obj.types.find(
213 (t) => t.name === field.type.toLowerCase(),
214 ),
215 )}", \`${field.name}\`))`
216 : ""
217 : ` CHECK(${field.check})`
218 }${field.comment ? ` COMMENT '${escapeQuotes(field.comment)}'` : ""}`,
219 )
220 .join(",\n")}${
221 table.fields.filter((f) => f.primary).length > 0
222 ? `,\n\tPRIMARY KEY(${table.fields
223 .filter((f) => f.primary)
224 .map((f) => `\`${f.name}\``)
225 .join(", ")})`
226 : ""
227 }${uniqueConstraintClause(table, (s) => `\`${s}\``)}\n)${table.comment ? ` COMMENT='${escapeQuotes(table.comment)}'` : ""};\n${`\n${table.indices
228 .map(
229 (i) =>
230 `CREATE ${i.unique ? "UNIQUE " : ""}INDEX \`${i.name}\`\nON \`${table.name}\` (${i.fields
231 .map((f) => `\`${f}\``)
232 .join(", ")});`,
233 )
234 .join("\n")}`}`,
235 )
236 .join("\n")}\n${obj.references
237 .map((r) => {
238 const { name: startName, fields: startFields } = obj.tables.find(
239 (t) => t.id === r.startTableId,
240 );
241
242 const endTable = obj.tables.find((t) => t.id === r.endTableId);
243 const { name: endName } = endTable;
244 const { startColumns, endColumns } = getFkColumnNames(
245 r,
246 { fields: startFields },
247 endTable,
248 );
249 return `ALTER TABLE \`${startName}\`\nADD FOREIGN KEY(${startColumns

Callers 1

ControlPanelFunction · 0.90

Calls 6

parseDefaultFunction · 0.90
escapeQuotesFunction · 0.90
uniqueConstraintClauseFunction · 0.90
getFkColumnNamesFunction · 0.90
getTypeStringFunction · 0.85
generateSchemaFunction · 0.85

Tested by

no test coverage detected