@@ -1648,38 +1648,23 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
16481648 ) -> Result < Vec < Option < String > > , KVAppError > {
16491649 debug ! ( req : ? =( & table_ids) ; "SchemaApi: {}" , func_name!( ) ) ;
16501650
1651- let mut id_name_kv_keys = Vec :: with_capacity ( table_ids. len ( ) ) ;
1652- for id in table_ids {
1653- let k = TableIdToName { table_id : * id } . to_string_key ( ) ;
1654- id_name_kv_keys. push ( k) ;
1655- }
1656-
1657- // Batch get all table-name by id
1658- let seq_names = self . mget_kv ( & id_name_kv_keys) . await ?;
1659- let mut table_names = Vec :: with_capacity ( table_ids. len ( ) ) ;
1660-
1661- for seq_name in seq_names {
1662- if let Some ( seq_name) = seq_name {
1663- let name_ident: DBIdTableName = deserialize_struct ( & seq_name. data ) ?;
1664- table_names. push ( Some ( name_ident. table_name ) ) ;
1665- } else {
1666- table_names. push ( None ) ;
1667- }
1668- }
1651+ let id_to_name_idents = table_ids. iter ( ) . map ( |id| TableIdToName { table_id : * id } ) ;
16691652
1670- let mut meta_kv_keys = Vec :: with_capacity ( table_ids . len ( ) ) ;
1671- for id in table_ids {
1672- let k = TableId { table_id : * id } . to_string_key ( ) ;
1673- meta_kv_keys . push ( k ) ;
1674- }
1653+ let seq_names = self . get_pb_values_vec ( id_to_name_idents ) . await ? ;
1654+ let mut table_names = seq_names
1655+ . into_iter ( )
1656+ . map ( |seq_name| seq_name . map ( |s| s . data . table_name ) )
1657+ . collect :: < Vec < _ > > ( ) ;
16751658
1676- let seq_metas = self . mget_kv ( & meta_kv_keys) . await ?;
1659+ let id_idents = table_ids. iter ( ) . map ( |id| TableId { table_id : * id } ) ;
1660+ let seq_metas = self . get_pb_values_vec ( id_idents) . await ?;
16771661 for ( i, seq_meta_opt) in seq_metas. iter ( ) . enumerate ( ) {
16781662 if let Some ( seq_meta) = seq_meta_opt {
1679- let table_meta: TableMeta = deserialize_struct ( & seq_meta. data ) ?;
1680- if table_meta. drop_on . is_some ( ) {
1663+ if seq_meta. data . drop_on . is_some ( ) {
16811664 table_names[ i] = None ;
16821665 }
1666+ } else {
1667+ table_names[ i] = None ;
16831668 }
16841669 }
16851670
@@ -1714,39 +1699,26 @@ impl<KV: kvapi::KVApi<Error = MetaError> + ?Sized> SchemaApi for KV {
17141699 ) -> Result < Vec < Option < String > > , KVAppError > {
17151700 debug ! ( req : ? =( & db_ids) ; "SchemaApi: {}" , func_name!( ) ) ;
17161701
1717- let mut kv_keys = Vec :: with_capacity ( db_ids. len ( ) ) ;
1718- for id in db_ids {
1719- let k = DatabaseIdToName { db_id : * id } . to_string_key ( ) ;
1720- kv_keys. push ( k) ;
1721- }
1702+ let id_to_name_keys = db_ids. iter ( ) . map ( |id| DatabaseIdToName { db_id : * id } ) ;
17221703
1723- // Batch get all table-name by id
1724- let seq_names = self . mget_kv ( & kv_keys) . await ?;
1725- // If multi drop/create db the capacity may not same
1726- let mut db_names = Vec :: with_capacity ( db_ids. len ( ) ) ;
1704+ let seq_names = self . get_pb_values_vec ( id_to_name_keys) . await ?;
17271705
1728- for seq_name in seq_names {
1729- if let Some ( seq_name) = seq_name {
1730- let name_ident: DatabaseNameIdentRaw = deserialize_struct ( & seq_name. data ) ?;
1731- db_names. push ( Some ( name_ident. database_name ( ) . to_string ( ) ) ) ;
1732- } else {
1733- db_names. push ( None ) ;
1734- }
1735- }
1706+ let mut db_names = seq_names
1707+ . into_iter ( )
1708+ . map ( |seq_name| seq_name. map ( |s| s. data . database_name ( ) . to_string ( ) ) )
1709+ . collect :: < Vec < _ > > ( ) ;
17361710
1737- let mut meta_kv_keys = Vec :: with_capacity ( db_ids. len ( ) ) ;
1738- for id in db_ids {
1739- let k = DatabaseId { db_id : * id } . to_string_key ( ) ;
1740- meta_kv_keys. push ( k) ;
1741- }
1711+ let id_keys = db_ids. iter ( ) . map ( |id| DatabaseId { db_id : * id } ) ;
1712+
1713+ let seq_metas = self . get_pb_values_vec ( id_keys) . await ?;
17421714
1743- let seq_metas = self . mget_kv ( & meta_kv_keys) . await ?;
17441715 for ( i, seq_meta_opt) in seq_metas. iter ( ) . enumerate ( ) {
17451716 if let Some ( seq_meta) = seq_meta_opt {
1746- let db_meta: DatabaseMeta = deserialize_struct ( & seq_meta. data ) ?;
1747- if db_meta. drop_on . is_some ( ) {
1717+ if seq_meta. data . drop_on . is_some ( ) {
17481718 db_names[ i] = None ;
17491719 }
1720+ } else {
1721+ db_names[ i] = None ;
17501722 }
17511723 }
17521724 Ok ( db_names)
0 commit comments