@@ -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