Skip to content

Commit df57d6c

Browse files
committed
improvements on er generator
1 parent 8a83bca commit df57d6c

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

samples/mermaid.py

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,49 @@
11
from schemacrawler.schema import TableRelationshipType # pylint: disable=import-error
22
import re
3+
from datetime import date
34

5+
today = date.today()
6+
7+
print('# Mermaid erDiagram')
8+
print ('* generated using schemacrawler on:' + str(today))
9+
print ('* using Little-Mermaid-2-TheSQL formatting')
10+
# TODO include package version
11+
print('')
12+
print('```mermaid')
413
print('erDiagram')
514
print('')
615
for table in catalog.tables:
716
print(' ' + table.fullName + ' {')
817
for column in table.columns:
9-
print(' ' + re.sub(r'\([\d ,]+\)', '', column.columnDataType.name) + ' ' + column.name)
18+
# // need to remove quotes and spaces
19+
# get all column attributes for debugging
20+
# print (dir(column))
21+
columnShortName = re.sub("[\"\']", "", column.name).replace(" ","")
22+
columnFullName = ""
23+
if(columnShortName != column.name):
24+
columnFullName = "'" + column.name + "'"
25+
# values cared about:
26+
# isNullable
27+
# autoIncremented
28+
# isPartOfIndex
29+
# isPartOfUniqueIndex
30+
keyType = " PK" if column.partOfPrimaryKey else ""
31+
if(keyType != "" and column.partOfForeignKey ):
32+
keyType = " FK"
33+
# dont need to define FK can get through relationships
34+
# keyType += ("" if keyType == "" else ",") + "FK" if column.partOfForeignKey else ""
35+
extraAttributes = ""
36+
if(columnFullName != ""):
37+
extraAttributes += columnFullName
38+
39+
if(extraAttributes != ""):
40+
extraAttributes = " \"" + extraAttributes + "\""
41+
print(' ' + re.sub("[,]", "_",re.sub(r'[()]', '', column.columnDataType.name)) + ' ' + columnShortName + keyType + extraAttributes)
1042
print(' }')
1143
print('')
1244

1345
for table in catalog.tables:
1446
for childTable in table.getRelatedTables(TableRelationshipType.child):
1547
print(' ' + table.name + ' ||--o{ ' + childTable.name + ' : "foreign key"')
16-
print('')
48+
print('')
49+
print('```')

src/Library.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import { MermaidConfig } from "../deps/mermaid/src/config.type";
2424
import { log } from "../deps/mermaid/src/logger";
2525
import erDb from "./mermaid/src/diagrams/er/erDb";
2626
import { DiagramDefinition } from "./types";
27+
import { DbParser } from "./generate-sql-ddl";
2728
// import { getDiagram } from '../deps/mermaid/src/diagram-api/diagramAPI';
2829
const diagrams: Record<string, DiagramDefinition> = {};
2930

@@ -205,8 +206,9 @@ export const GenerateSqlFromMermaid = async function (
205206
var r:boolean = diag.parser.parse(md);
206207
var entities = diag.db.getEntities();
207208
var relationships = diag.db.getRelationships();
208-
// TODO: model interfaces
209+
// model interfaces
209210
// TODO: models to sql
211+
const ddlSyntax = new DbParser(databaseType, diag.db).getSQLDataDefinition();
210212
// var r2 = diag.parser.parser.parse(md);
211213
// console.log(JSON.stringify(r));
212214
var test5 = 1 + 1;

0 commit comments

Comments
 (0)