Skip to content

Commit 3dbc606

Browse files
committed
Add enums, types and Index
1 parent 11df4fa commit 3dbc606

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

src/components/EditorHeader/ControlPanel.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1072,6 +1072,8 @@ export default function ControlPanel({
10721072
subjectAreas: areas,
10731073
database: database,
10741074
title: title,
1075+
...(databases[database].hasTypes && { types: types }),
1076+
...(databases[database].hasEnums && { enums: enums }),
10751077
});
10761078
setExportData((prev) => ({
10771079
...prev,

src/utils/exportAs/documentation.js

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ export function jsonToDocumentation(obj) {
1111

1212
const documentationEntities = obj.tables
1313
.map((table) => {
14+
let enums = "";
15+
let indexes = table.indices.length > 0 ? table.indices.map((index) => {
16+
return `| ${index.name} | ${index.unique ? "✅" : ""} | ${index.fields.join(", ")} |`;
17+
}).join("\n") : "";
1418
const fields = table.fields
1519
.map((field) => {
1620
const fieldType =
@@ -21,18 +25,20 @@ export function jsonToDocumentation(obj) {
2125
field.size !== ""
2226
? "(" + field.size + ")"
2327
: "");
28+
enums += (field.type === "ENUM" && field.values && field.values.length > 0) ?
29+
`##### ${field.name}\n\n${field.values.map((index) => `- ${index}`).join("\n")}\n` : "";
2430
return `| **${field.name}** | ${fieldType} | ${field.primary ? "🔑 PK, " : ""}` +
2531
`${field.nullable ? "null " : "not null "}${field.unique ? ", unique" : ""}${field.increment?", autoincrement":""}` +
2632
`${field.default ? `, default: ${field.default}` : ""} | ` +
2733
`${relationshipByField(table.id, obj.relationships, field.id)}` +
2834
` |${field.comment ? field.comment : ""} |`;
29-
3035
}).join("\n");
31-
return `### ${table.name}\n${table.comment ? table.comment : ""}\n\n` +
36+
return `### ${table.name}\n${table.comment ? table.comment : ""}\n` +
3237
`| Name | Type | Settings | References | Note |\n` +
3338
`|-------------|---------------|-------------------------------|-------------------------------|--------------------------------|\n` +
34-
`${fields}\n\n`;
35-
}).join("");
39+
`${fields} \n${enums.length > 0 ? "\n#### Enums\n" + enums : ""}\n` +
40+
`${indexes.length > 0 ? "\n#### Indexes\n| Name | Unique | Fields |\n|------|--------|--------|\n" + indexes : ""}`;
41+
}).join("\n\n");
3642

3743
function relationshipByField(table, relationships, fieldId) {
3844
return relationships.filter(r => r.startTableId === table && r.startFieldId === fieldId)
@@ -48,10 +54,17 @@ export function jsonToDocumentation(obj) {
4854
return `- **${startTable} to ${endTable}**: ${r.cardinality}\n`;
4955
}).join("") : "";
5056

57+
const documentationTypes = obj.types.map((type) => {
58+
return `| Name | fields | Note |\n` +
59+
`|-------------|---------------|--------------------------------|\n` +
60+
`| ${type.name} | ${type.fields.map((field) => field.name).join(", ")} | ${type.comment ? type.comment : ""} |`;
61+
}).join("\n");
62+
5163
return `# ${obj.title} documentation\n## Summary\n\n- [Introduction](#introduction)\n- [Database Type](#database-type)\n`+
5264
`- [Table Structure](#table-structure)\n${documentationSummary}\n- [Relationships](#relationships)\n- [Database Diagram](#database-Diagram)\n\n`+
5365
`## Introduction\n\n## Database type\n\n- **Database system:** `+
54-
`${databases[obj.database].name}\n## Table structure\n\n${documentationEntities}`+
55-
`\n\n## Relationships\n\n${documentationRelationships}\n\n`+
56-
`## Database Diagram\n\n\`\`\`${jsonToMermaid(obj)}\`\`\``;
66+
`${databases[obj.database].name}\n## Table structure\n\n${documentationEntities}`+
67+
`\n\n## Relationships\n\n${documentationRelationships}\n\n` +
68+
`## Types\n\n${documentationTypes}\n\n` +
69+
`## Database Diagram\n\n\`\`\`mermaid\n${jsonToMermaid(obj)}\n\`\`\``;
5770
}

0 commit comments

Comments
 (0)