@@ -11,6 +11,10 @@ export function jsonToDocumentation(obj) {
11
11
12
12
const documentationEntities = obj . tables
13
13
. 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" ) : "" ;
14
18
const fields = table . fields
15
19
. map ( ( field ) => {
16
20
const fieldType =
@@ -21,18 +25,20 @@ export function jsonToDocumentation(obj) {
21
25
field . size !== ""
22
26
? "(" + field . size + ")"
23
27
: "" ) ;
28
+ enums += ( field . type === "ENUM" && field . values && field . values . length > 0 ) ?
29
+ `##### ${ field . name } \n\n${ field . values . map ( ( index ) => `- ${ index } ` ) . join ( "\n" ) } \n` : "" ;
24
30
return `| **${ field . name } ** | ${ fieldType } | ${ field . primary ? "🔑 PK, " : "" } ` +
25
31
`${ field . nullable ? "null " : "not null " } ${ field . unique ? ", unique" : "" } ${ field . increment ?", autoincrement" :"" } ` +
26
32
`${ field . default ? `, default: ${ field . default } ` : "" } | ` +
27
33
`${ relationshipByField ( table . id , obj . relationships , field . id ) } ` +
28
34
` |${ field . comment ? field . comment : "" } |` ;
29
-
30
35
} ) . join ( "\n" ) ;
31
- return `### ${ table . name } \n${ table . comment ? table . comment : "" } \n\n ` +
36
+ return `### ${ table . name } \n${ table . comment ? table . comment : "" } \n` +
32
37
`| Name | Type | Settings | References | Note |\n` +
33
38
`|-------------|---------------|-------------------------------|-------------------------------|--------------------------------|\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" ) ;
36
42
37
43
function relationshipByField ( table , relationships , fieldId ) {
38
44
return relationships . filter ( r => r . startTableId === table && r . startFieldId === fieldId )
@@ -48,10 +54,17 @@ export function jsonToDocumentation(obj) {
48
54
return `- **${ startTable } to ${ endTable } **: ${ r . cardinality } \n` ;
49
55
} ) . join ( "" ) : "" ;
50
56
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
+
51
63
return `# ${ obj . title } documentation\n## Summary\n\n- [Introduction](#introduction)\n- [Database Type](#database-type)\n` +
52
64
`- [Table Structure](#table-structure)\n${ documentationSummary } \n- [Relationships](#relationships)\n- [Database Diagram](#database-Diagram)\n\n` +
53
65
`## 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\`\`\`` ;
57
70
}
0 commit comments