@@ -21,7 +21,7 @@ use crate::components::store::{BlockNumber, DeploymentLocator, WritableStore};
2121use crate :: data:: subgraph:: UnifiedMappingApiVersion ;
2222use crate :: firehose:: { self , FirehoseEndpoint } ;
2323use crate :: futures03:: stream:: StreamExt as _;
24- use crate :: schema:: { EntityType , InputSchema } ;
24+ use crate :: schema:: InputSchema ;
2525use crate :: substreams_rpc:: response:: Message ;
2626use crate :: { prelude:: * , prometheus:: labels} ;
2727
@@ -433,18 +433,22 @@ async fn get_entities_for_range(
433433 from : BlockNumber ,
434434 to : BlockNumber ,
435435) -> Result < BTreeMap < BlockNumber , Vec < Entity > > , Error > {
436- let entity_types: Vec < EntityType > = filter
437- . entities
438- . iter ( )
439- . map ( |e| schema. entity_type ( e) . unwrap ( ) )
440- . collect ( ) ;
441- let mut entities = BTreeMap :: new ( ) ;
442- for entity_type in entity_types {
443- let range = from..to;
444- let mut entities_for_type = store. get_range ( & entity_type, range) ?;
445- entities. append ( & mut entities_for_type) ;
436+ let mut entities_by_block = BTreeMap :: new ( ) ;
437+
438+ for entity_name in & filter. entities {
439+ let entity_type = schema. entity_type ( entity_name) ?;
440+
441+ let entity_ranges = store. get_range ( & entity_type, from..to) ?;
442+
443+ for ( block_number, mut entity_vec) in entity_ranges {
444+ entities_by_block
445+ . entry ( block_number)
446+ . and_modify ( |existing_vec : & mut Vec < Entity > | existing_vec. append ( & mut entity_vec) )
447+ . or_insert ( entity_vec) ;
448+ }
446449 }
447- Ok ( entities)
450+
451+ Ok ( entities_by_block)
448452}
449453
450454impl < C : Blockchain > TriggersAdapterWrapper < C > {
0 commit comments