From f71f41d11cf3dcc373eb68d644e6e10c957f7f1e Mon Sep 17 00:00:00 2001 From: Luis Carlos Date: Fri, 23 Aug 2024 16:50:53 -0400 Subject: [PATCH 01/11] Add documentation menu and generate documentation markdown --- src/components/EditorHeader/ControlPanel.jsx | 24 ++++++++++ src/utils/exportAs/documentation.js | 49 ++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 src/utils/exportAs/documentation.js diff --git a/src/components/EditorHeader/ControlPanel.jsx b/src/components/EditorHeader/ControlPanel.jsx index 86171df..d2ad401 100644 --- a/src/components/EditorHeader/ControlPanel.jsx +++ b/src/components/EditorHeader/ControlPanel.jsx @@ -70,6 +70,7 @@ import { exportSQL } from "../../utils/exportSQL"; import { databases } from "../../data/databases"; import { jsonToMermaid } from "../../utils/exportAs/mermaid"; import { isRtl } from "../../i18n/utils/rtl"; +import { jsonToDocumentation } from "../../utils/exportAs/documentation"; export default function ControlPanel({ diagramId, @@ -1064,6 +1065,29 @@ export default function ControlPanel({ ], function: () => {}, }, + Documentation: { + children: [ + { + Markdown: () => { + setModal(MODAL.CODE); + const result = jsonToDocumentation({ + tables: tables, + relationships: relationships, + notes: notes, + subjectAreas: areas, + database: database, + title: title, + }); + setExportData((prev) => ({ + ...prev, + data: result, + extension: "md", + })); + } + } + ], + function: () => {}, + }, exit: { function: () => { save(); diff --git a/src/utils/exportAs/documentation.js b/src/utils/exportAs/documentation.js new file mode 100644 index 0000000..2ec7bd4 --- /dev/null +++ b/src/utils/exportAs/documentation.js @@ -0,0 +1,49 @@ +import { dbToTypes } from "../../data/datatypes"; +import { jsonToMermaid } from "./mermaid"; + +export function jsonToDocumentation(obj) { + + const documentationSummary = obj.tables + .map((table) => { + return `\t- [${table.name}](#${table.name})\n`; + }).join(""); + + const documentationEntities = obj.tables + .map((table) => { + const fields = table.fields + .map((field) => { + const fieldType = + field.type + + ((dbToTypes[obj.database][field.type].isSized || + dbToTypes[obj.database][field.type].hasPrecision) && + field.size && + field.size !== "" + ? "(" + field.size + ")" + : ""); + return `| **${field.name}** | ${fieldType} | ${field.primary ? "🔑 PK, " : ""}` + + `${field.nullable ? "null " : "not null "}${field.unique ? ", unique" : ""}${field.increment?", autoincrement":""}` + + `${field.default ? `, default: ${field.default}` : ""} | |${field.comment ? field.comment : ""} |`; + + }).join("\n"); + return `### ${table.name}\n${table.comment ? table.comment : ""}\n` + + `| Name | Type | Settings | References | Note |\n` + + `|-------------|---------------|-------------------------------|-------------------------------|--------------------------------|\n` + + `${fields}\n\n`; + }).join(""); + + const documentationRelationships = obj.relationships?.length + ? obj.relationships + .map((r) => { + console.log(r); + const startTable = obj.tables[r.startTableId].name; + const endTable = obj.tables[r.endTableId].name; + return `- **${startTable} to ${endTable}**: ${r.cardinality} (${r.comment ? r.comment : ""})\n`; + }).join("") : ""; + + return `# ${obj.title} Database Documentation\n## Summary\n- [Introduction](#introduction)\n- [Database Type](#database-type)\n`+ + `- [Table Structure](#table-structure)\n${documentationSummary}\n- [Relationships](#relationships)\n- [Database Diagram](#database-Diagram)\n`+ + `## Introduction\n${obj.notes}\n## Database type\n- **Database system:** `+ + `${obj.database.type}\n## Table structure\n\n${documentationEntities}`+ + `\n\n## Relationships\n${documentationRelationships}\n\n`+ + `## Database Diagram\n\`\`\`${jsonToMermaid(obj)}\`\`\``; +} \ No newline at end of file From 2bca034671e35a4e2e0368ddb6c03e5bab55ccda Mon Sep 17 00:00:00 2001 From: Luis Carlos Date: Sun, 25 Aug 2024 01:02:58 -0400 Subject: [PATCH 02/11] Add references in the table --- src/utils/exportAs/documentation.js | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/utils/exportAs/documentation.js b/src/utils/exportAs/documentation.js index 2ec7bd4..cd169dd 100644 --- a/src/utils/exportAs/documentation.js +++ b/src/utils/exportAs/documentation.js @@ -5,8 +5,8 @@ export function jsonToDocumentation(obj) { const documentationSummary = obj.tables .map((table) => { - return `\t- [${table.name}](#${table.name})\n`; - }).join(""); + return `\t- [${table.name}](#${table.name})`; + }).join("\n"); const documentationEntities = obj.tables .map((table) => { @@ -22,7 +22,9 @@ export function jsonToDocumentation(obj) { : ""); return `| **${field.name}** | ${fieldType} | ${field.primary ? "🔑 PK, " : ""}` + `${field.nullable ? "null " : "not null "}${field.unique ? ", unique" : ""}${field.increment?", autoincrement":""}` + - `${field.default ? `, default: ${field.default}` : ""} | |${field.comment ? field.comment : ""} |`; + `${field.default ? `, default: ${field.default}` : ""} | ` + + `${relationshipByField(table.id, obj.relationships, field.id)}` + + ` |${field.comment ? field.comment : ""} |`; }).join("\n"); return `### ${table.name}\n${table.comment ? table.comment : ""}\n` + @@ -31,17 +33,25 @@ export function jsonToDocumentation(obj) { `${fields}\n\n`; }).join(""); + function relationshipByField(table, relationships, fieldId) { + return relationships.filter(r => r.startTableId === table && r.startFieldId === fieldId) + .map((rel) => rel.name); + + } + const documentationRelationships = obj.relationships?.length ? obj.relationships .map((r) => { - console.log(r); const startTable = obj.tables[r.startTableId].name; const endTable = obj.tables[r.endTableId].name; return `- **${startTable} to ${endTable}**: ${r.cardinality} (${r.comment ? r.comment : ""})\n`; }).join("") : ""; + console.log(obj.tables); + console.log(obj.relationships); + return `# ${obj.title} Database Documentation\n## Summary\n- [Introduction](#introduction)\n- [Database Type](#database-type)\n`+ - `- [Table Structure](#table-structure)\n${documentationSummary}\n- [Relationships](#relationships)\n- [Database Diagram](#database-Diagram)\n`+ + `- [Table Structure](#table-structure)\n${documentationSummary}\n- [Relationships](#relationships)\n- [Database Diagram](#database-Diagram)\n\n`+ `## Introduction\n${obj.notes}\n## Database type\n- **Database system:** `+ `${obj.database.type}\n## Table structure\n\n${documentationEntities}`+ `\n\n## Relationships\n${documentationRelationships}\n\n`+ From 4aef6c6e253a9472c8ee99878c6ce15f00f7f083 Mon Sep 17 00:00:00 2001 From: Luis Carlos Date: Mon, 26 Aug 2024 00:42:47 -0400 Subject: [PATCH 03/11] Add languages --- src/components/EditorHeader/ControlPanel.jsx | 2 +- src/i18n/locales/en.js | 1 + src/i18n/locales/es.js | 1 + src/i18n/locales/fr.js | 1 + src/utils/exportAs/documentation.js | 12 ++++++------ 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/components/EditorHeader/ControlPanel.jsx b/src/components/EditorHeader/ControlPanel.jsx index d2ad401..fecedf2 100644 --- a/src/components/EditorHeader/ControlPanel.jsx +++ b/src/components/EditorHeader/ControlPanel.jsx @@ -1065,7 +1065,7 @@ export default function ControlPanel({ ], function: () => {}, }, - Documentation: { + documentation: { children: [ { Markdown: () => { diff --git a/src/i18n/locales/en.js b/src/i18n/locales/en.js index 944e44b..ace7f05 100644 --- a/src/i18n/locales/en.js +++ b/src/i18n/locales/en.js @@ -236,6 +236,7 @@ const en = { empty_index_name: "Declared an index with no name in table '{{tableName}}'", didnt_find_diagram: "Oops! Didn't find the diagram.", unsigned: "Unsigned", + documentation: "Documentation", }, }; diff --git a/src/i18n/locales/es.js b/src/i18n/locales/es.js index 173b297..7883dcf 100644 --- a/src/i18n/locales/es.js +++ b/src/i18n/locales/es.js @@ -212,6 +212,7 @@ const es = { edit_relationship: "{{extra}} Editar relación {{refName}}", delete_relationship: "Eliminar relación {{refName}}", not_found: "No encontrado", + documentation: "Documentación", }, }; diff --git a/src/i18n/locales/fr.js b/src/i18n/locales/fr.js index 31cb97f..2e8ae7f 100644 --- a/src/i18n/locales/fr.js +++ b/src/i18n/locales/fr.js @@ -217,6 +217,7 @@ const fr = { edit_relationship: "{{extra}} Modifier la relation {{refName}}", delete_relationship: "Supprimer la relation {{refName}}", not_found: "Non trouvé", + documentation: "Documentation", }, }; diff --git a/src/utils/exportAs/documentation.js b/src/utils/exportAs/documentation.js index cd169dd..f4764e8 100644 --- a/src/utils/exportAs/documentation.js +++ b/src/utils/exportAs/documentation.js @@ -27,7 +27,7 @@ export function jsonToDocumentation(obj) { ` |${field.comment ? field.comment : ""} |`; }).join("\n"); - return `### ${table.name}\n${table.comment ? table.comment : ""}\n` + + return `### ${table.name}\n${table.comment ? table.comment : ""}\n\n` + `| Name | Type | Settings | References | Note |\n` + `|-------------|---------------|-------------------------------|-------------------------------|--------------------------------|\n` + `${fields}\n\n`; @@ -44,16 +44,16 @@ export function jsonToDocumentation(obj) { .map((r) => { const startTable = obj.tables[r.startTableId].name; const endTable = obj.tables[r.endTableId].name; - return `- **${startTable} to ${endTable}**: ${r.cardinality} (${r.comment ? r.comment : ""})\n`; + return `- **${startTable} to ${endTable}**: ${r.cardinality} ${r.comment ? "(" + r.comment + ")" : ""}\n`; }).join("") : ""; console.log(obj.tables); console.log(obj.relationships); - return `# ${obj.title} Database Documentation\n## Summary\n- [Introduction](#introduction)\n- [Database Type](#database-type)\n`+ + return `# ${obj.title} documentation\n## Summary\n\n- [Introduction](#introduction)\n- [Database Type](#database-type)\n`+ `- [Table Structure](#table-structure)\n${documentationSummary}\n- [Relationships](#relationships)\n- [Database Diagram](#database-Diagram)\n\n`+ - `## Introduction\n${obj.notes}\n## Database type\n- **Database system:** `+ + `## Introduction\n\n## Database type\n\n- **Database system:** `+ `${obj.database.type}\n## Table structure\n\n${documentationEntities}`+ - `\n\n## Relationships\n${documentationRelationships}\n\n`+ - `## Database Diagram\n\`\`\`${jsonToMermaid(obj)}\`\`\``; + `\n\n## Relationships\n\n${documentationRelationships}\n\n`+ + `## Database Diagram\n\n\`\`\`${jsonToMermaid(obj)}\`\`\``; } \ No newline at end of file From ee3a50912a35e9aaf15ad73e4735fb80dfae5b24 Mon Sep 17 00:00:00 2001 From: Luis Carlos Date: Mon, 26 Aug 2024 11:48:58 -0400 Subject: [PATCH 04/11] fix the PR comments --- src/components/EditorHeader/ControlPanel.jsx | 39 +++++++++----------- src/i18n/locales/en.js | 1 - src/i18n/locales/es.js | 1 - src/i18n/locales/fr.js | 1 - src/utils/exportAs/documentation.js | 8 ++-- 5 files changed, 20 insertions(+), 30 deletions(-) diff --git a/src/components/EditorHeader/ControlPanel.jsx b/src/components/EditorHeader/ControlPanel.jsx index fecedf2..2c00f5f 100644 --- a/src/components/EditorHeader/ControlPanel.jsx +++ b/src/components/EditorHeader/ControlPanel.jsx @@ -1062,29 +1062,24 @@ export default function ControlPanel({ })); }, }, - ], - function: () => {}, - }, - documentation: { - children: [ - { - Markdown: () => { - setModal(MODAL.CODE); - const result = jsonToDocumentation({ - tables: tables, - relationships: relationships, - notes: notes, - subjectAreas: areas, - database: database, - title: title, - }); - setExportData((prev) => ({ - ...prev, - data: result, - extension: "md", - })); - } + { + Readme: () => { + setModal(MODAL.CODE); + const result = jsonToDocumentation({ + tables: tables, + relationships: relationships, + notes: notes, + subjectAreas: areas, + database: database, + title: title, + }); + setExportData((prev) => ({ + ...prev, + data: result, + extension: "md", + })); } + }, ], function: () => {}, }, diff --git a/src/i18n/locales/en.js b/src/i18n/locales/en.js index ace7f05..944e44b 100644 --- a/src/i18n/locales/en.js +++ b/src/i18n/locales/en.js @@ -236,7 +236,6 @@ const en = { empty_index_name: "Declared an index with no name in table '{{tableName}}'", didnt_find_diagram: "Oops! Didn't find the diagram.", unsigned: "Unsigned", - documentation: "Documentation", }, }; diff --git a/src/i18n/locales/es.js b/src/i18n/locales/es.js index 7883dcf..173b297 100644 --- a/src/i18n/locales/es.js +++ b/src/i18n/locales/es.js @@ -212,7 +212,6 @@ const es = { edit_relationship: "{{extra}} Editar relación {{refName}}", delete_relationship: "Eliminar relación {{refName}}", not_found: "No encontrado", - documentation: "Documentación", }, }; diff --git a/src/i18n/locales/fr.js b/src/i18n/locales/fr.js index 2e8ae7f..31cb97f 100644 --- a/src/i18n/locales/fr.js +++ b/src/i18n/locales/fr.js @@ -217,7 +217,6 @@ const fr = { edit_relationship: "{{extra}} Modifier la relation {{refName}}", delete_relationship: "Supprimer la relation {{refName}}", not_found: "Non trouvé", - documentation: "Documentation", }, }; diff --git a/src/utils/exportAs/documentation.js b/src/utils/exportAs/documentation.js index f4764e8..e67ded1 100644 --- a/src/utils/exportAs/documentation.js +++ b/src/utils/exportAs/documentation.js @@ -1,5 +1,6 @@ import { dbToTypes } from "../../data/datatypes"; import { jsonToMermaid } from "./mermaid"; +import { databases } from "../../data/databases"; export function jsonToDocumentation(obj) { @@ -44,16 +45,13 @@ export function jsonToDocumentation(obj) { .map((r) => { const startTable = obj.tables[r.startTableId].name; const endTable = obj.tables[r.endTableId].name; - return `- **${startTable} to ${endTable}**: ${r.cardinality} ${r.comment ? "(" + r.comment + ")" : ""}\n`; + return `- **${startTable} to ${endTable}**: ${r.cardinality}\n`; }).join("") : ""; - console.log(obj.tables); - console.log(obj.relationships); - return `# ${obj.title} documentation\n## Summary\n\n- [Introduction](#introduction)\n- [Database Type](#database-type)\n`+ `- [Table Structure](#table-structure)\n${documentationSummary}\n- [Relationships](#relationships)\n- [Database Diagram](#database-Diagram)\n\n`+ `## Introduction\n\n## Database type\n\n- **Database system:** `+ - `${obj.database.type}\n## Table structure\n\n${documentationEntities}`+ + `${databases[obj.database].name}\n## Table structure\n\n${documentationEntities}`+ `\n\n## Relationships\n\n${documentationRelationships}\n\n`+ `## Database Diagram\n\n\`\`\`${jsonToMermaid(obj)}\`\`\``; } \ No newline at end of file From 11df4fabdf975c7170090449c98104418bc89433 Mon Sep 17 00:00:00 2001 From: Luis Carlos Date: Mon, 26 Aug 2024 11:52:10 -0400 Subject: [PATCH 05/11] add translation text --- src/components/EditorHeader/ControlPanel.jsx | 2 +- src/i18n/locales/en.js | 1 + src/i18n/locales/es.js | 1 + src/i18n/locales/fr.js | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/EditorHeader/ControlPanel.jsx b/src/components/EditorHeader/ControlPanel.jsx index 2c00f5f..2d8facd 100644 --- a/src/components/EditorHeader/ControlPanel.jsx +++ b/src/components/EditorHeader/ControlPanel.jsx @@ -1063,7 +1063,7 @@ export default function ControlPanel({ }, }, { - Readme: () => { + readme: () => { setModal(MODAL.CODE); const result = jsonToDocumentation({ tables: tables, diff --git a/src/i18n/locales/en.js b/src/i18n/locales/en.js index 944e44b..5ee193a 100644 --- a/src/i18n/locales/en.js +++ b/src/i18n/locales/en.js @@ -236,6 +236,7 @@ const en = { empty_index_name: "Declared an index with no name in table '{{tableName}}'", didnt_find_diagram: "Oops! Didn't find the diagram.", unsigned: "Unsigned", + readme: "README", }, }; diff --git a/src/i18n/locales/es.js b/src/i18n/locales/es.js index 173b297..d90df15 100644 --- a/src/i18n/locales/es.js +++ b/src/i18n/locales/es.js @@ -212,6 +212,7 @@ const es = { edit_relationship: "{{extra}} Editar relación {{refName}}", delete_relationship: "Eliminar relación {{refName}}", not_found: "No encontrado", + readme: "README", }, }; diff --git a/src/i18n/locales/fr.js b/src/i18n/locales/fr.js index 31cb97f..f4497ae 100644 --- a/src/i18n/locales/fr.js +++ b/src/i18n/locales/fr.js @@ -217,6 +217,7 @@ const fr = { edit_relationship: "{{extra}} Modifier la relation {{refName}}", delete_relationship: "Supprimer la relation {{refName}}", not_found: "Non trouvé", + readme: "README", }, }; From 3dbc60636d90667bc4b81c830e1136e576547269 Mon Sep 17 00:00:00 2001 From: Luis Carlos Date: Wed, 28 Aug 2024 00:18:43 -0400 Subject: [PATCH 06/11] Add enums, types and Index --- src/components/EditorHeader/ControlPanel.jsx | 2 ++ src/utils/exportAs/documentation.js | 27 +++++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/components/EditorHeader/ControlPanel.jsx b/src/components/EditorHeader/ControlPanel.jsx index 2d8facd..64d1676 100644 --- a/src/components/EditorHeader/ControlPanel.jsx +++ b/src/components/EditorHeader/ControlPanel.jsx @@ -1072,6 +1072,8 @@ export default function ControlPanel({ subjectAreas: areas, database: database, title: title, + ...(databases[database].hasTypes && { types: types }), + ...(databases[database].hasEnums && { enums: enums }), }); setExportData((prev) => ({ ...prev, diff --git a/src/utils/exportAs/documentation.js b/src/utils/exportAs/documentation.js index e67ded1..4102713 100644 --- a/src/utils/exportAs/documentation.js +++ b/src/utils/exportAs/documentation.js @@ -11,6 +11,10 @@ export function jsonToDocumentation(obj) { const documentationEntities = obj.tables .map((table) => { + let enums = ""; + let indexes = table.indices.length > 0 ? table.indices.map((index) => { + return `| ${index.name} | ${index.unique ? "✅" : ""} | ${index.fields.join(", ")} |`; + }).join("\n") : ""; const fields = table.fields .map((field) => { const fieldType = @@ -21,18 +25,20 @@ export function jsonToDocumentation(obj) { field.size !== "" ? "(" + field.size + ")" : ""); + enums += (field.type === "ENUM" && field.values && field.values.length > 0) ? + `##### ${field.name}\n\n${field.values.map((index) => `- ${index}`).join("\n")}\n` : ""; return `| **${field.name}** | ${fieldType} | ${field.primary ? "🔑 PK, " : ""}` + `${field.nullable ? "null " : "not null "}${field.unique ? ", unique" : ""}${field.increment?", autoincrement":""}` + `${field.default ? `, default: ${field.default}` : ""} | ` + `${relationshipByField(table.id, obj.relationships, field.id)}` + ` |${field.comment ? field.comment : ""} |`; - }).join("\n"); - return `### ${table.name}\n${table.comment ? table.comment : ""}\n\n` + + return `### ${table.name}\n${table.comment ? table.comment : ""}\n` + `| Name | Type | Settings | References | Note |\n` + `|-------------|---------------|-------------------------------|-------------------------------|--------------------------------|\n` + - `${fields}\n\n`; - }).join(""); + `${fields} \n${enums.length > 0 ? "\n#### Enums\n" + enums : ""}\n` + + `${indexes.length > 0 ? "\n#### Indexes\n| Name | Unique | Fields |\n|------|--------|--------|\n" + indexes : ""}`; + }).join("\n\n"); function relationshipByField(table, relationships, fieldId) { return relationships.filter(r => r.startTableId === table && r.startFieldId === fieldId) @@ -48,10 +54,17 @@ export function jsonToDocumentation(obj) { return `- **${startTable} to ${endTable}**: ${r.cardinality}\n`; }).join("") : ""; + const documentationTypes = obj.types.map((type) => { + return `| Name | fields | Note |\n` + + `|-------------|---------------|--------------------------------|\n` + + `| ${type.name} | ${type.fields.map((field) => field.name).join(", ")} | ${type.comment ? type.comment : ""} |`; + }).join("\n"); + return `# ${obj.title} documentation\n## Summary\n\n- [Introduction](#introduction)\n- [Database Type](#database-type)\n`+ `- [Table Structure](#table-structure)\n${documentationSummary}\n- [Relationships](#relationships)\n- [Database Diagram](#database-Diagram)\n\n`+ `## Introduction\n\n## Database type\n\n- **Database system:** `+ - `${databases[obj.database].name}\n## Table structure\n\n${documentationEntities}`+ - `\n\n## Relationships\n\n${documentationRelationships}\n\n`+ - `## Database Diagram\n\n\`\`\`${jsonToMermaid(obj)}\`\`\``; + `${databases[obj.database].name}\n## Table structure\n\n${documentationEntities}`+ + `\n\n## Relationships\n\n${documentationRelationships}\n\n` + + `## Types\n\n${documentationTypes}\n\n` + + `## Database Diagram\n\n\`\`\`mermaid\n${jsonToMermaid(obj)}\n\`\`\``; } \ No newline at end of file From 6e18b6a4f14a6b0eddbb81e6649c301cc7cf4ee4 Mon Sep 17 00:00:00 2001 From: 1ilit <1ilit@proton.me> Date: Wed, 28 Aug 2024 15:09:50 +0400 Subject: [PATCH 07/11] Fix mysql field name not getting exported --- src/utils/exportSQL/mysql.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportSQL/mysql.js b/src/utils/exportSQL/mysql.js index 2507523..484d457 100644 --- a/src/utils/exportSQL/mysql.js +++ b/src/utils/exportSQL/mysql.js @@ -9,7 +9,7 @@ export function toMySQL(diagram) { `CREATE TABLE \`${table.name}\` (\n${table.fields .map( (field) => - `\` ${field.type}${field.unsigned ? " UNSIGNED" : ""}${field.size !== undefined && field.size !== "" ? "(" + field.size + ")" : ""}${ + `\t\`${field.name}\` ${field.type}${field.unsigned ? " UNSIGNED" : ""}${field.size !== undefined && field.size !== "" ? "(" + field.size + ")" : ""}${ field.notNull ? " NOT NULL" : "" }${ field.increment ? " AUTO_INCREMENT" : "" From 8f185bc6956a949ed4fd235d8f05e4671c89a5f8 Mon Sep 17 00:00:00 2001 From: 1ilit <1ilit@proton.me> Date: Wed, 28 Aug 2024 15:12:23 +0400 Subject: [PATCH 08/11] Fix mysql field name not getting exported (#233) --- src/utils/exportSQL/mariadb.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/exportSQL/mariadb.js b/src/utils/exportSQL/mariadb.js index e7f5c55..e7f3588 100644 --- a/src/utils/exportSQL/mariadb.js +++ b/src/utils/exportSQL/mariadb.js @@ -1,4 +1,4 @@ -import { exportFieldComment, parseDefault } from "./shared"; +import { parseDefault } from "./shared"; import { dbToTypes } from "../../data/datatypes"; @@ -9,7 +9,7 @@ export function toMariaDB(diagram) { `CREATE OR REPLACE TABLE \`${table.name}\` (\n${table.fields .map( (field) => - `${exportFieldComment(field.comment)}\t\`${ + `\t\`${ field.name }\` ${field.type}${field.unsigned ? " UNSIGNED" : ""}${field.notNull ? " NOT NULL" : ""}${ field.increment ? " AUTO_INCREMENT" : "" From c76d2ec37cfba41af26882d8ed5c28b272edce04 Mon Sep 17 00:00:00 2001 From: Luis Carlos Date: Thu, 29 Aug 2024 15:04:02 -0400 Subject: [PATCH 09/11] add filter if the database has types --- src/utils/exportAs/documentation.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/utils/exportAs/documentation.js b/src/utils/exportAs/documentation.js index 4102713..cb3c347 100644 --- a/src/utils/exportAs/documentation.js +++ b/src/utils/exportAs/documentation.js @@ -38,7 +38,7 @@ export function jsonToDocumentation(obj) { `|-------------|---------------|-------------------------------|-------------------------------|--------------------------------|\n` + `${fields} \n${enums.length > 0 ? "\n#### Enums\n" + enums : ""}\n` + `${indexes.length > 0 ? "\n#### Indexes\n| Name | Unique | Fields |\n|------|--------|--------|\n" + indexes : ""}`; - }).join("\n\n"); + }).join("\n"); function relationshipByField(table, relationships, fieldId) { return relationships.filter(r => r.startTableId === table && r.startFieldId === fieldId) @@ -64,7 +64,7 @@ export function jsonToDocumentation(obj) { `- [Table Structure](#table-structure)\n${documentationSummary}\n- [Relationships](#relationships)\n- [Database Diagram](#database-Diagram)\n\n`+ `## Introduction\n\n## Database type\n\n- **Database system:** `+ `${databases[obj.database].name}\n## Table structure\n\n${documentationEntities}`+ - `\n\n## Relationships\n\n${documentationRelationships}\n\n` + - `## Types\n\n${documentationTypes}\n\n` + + `\n## Relationships\n\n${documentationRelationships}\n` + + `${databases[obj.database].hasTypes && obj.types.length > 0 ? `## Types\n\n` + documentationTypes`\n\n` : "" }` + `## Database Diagram\n\n\`\`\`mermaid\n${jsonToMermaid(obj)}\n\`\`\``; } \ No newline at end of file From fcdb872502cbdd63249709e6de6225ecbd4161eb Mon Sep 17 00:00:00 2001 From: Luis Carlos Date: Thu, 29 Aug 2024 15:08:29 -0400 Subject: [PATCH 10/11] add if when the database has types --- src/utils/exportAs/documentation.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/exportAs/documentation.js b/src/utils/exportAs/documentation.js index cb3c347..61e571c 100644 --- a/src/utils/exportAs/documentation.js +++ b/src/utils/exportAs/documentation.js @@ -54,11 +54,11 @@ export function jsonToDocumentation(obj) { return `- **${startTable} to ${endTable}**: ${r.cardinality}\n`; }).join("") : ""; - const documentationTypes = obj.types.map((type) => { + const documentationTypes = databases[obj.database].hasTypes && obj.types.length > 0 ? obj.types.map((type) => { return `| Name | fields | Note |\n` + `|-------------|---------------|--------------------------------|\n` + `| ${type.name} | ${type.fields.map((field) => field.name).join(", ")} | ${type.comment ? type.comment : ""} |`; - }).join("\n"); + }).join("\n") : ""; return `# ${obj.title} documentation\n## Summary\n\n- [Introduction](#introduction)\n- [Database Type](#database-type)\n`+ `- [Table Structure](#table-structure)\n${documentationSummary}\n- [Relationships](#relationships)\n- [Database Diagram](#database-Diagram)\n\n`+ From cb6c8bcbfd7f5802752c66c80b73de9504461c2f Mon Sep 17 00:00:00 2001 From: Luis Carlos Date: Fri, 30 Aug 2024 23:44:37 -0400 Subject: [PATCH 11/11] fix the plus between documentationTypes and \n\n --- src/utils/exportAs/documentation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportAs/documentation.js b/src/utils/exportAs/documentation.js index 61e571c..e47900e 100644 --- a/src/utils/exportAs/documentation.js +++ b/src/utils/exportAs/documentation.js @@ -65,6 +65,6 @@ export function jsonToDocumentation(obj) { `## Introduction\n\n## Database type\n\n- **Database system:** `+ `${databases[obj.database].name}\n## Table structure\n\n${documentationEntities}`+ `\n## Relationships\n\n${documentationRelationships}\n` + - `${databases[obj.database].hasTypes && obj.types.length > 0 ? `## Types\n\n` + documentationTypes`\n\n` : "" }` + + `${databases[obj.database].hasTypes && obj.types.length > 0 ? `## Types\n\n` + documentationTypes + `\n\n` : "" }` + `## Database Diagram\n\n\`\`\`mermaid\n${jsonToMermaid(obj)}\n\`\`\``; } \ No newline at end of file