@@ -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:: InputSchema ;
24+ use crate :: schema:: { EntityType , InputSchema } ;
2525use crate :: substreams_rpc:: response:: Message ;
2626use crate :: { prelude:: * , prometheus:: labels} ;
2727
@@ -350,14 +350,14 @@ impl<C: Blockchain> TriggersAdapterWrapper<C> {
350350
351351fn create_subgraph_trigger_from_entities (
352352 filter : & SubgraphFilter ,
353- entities : & Vec < Entity > ,
353+ entities : & Vec < EntityWithType > ,
354354) -> Vec < subgraph:: TriggerData > {
355355 entities
356356 . iter ( )
357357 . map ( |e| subgraph:: TriggerData {
358358 source : filter. subgraph . clone ( ) ,
359- entity : e. clone ( ) ,
360- entity_type : filter . entities . first ( ) . unwrap ( ) . clone ( ) ,
359+ entity : e. entity . clone ( ) ,
360+ entity_type : e . entity_type . as_str ( ) . to_string ( ) ,
361361 } )
362362 . collect ( )
363363}
@@ -366,7 +366,7 @@ async fn create_subgraph_triggers<C: Blockchain>(
366366 logger : Logger ,
367367 blocks : Vec < C :: Block > ,
368368 filter : & SubgraphFilter ,
369- entities : BTreeMap < BlockNumber , Vec < Entity > > ,
369+ entities : BTreeMap < BlockNumber , Vec < EntityWithType > > ,
370370) -> Result < Vec < BlockWithTriggers < C > > , Error > {
371371 let logger_clone = logger. cheap_clone ( ) ;
372372
@@ -426,24 +426,39 @@ async fn scan_subgraph_triggers<C: Blockchain>(
426426 }
427427}
428428
429+ pub struct EntityWithType {
430+ pub entity_type : EntityType ,
431+ pub entity : Entity ,
432+ }
433+
429434async fn get_entities_for_range (
430435 store : & Arc < dyn WritableStore > ,
431436 filter : & SubgraphFilter ,
432437 schema : & InputSchema ,
433438 from : BlockNumber ,
434439 to : BlockNumber ,
435- ) -> Result < BTreeMap < BlockNumber , Vec < Entity > > , Error > {
440+ ) -> Result < BTreeMap < BlockNumber , Vec < EntityWithType > > , Error > {
436441 let mut entities_by_block = BTreeMap :: new ( ) ;
437442
438443 for entity_name in & filter. entities {
439444 let entity_type = schema. entity_type ( entity_name) ?;
440445
441446 let entity_ranges = store. get_range ( & entity_type, from..to) ?;
442447
443- for ( block_number, mut entity_vec) in entity_ranges {
448+ for ( block_number, entity_vec) in entity_ranges {
449+ let mut entity_vec = entity_vec
450+ . into_iter ( )
451+ . map ( |e| EntityWithType {
452+ entity_type : entity_type. clone ( ) ,
453+ entity : e,
454+ } )
455+ . collect ( ) ;
456+
444457 entities_by_block
445458 . entry ( block_number)
446- . and_modify ( |existing_vec : & mut Vec < Entity > | existing_vec. append ( & mut entity_vec) )
459+ . and_modify ( |existing_vec : & mut Vec < EntityWithType > | {
460+ existing_vec. append ( & mut entity_vec) ;
461+ } )
447462 . or_insert ( entity_vec) ;
448463 }
449464 }
0 commit comments