@@ -21,7 +21,7 @@ use crate::components::store::{BlockNumber, DeploymentLocator, SourceableStore};
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
@@ -436,18 +436,22 @@ async fn get_entities_for_range(
436436 from : BlockNumber ,
437437 to : BlockNumber ,
438438) -> Result < BTreeMap < BlockNumber , Vec < Entity > > , Error > {
439- let entity_types: Vec < EntityType > = filter
440- . entities
441- . iter ( )
442- . map ( |e| schema. entity_type ( e) . unwrap ( ) )
443- . collect ( ) ;
444- let mut entities = BTreeMap :: new ( ) ;
445- for entity_type in entity_types {
446- let range = from..to;
447- let mut entities_for_type = store. get_range ( & entity_type, range) ?;
448- entities. append ( & mut entities_for_type) ;
439+ let mut entities_by_block = BTreeMap :: new ( ) ;
440+
441+ for entity_name in & filter. entities {
442+ let entity_type = schema. entity_type ( entity_name) ?;
443+
444+ let entity_ranges = store. get_range ( & entity_type, from..to) ?;
445+
446+ for ( block_number, mut entity_vec) in entity_ranges {
447+ entities_by_block
448+ . entry ( block_number)
449+ . and_modify ( |existing_vec : & mut Vec < Entity > | existing_vec. append ( & mut entity_vec) )
450+ . or_insert ( entity_vec) ;
451+ }
449452 }
450- Ok ( entities)
453+
454+ Ok ( entities_by_block)
451455}
452456
453457impl < C : Blockchain > TriggersAdapterWrapper < C > {
0 commit comments