mirror of
https://github.com/drawdb-io/drawdb.git
synced 2025-05-24 10:29:11 +00:00
Fix markdown export (#389)
This commit is contained in:
parent
5c1b2928d1
commit
3a8bb3f753
@ -3,18 +3,23 @@ import { jsonToMermaid } from "./mermaid";
|
|||||||
import { databases } from "../../data/databases";
|
import { databases } from "../../data/databases";
|
||||||
|
|
||||||
export function jsonToDocumentation(obj) {
|
export function jsonToDocumentation(obj) {
|
||||||
|
|
||||||
const documentationSummary = obj.tables
|
const documentationSummary = obj.tables
|
||||||
.map((table) => {
|
.map((table) => {
|
||||||
return `\t- [${table.name}](#${table.name})`;
|
return `\t- [${table.name}](#${table.name})`;
|
||||||
}).join("\n");
|
})
|
||||||
|
.join("\n");
|
||||||
|
|
||||||
const documentationEntities = obj.tables
|
const documentationEntities = obj.tables
|
||||||
.map((table) => {
|
.map((table) => {
|
||||||
let enums = "";
|
let enums = "";
|
||||||
let indexes = table.indices.length > 0 ? table.indices.map((index) => {
|
let indexes =
|
||||||
return `| ${index.name} | ${index.unique ? "✅" : ""} | ${index.fields.join(", ")} |`;
|
table.indices.length > 0
|
||||||
}).join("\n") : "";
|
? table.indices
|
||||||
|
.map((index) => {
|
||||||
|
return `| ${index.name} | ${index.unique ? "✅" : ""} | ${index.fields.join(", ")} |`;
|
||||||
|
})
|
||||||
|
.join("\n")
|
||||||
|
: "";
|
||||||
const fields = table.fields
|
const fields = table.fields
|
||||||
.map((field) => {
|
.map((field) => {
|
||||||
const fieldType =
|
const fieldType =
|
||||||
@ -25,46 +30,65 @@ export function jsonToDocumentation(obj) {
|
|||||||
field.size !== ""
|
field.size !== ""
|
||||||
? "(" + field.size + ")"
|
? "(" + field.size + ")"
|
||||||
: "");
|
: "");
|
||||||
enums += (field.type === "ENUM" && field.values && field.values.length > 0) ?
|
enums +=
|
||||||
`##### ${field.name}\n\n${field.values.map((index) => `- ${index}`).join("\n")}\n` : "";
|
field.type === "ENUM" && field.values && field.values.length > 0
|
||||||
return `| **${field.name}** | ${fieldType} | ${field.primary ? "🔑 PK, " : ""}` +
|
? `##### ${field.name}\n\n${field.values.map((index) => `- ${index}`).join("\n")}\n`
|
||||||
`${field.nullable ? "null " : "not null "}${field.unique ? ", unique" : ""}${field.increment?", autoincrement":""}` +
|
: "";
|
||||||
|
return (
|
||||||
|
`| **${field.name}** | ${fieldType} | ${field.primary ? "🔑 PK, " : ""}` +
|
||||||
|
`${field.notNull ? "not null" : "null"}${field.unique ? ", unique" : ""}${field.increment ? ", autoincrement" : ""}` +
|
||||||
`${field.default ? `, default: ${field.default}` : ""} | ` +
|
`${field.default ? `, default: ${field.default}` : ""} | ` +
|
||||||
`${relationshipByField(table.id, obj.relationships, field.id)}` +
|
`${relationshipByField(table.id, obj.relationships, field.id)}` +
|
||||||
` |${field.comment ? field.comment : ""} |`;
|
` |${field.comment ? field.comment : ""} |`
|
||||||
}).join("\n");
|
);
|
||||||
return `### ${table.name}\n${table.comment ? table.comment : ""}\n` +
|
})
|
||||||
|
.join("\n");
|
||||||
|
return (
|
||||||
|
`### ${table.name}\n${table.comment ? table.comment : ""}\n` +
|
||||||
`| Name | Type | Settings | References | Note |\n` +
|
`| Name | Type | Settings | References | Note |\n` +
|
||||||
`|-------------|---------------|-------------------------------|-------------------------------|--------------------------------|\n` +
|
`|-------------|---------------|-------------------------------|-------------------------------|--------------------------------|\n` +
|
||||||
`${fields} \n${enums.length > 0 ? "\n#### Enums\n" + enums : ""}\n` +
|
`${fields} \n${enums.length > 0 ? "\n#### Enums\n" + enums : ""}\n` +
|
||||||
`${indexes.length > 0 ? "\n#### Indexes\n| Name | Unique | Fields |\n|------|--------|--------|\n" + indexes : ""}`;
|
`${indexes.length > 0 ? "\n#### Indexes\n| Name | Unique | Fields |\n|------|--------|--------|\n" + indexes : ""}`
|
||||||
}).join("\n");
|
);
|
||||||
|
})
|
||||||
function relationshipByField(table, relationships, fieldId) {
|
.join("\n");
|
||||||
return relationships.filter(r => r.startTableId === table && r.startFieldId === fieldId)
|
|
||||||
.map((rel) => rel.name);
|
|
||||||
|
|
||||||
|
function relationshipByField(table, relationships, fieldId) {
|
||||||
|
return relationships
|
||||||
|
.filter((r) => r.startTableId === table && r.startFieldId === fieldId)
|
||||||
|
.map((rel) => rel.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
const documentationRelationships = obj.relationships?.length
|
const documentationRelationships = obj.relationships?.length
|
||||||
? obj.relationships
|
? obj.relationships
|
||||||
.map((r) => {
|
.map((r) => {
|
||||||
const startTable = obj.tables[r.startTableId].name;
|
const startTable = obj.tables[r.startTableId].name;
|
||||||
const endTable = obj.tables[r.endTableId].name;
|
const endTable = obj.tables[r.endTableId].name;
|
||||||
return `- **${startTable} to ${endTable}**: ${r.cardinality}\n`;
|
return `- **${startTable} to ${endTable}**: ${r.cardinality}\n`;
|
||||||
}).join("") : "";
|
})
|
||||||
|
.join("")
|
||||||
const documentationTypes = databases[obj.database].hasTypes && obj.types.length > 0 ? obj.types.map((type) => {
|
: "";
|
||||||
return `| Name | fields | Note |\n` +
|
|
||||||
`|-------------|---------------|--------------------------------|\n` +
|
const documentationTypes =
|
||||||
`| ${type.name} | ${type.fields.map((field) => field.name).join(", ")} | ${type.comment ? type.comment : ""} |`;
|
databases[obj.database].hasTypes && obj.types.length > 0
|
||||||
}).join("\n") : "";
|
? obj.types
|
||||||
|
.map((type) => {
|
||||||
return `# ${obj.title} documentation\n## Summary\n\n- [Introduction](#introduction)\n- [Database Type](#database-type)\n`+
|
return (
|
||||||
`- [Table Structure](#table-structure)\n${documentationSummary}\n- [Relationships](#relationships)\n- [Database Diagram](#database-Diagram)\n\n`+
|
`| Name | fields | Note |\n` +
|
||||||
`## Introduction\n\n## Database type\n\n- **Database system:** `+
|
`|-------------|---------------|--------------------------------|\n` +
|
||||||
`${databases[obj.database].name}\n## Table structure\n\n${documentationEntities}`+
|
`| ${type.name} | ${type.fields.map((field) => field.name).join(", ")} | ${type.comment ? type.comment : ""} |`
|
||||||
`\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\`\`\``;
|
.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## 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\`\`\``
|
||||||
|
);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user