@@ -224,36 +224,35 @@ pub fn sql_s_mermaid(sql: &str) -> String {
224224 let mut mermaid: String = "erDiagram\n " . to_string ( ) ;
225225
226226 for statement in ast ( sql) {
227- mermaid. push_str (
228- statement_mermaid (
229- statement,
230- & mut table_column_type,
231- & mut table_column_constraints,
232- & mut column_foreign_key_column,
233- )
234- . as_str ( ) ,
227+ statement_mermaid (
228+ statement,
229+ & mut table_column_type,
230+ & mut table_column_constraints,
231+ & mut column_foreign_key_column,
235232 ) ;
236233 }
237234 log:: debug!( "Update: {:?}" , table_column_constraints) ;
238235
239236 // draw boxes
240- for ( table_name, table) in & table_column_constraints {
241- mermaid. push_str ( & format ! ( "\t {} {{\n " , table_name. to_string( ) . replace( '"' , "" ) ) ) ;
242- for ( column_name, constraints) in table {
237+ for ( table_name, table) in & table_column_type {
238+ mermaid. push_str ( & format ! (
239+ "\t {} {{\n " ,
240+ table_name. to_string( ) . replace( '"' , "" )
241+ ) ) ;
242+ let default_table_constraints = HashMap :: new ( ) ;
243+ let table_constraints = table_column_constraints. get ( table_name) . unwrap_or ( & default_table_constraints) ;
244+ for ( column_name, data_type) in table {
245+ let default_constraints = & HashSet :: new ( ) ;
246+ let constraints = & table_constraints. get ( column_name) . unwrap_or ( & default_constraints) ;
243247 mermaid. push_str ( & format ! (
244248 "\t \t {} {} {} {}\n " ,
245- match table_column_type. get( table_name) {
246- Some ( cols) => match cols. get( column_name) {
247- None => "NONE" . to_string( ) ,
248- Some ( data_type) => data_type. to_string( )
249- . replace( ' ' , "_" )
250- . replace( '(' , "" )
251- . replace( ')' , "" )
252- . replace( ',' , "_" ) ,
253- } ,
254- None => "NONE" . to_string( ) ,
255- } ,
256- table_name. to_string( ) . replace( '"' , "" ) ,
249+ data_type
250+ . to_string( )
251+ . replace( ' ' , "_" )
252+ . replace( '(' , "" )
253+ . replace( ')' , "" )
254+ . replace( ',' , "_" ) ,
255+ column_name. to_string( ) . replace( '"' , "" ) ,
257256 if constraints. contains( & ColumnConstraint :: PrimaryKey ) {
258257 "PK"
259258 } else {
0 commit comments