@@ -459,8 +459,9 @@ def __init__(self, airtable_api_key, airtable_base_id, base, table_names, links=
459459 self .get_link_map ()
460460
461461 def convert_metadata (self ):
462- self .convert_tables ()
463462 self .get_airtable_row_map (is_demo = True )
463+ self .get_airtable_column_map ()
464+ self .convert_tables ()
464465 self .convert_columns ()
465466 self .convert_rows (is_demo = True )
466467 self .convert_links (is_demo = True )
@@ -478,20 +479,29 @@ def convert_tables(self):
478479 for table_name in self .table_names :
479480 table = self .table_map .get (table_name )
480481 if not table :
481- self .add_table (table_name )
482- print ('[Info] Added table [ %s ]' % table_name )
482+ airtable_columns = self .airtable_column_map [table_name ]
483+ columns = []
484+ for column in airtable_columns :
485+ if column ['type' ] == ColumnTypes .LINK :
486+ continue
487+ item = {
488+ 'column_name' : column ['name' ],
489+ 'column_type' : column ['type' ].value ,
490+ 'column_data' : column ['data' ],
491+ }
492+ columns .append (item )
493+ self .add_table (table_name , columns )
494+ print ('[Info] Added table [ %s ] with %s columns' % (table_name , len (columns )))
483495 print ('[Info] Success\n ' )
484496 time .sleep (1 )
485497
486498 def convert_columns (self ):
487499 print ('[Info] Convert columns' )
488500 self .get_table_map ()
489501 for table_name in self .table_names :
490- airtable_rows = self .airtable_row_map [table_name ]
491- columns = self .columns_parser .parse (
492- self .link_map , table_name , airtable_rows )
502+ airtable_columns = self .airtable_column_map [table_name ]
493503 table = self .table_map .get (table_name )
494- for column in columns :
504+ for column in airtable_columns :
495505 column_name = column ['name' ]
496506 exists_column = table .get (column_name )
497507 if not exists_column :
@@ -583,6 +593,14 @@ def get_airtable_row_map(self, is_demo=False):
583593 print ('[Info] Success\n ' )
584594 return self .airtable_row_map
585595
596+ def get_airtable_column_map (self ):
597+ self .airtable_column_map = {}
598+ for table_name in self .table_names :
599+ airtable_rows = self .airtable_row_map [table_name ]
600+ columns = self .columns_parser .parse (
601+ self .link_map , table_name , airtable_rows )
602+ self .airtable_column_map [table_name ] = columns
603+
586604 def get_table_map (self ):
587605 self .table_map = {}
588606 self .column_map = {}
0 commit comments