@@ -972,6 +972,26 @@ def anonymize(self):
972
972
973
973
return MultiTableMetadata .load_from_dict (anonymized_metadata )
974
974
975
+ def _get_table_info (self , table_name , show_table_details ):
976
+ node_info = {}
977
+ table_meta = self .tables [table_name ]
978
+
979
+ if show_table_details in ['full' , 'summarized' ]:
980
+ node_info ['primary_key' ] = f'Primary key: { table_meta .primary_key } '
981
+ if table_meta .sequence_key :
982
+ node_info ['sequence_key' ] = f'Sequence key: { table_meta .sequence_key } '
983
+ if table_meta .sequence_index :
984
+ node_info ['sequence_index' ] = f'Sequence index: { table_meta .sequence_index } '
985
+
986
+ if show_table_details == 'full' :
987
+ node_info ['columns' ] = create_columns_node (table_meta .columns )
988
+ elif show_table_details == 'summarized' :
989
+ node_info ['columns' ] = create_summarized_columns_node (table_meta .columns )
990
+ elif show_table_details is None :
991
+ return
992
+
993
+ return node_info
994
+
975
995
def visualize (
976
996
self , show_table_details = 'full' , show_relationship_labels = True , output_filepath = None
977
997
):
@@ -1017,22 +1037,9 @@ def visualize(
1017
1037
1018
1038
nodes = {}
1019
1039
edges = []
1020
- if show_table_details == 'full' :
1021
- for table_name , table_meta in self .tables .items ():
1022
- nodes [table_name ] = {
1023
- 'columns' : create_columns_node (table_meta .columns ),
1024
- 'primary_key' : f'Primary key: { table_meta .primary_key } ' ,
1025
- }
1026
-
1027
- elif show_table_details == 'summarized' :
1028
- for table_name , table_meta in self .tables .items ():
1029
- nodes [table_name ] = {
1030
- 'columns' : create_summarized_columns_node (table_meta .columns ),
1031
- 'primary_key' : f'Primary key: { table_meta .primary_key } ' ,
1032
- }
1033
1040
1034
- elif show_table_details is None :
1035
- nodes = { table_name : None for table_name in self .tables }
1041
+ for table_name in self . tables . keys () :
1042
+ nodes [ table_name ] = self ._get_table_info ( table_name , show_table_details )
1036
1043
1037
1044
for relationship in self .relationships :
1038
1045
parent = relationship .get ('parent_table_name' )
@@ -1053,11 +1060,18 @@ def visualize(
1053
1060
for table , info in nodes .items ():
1054
1061
if show_table_details :
1055
1062
foreign_keys = r'\l' .join (info .get ('foreign_keys' , []))
1056
- keys = r'\l' .join ([info ['primary_key' ], foreign_keys ])
1057
- if foreign_keys :
1058
- label = rf'{{{ table } |{ info ["columns" ]} \l|{ keys } \l}}'
1059
- else :
1060
- label = rf'{{{ table } |{ info ["columns" ]} \l|{ keys } }}'
1063
+ keys = r'\l' .join (
1064
+ filter (
1065
+ bool ,
1066
+ [
1067
+ info .get ('primary_key' ),
1068
+ info .get ('sequence_key' ),
1069
+ info .get ('sequence_index' ),
1070
+ foreign_keys ,
1071
+ ],
1072
+ )
1073
+ )
1074
+ label = rf'{{{ table } |{ info ["columns" ]} \l|{ keys } \l}}'
1061
1075
1062
1076
else :
1063
1077
label = f'{ table } '
0 commit comments