From fe7c5b69b6015c483ed362da4bdbd84922af0495 Mon Sep 17 00:00:00 2001 From: Luis Herasme Date: Fri, 19 Jul 2024 11:54:02 -0400 Subject: [PATCH] Adds "network" to handler --- ghost-crab-macros/src/lib.rs | 41 ++++++++++++++++++------------------ ghost-crab/src/handler.rs | 1 + ghost-crab/src/indexer.rs | 8 ++----- 3 files changed, 23 insertions(+), 27 deletions(-) diff --git a/ghost-crab-macros/src/lib.rs b/ghost-crab-macros/src/lib.rs index c177ee0..bcd8be0 100644 --- a/ghost-crab-macros/src/lib.rs +++ b/ghost-crab-macros/src/lib.rs @@ -117,32 +117,27 @@ fn create_handler(metadata: TokenStream, input: TokenStream, is_template: bool) let (name, event_name) = get_source_and_event(metadata); let config = get_config(); - let abi = if is_template { - config.templates.get(&name).expect("Source not found.").abi.clone() - } else { - config.data_sources.get(&name).expect("Source not found.").abi.clone() - }; + let abi; + let network; + let execution_mode; - let abi = Literal::string(&abi); + if is_template { + let source = config.templates.get(&name).expect("Source not found."); - let execution_mode = if is_template { - if let Some(execution_mode) = - config.templates.get(&name).expect("Source not found.").execution_mode.clone() - { - execution_mode - } else { - ExecutionMode::Parallel - } + abi = source.abi.clone(); + network = source.network.clone(); + execution_mode = source.execution_mode.clone().unwrap_or(ExecutionMode::Parallel); } else { - if let Some(execution_mode) = - config.data_sources.get(&name).expect("Source not found.").execution_mode.clone() - { - execution_mode - } else { - ExecutionMode::Parallel - } + let source = config.data_sources.get(&name).expect("Source not found."); + + abi = source.abi.clone(); + network = source.network.clone(); + execution_mode = source.execution_mode.clone().unwrap_or(ExecutionMode::Parallel); }; + let abi = Literal::string(&abi); + let network = Literal::string(&network); + let execution_mode = match execution_mode { ExecutionMode::Parallel => quote! { ExecutionMode::Parallel @@ -197,6 +192,10 @@ fn create_handler(metadata: TokenStream, input: TokenStream, is_template: bool) #is_template } + fn network(&self) - String { + String::from(#network) + } + fn execution_mode(&self) -> ExecutionMode { #execution_mode } diff --git a/ghost-crab/src/handler.rs b/ghost-crab/src/handler.rs index 1a67354..c51dbd9 100644 --- a/ghost-crab/src/handler.rs +++ b/ghost-crab/src/handler.rs @@ -21,6 +21,7 @@ pub trait Handler { async fn handle(&self, params: Context); fn get_source(&self) -> String; fn is_template(&self) -> bool; + fn network(&self) -> String; fn execution_mode(&self) -> ExecutionMode; fn get_event_signature(&self) -> String; } diff --git a/ghost-crab/src/indexer.rs b/ghost-crab/src/indexer.rs index ba42da6..499d91c 100644 --- a/ghost-crab/src/indexer.rs +++ b/ghost-crab/src/indexer.rs @@ -20,11 +20,7 @@ pub struct Template { impl TemplateManager { pub async fn start(&self, template: Template) { - let config = config::load(); - - let source = config.templates.get(&template.handler.get_source()).unwrap(); - - let provider = RPC_MANAGER.lock().await.get(source.network.clone()).await; + let provider = RPC_MANAGER.lock().await.get(template.handler.network()).await; self.tx .send(HandlerConfig { @@ -78,8 +74,8 @@ impl Indexer { return; } + let provider = RPC_MANAGER.lock().await.get(handler.network()).await; let source = self.config.data_sources.get(&handler.get_source()).unwrap(); - let provider = RPC_MANAGER.lock().await.get(source.network.clone()).await; self.handlers.push(HandlerConfig { start_block: source.start_block,