(obj)
| 441 | } |
| 442 | |
| 443 | export 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, |
no test coverage detected