mirror of
https://github.com/fleetbase/fleetbase.git
synced 2025-12-19 14:18:57 +00:00
44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
from __future__ import print_function
|
|
import re
|
|
|
|
def cleanname(name):
|
|
return re.sub(r'[^\d\w_]', '', name)
|
|
|
|
def format_table_name(full_name):
|
|
parts = full_name.split('.')
|
|
if len(parts) == 2 and not parts[0].endswith('_sandbox'):
|
|
return cleanname(parts[0] + '_' + parts[1])
|
|
else:
|
|
return None
|
|
|
|
print('erDiagram')
|
|
print('')
|
|
for table in catalog.tables:
|
|
formatted_name = format_table_name(table.fullName)
|
|
if formatted_name:
|
|
print(' ' + formatted_name + ' {')
|
|
for column in table.columns:
|
|
print(' ' + cleanname(column.columnDataType.name) + ' ' + cleanname(column.name),
|
|
end='')
|
|
if column.isPartOfPrimaryKey():
|
|
print(' PK', end='')
|
|
elif column.isPartOfForeignKey():
|
|
print(' FK', end='')
|
|
elif column.isPartOfUniqueIndex():
|
|
print(' UK', end='')
|
|
if column.hasRemarks():
|
|
print(' "' + ' '.join(column.remarks.splitlines()) + '"',
|
|
end='')
|
|
print()
|
|
print(' }')
|
|
print('')
|
|
|
|
for table in catalog.tables:
|
|
formatted_name = format_table_name(table.fullName)
|
|
if formatted_name:
|
|
for childTable in table.referencingTables:
|
|
child_formatted_name = format_table_name(childTable.fullName)
|
|
if child_formatted_name:
|
|
print(' ' + formatted_name + ' ||--o{ ' +
|
|
child_formatted_name + ' : "foreign key"')
|