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

Function jsonToMariaDB

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

Source from the content-addressed store, hash-verified

441}
442
443export function jsonToMariaDB(obj) {
444 return `${obj.tables
445 .map(
446 (table) =>
447 `CREATE OR REPLACE TABLE \`${table.name}\` (\n${table.fields
448 .map(
449 (field) =>
450 `\t\`${
451 field.name
452 }\` ${getTypeString(field, obj.database, DB.MYSQL)}${field.notNull ? " NOT NULL" : ""}${
453 field.increment ? " AUTO_INCREMENT" : ""
454 }${field.unique ? " UNIQUE" : ""}${
455 field.default !== ""
456 ? ` DEFAULT ${parseDefault(field, obj.database)}`
457 : ""
458 }${
459 field.check === "" ||
460 !dbToTypes[obj.database][field.type].hasCheck
461 ? !Object.keys(defaultTypes).includes(field.type)
462 ? ` CHECK(\n\t\tJSON_SCHEMA_VALID('${generateSchema(
463 obj.types.find(
464 (t) => t.name === field.type.toLowerCase(),
465 ),
466 )}', \`${field.name}\`))`
467 : ""
468 : ` CHECK(${field.check})`
469 }${field.comment ? ` COMMENT '${escapeQuotes(field.comment)}'` : ""}`,
470 )
471 .join(",\n")}${
472 table.fields.filter((f) => f.primary).length > 0
473 ? `,\n\tPRIMARY KEY(${table.fields
474 .filter((f) => f.primary)
475 .map((f) => `\`${f.name}\``)
476 .join(", ")})`
477 : ""
478 }${uniqueConstraintClause(table, (s) => `\`${s}\``)}\n)${table.comment ? ` COMMENT='${escapeQuotes(table.comment)}'` : ""};${`\n${table.indices
479 .map(
480 (i) =>
481 `CREATE ${i.unique ? "UNIQUE " : ""}INDEX \`${
482 i.name
483 }\`\nON \`${table.name}\` (${i.fields
484 .map((f) => `\`${f}\``)
485 .join(", ")});`,
486 )
487 .join("\n")}`}`,
488 )
489 .join("\n")}\n${obj.references
490 .map((r) => {
491 const { name: startName, fields: startFields } = obj.tables.find(
492 (t) => t.id === r.startTableId,
493 );
494
495 const endTable = obj.tables.find((t) => t.id === r.endTableId);
496 const { name: endName } = endTable;
497 const { startColumns, endColumns } = getFkColumnNames(
498 r,
499 { fields: startFields },
500 endTable,

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