diff --git a/Cargo.lock b/Cargo.lock index 2d58efdd..b84f4e40 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13322,6 +13322,7 @@ dependencies = [ "thiserror 1.0.63", "tokio", "tokio-util", + "torii-processors", "torii-sqlite", "tracing", ] @@ -13406,6 +13407,27 @@ dependencies = [ "torii-sqlite", ] +[[package]] +name = "torii-processors" +version = "1.2.3" +dependencies = [ + "anyhow", + "async-trait", + "base64 0.21.7", + "cainome", + "cainome-cairo-serde", + "dojo-types 1.4.1", + "dojo-world 1.4.1", + "futures-util", + "lazy_static", + "serde_json", + "starknet 0.12.0", + "starknet-crypto 0.7.4", + "tokio", + "torii-sqlite", + "tracing", +] + [[package]] name = "torii-proto" version = "1.2.3" diff --git a/Cargo.toml b/Cargo.toml index 644be62f..a179c50d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,6 +55,7 @@ torii-sqlite = { path = "crates/sqlite/sqlite" } torii-sqlite-types = { path = "crates/sqlite/types" } torii-typed-data = { path = "crates/typed-data" } torii-mcp = { path = "crates/mcp" } +torii-processors = { path = "crates/processors" } torii-grpc-client = { path = "crates/grpc/client" } torii-grpc-server = { path = "crates/grpc/server" } torii-adigraphmap = { path = "crates/adigraphmap" } diff --git a/crates/indexer/Cargo.toml b/crates/indexer/Cargo.toml index 671f6e90..0e4c20f7 100644 --- a/crates/indexer/Cargo.toml +++ b/crates/indexer/Cargo.toml @@ -41,6 +41,7 @@ tokio-util.workspace = true tracing.workspace = true torii-sqlite.workspace = true lazy_static.workspace = true +torii-processors.workspace = true [dev-dependencies] dojo-test-utils.workspace = true diff --git a/crates/indexer/src/engine.rs b/crates/indexer/src/engine.rs index a3f9b2e7..f976c0b4 100644 --- a/crates/indexer/src/engine.rs +++ b/crates/indexer/src/engine.rs @@ -17,141 +17,20 @@ use starknet::core::types::{ MaybePendingBlockWithReceipts, MaybePendingBlockWithTxHashes, PendingBlockWithReceipts, ResultPageRequest, Transaction, TransactionReceipt, TransactionWithReceipt, }; -use starknet::core::utils::get_selector_from_name; use starknet::providers::{Provider, ProviderRequestData, ProviderResponseData}; use starknet_crypto::Felt; use tokio::sync::broadcast::Sender; use tokio::time::{sleep, Instant}; +use torii_processors::processors::Processors; +use torii_processors::EventProcessorConfig; use torii_sqlite::cache::ContractClassCache; use torii_sqlite::types::{Contract, ContractType}; use torii_sqlite::{Cursors, Sql}; use tracing::{debug, error, info, trace, warn}; use crate::constants::LOG_TARGET; -use crate::processors::controller::ControllerProcessor; -use crate::processors::erc1155_transfer_batch::Erc1155TransferBatchProcessor; -use crate::processors::erc1155_transfer_single::Erc1155TransferSingleProcessor; -use crate::processors::erc20_legacy_transfer::Erc20LegacyTransferProcessor; -use crate::processors::erc20_transfer::Erc20TransferProcessor; -use crate::processors::erc4906_batch_metadata_update::Erc4906BatchMetadataUpdateProcessor; -use crate::processors::erc4906_metadata_update::Erc4906MetadataUpdateProcessor; -use crate::processors::erc721_legacy_transfer::Erc721LegacyTransferProcessor; -use crate::processors::erc721_transfer::Erc721TransferProcessor; -use crate::processors::event_message::EventMessageProcessor; -use crate::processors::metadata_update::MetadataUpdateProcessor; -use crate::processors::raw_event::RawEventProcessor; -use crate::processors::register_event::RegisterEventProcessor; -use crate::processors::register_model::RegisterModelProcessor; -use crate::processors::store_del_record::StoreDelRecordProcessor; -use crate::processors::store_set_record::StoreSetRecordProcessor; -use crate::processors::store_transaction::StoreTransactionProcessor; -use crate::processors::store_update_member::StoreUpdateMemberProcessor; -use crate::processors::store_update_record::StoreUpdateRecordProcessor; -use crate::processors::upgrade_event::UpgradeEventProcessor; -use crate::processors::upgrade_model::UpgradeModelProcessor; -use crate::processors::{ - BlockProcessor, EventProcessor, EventProcessorConfig, TransactionProcessor, -}; -use crate::task_manager::{self, ParallelizedEvent, TaskManager}; - -type EventProcessorMap

= HashMap>>>; +use torii_processors::task_manager::{ParallelizedEvent, TaskManager}; -#[allow(missing_debug_implementations)] -pub struct Processors { - pub block: Vec>>, - pub transaction: Vec>>, - pub catch_all_event: Box>, - pub event_processors: HashMap>, -} - -impl Default for Processors

{ - fn default() -> Self { - Self { - block: vec![], - transaction: vec![Box::new(StoreTransactionProcessor)], - // We shouldn't have a catch all for now since the world doesn't forward raw events - // anymore. - catch_all_event: Box::new(RawEventProcessor) as Box>, - event_processors: Self::initialize_event_processors(), - } - } -} - -impl Processors

{ - pub fn initialize_event_processors() -> HashMap> { - let mut event_processors_map = HashMap::>::new(); - - let event_processors = vec![ - ( - ContractType::WORLD, - vec![ - Box::new(RegisterModelProcessor) as Box>, - Box::new(RegisterEventProcessor) as Box>, - Box::new(UpgradeModelProcessor) as Box>, - Box::new(UpgradeEventProcessor) as Box>, - Box::new(StoreSetRecordProcessor), - Box::new(StoreDelRecordProcessor), - Box::new(StoreUpdateRecordProcessor), - Box::new(StoreUpdateMemberProcessor), - Box::new(MetadataUpdateProcessor), - Box::new(EventMessageProcessor), - ], - ), - ( - ContractType::ERC20, - vec![ - Box::new(Erc20TransferProcessor) as Box>, - Box::new(Erc20LegacyTransferProcessor) as Box>, - ], - ), - ( - ContractType::ERC721, - vec![ - Box::new(Erc721TransferProcessor) as Box>, - Box::new(Erc721LegacyTransferProcessor) as Box>, - Box::new(Erc4906MetadataUpdateProcessor) as Box>, - Box::new(Erc4906BatchMetadataUpdateProcessor) as Box>, - ], - ), - ( - ContractType::ERC1155, - vec![ - Box::new(Erc1155TransferBatchProcessor) as Box>, - Box::new(Erc1155TransferSingleProcessor) as Box>, - Box::new(Erc4906MetadataUpdateProcessor) as Box>, - Box::new(Erc4906BatchMetadataUpdateProcessor) as Box>, - ], - ), - ( - ContractType::UDC, - vec![Box::new(ControllerProcessor) as Box>], - ), - ]; - - for (contract_type, processors) in event_processors { - for processor in processors { - let key = get_selector_from_name(processor.event_key().as_str()) - .expect("Event key is ASCII so this should never fail"); - // event_processors_map.entry(contract_type).or_default().insert(key, processor); - event_processors_map - .entry(contract_type) - .or_default() - .entry(key) - .or_default() - .push(processor); - } - } - - event_processors_map - } - - pub fn get_event_processor( - &self, - contract_type: ContractType, - ) -> &HashMap>>> { - self.event_processors.get(&contract_type).unwrap() - } -} bitflags! { #[derive(Debug, Clone)] @@ -938,7 +817,7 @@ impl Engine

{ let event_key = event.keys[0]; - let processors = self.processors.get_event_processor(contract_type); + let processors = self.processors.get_event_processors(contract_type); let Some(processors) = processors.get(&event_key) else { // if we dont have a processor for this event, we try the catch all processor if self.processors.catch_all_event.validate(event) { @@ -984,7 +863,7 @@ impl Engine

{ (processor.task_priority(), processor.task_identifier(event)); // if our event can be parallelized, we add it to the task manager - if task_identifier != task_manager::TASK_ID_SEQUENTIAL { + if task_identifier != torii_processors::task_manager::TASK_ID_SEQUENTIAL { self.task_manager.add_parallelized_event( task_priority, task_identifier, diff --git a/crates/indexer/src/lib.rs b/crates/indexer/src/lib.rs index dcb8787a..7939176d 100644 --- a/crates/indexer/src/lib.rs +++ b/crates/indexer/src/lib.rs @@ -5,7 +5,4 @@ mod constants; mod test; pub mod engine; -pub mod processors; -mod task_manager; - pub use engine::Engine; diff --git a/crates/indexer/src/test.rs b/crates/indexer/src/test.rs index 3f29baf8..310f1180 100644 --- a/crates/indexer/src/test.rs +++ b/crates/indexer/src/test.rs @@ -27,7 +27,8 @@ use torii_sqlite::types::{Contract, ContractType, Token}; use torii_sqlite::utils::u256_to_sql_string; use torii_sqlite::Sql; -use crate::engine::{Engine, EngineConfig, Processors}; +use crate::engine::{Engine, EngineConfig}; +use torii_processors::processors::Processors; pub async fn bootstrap_engine

( world: WorldContractReader

, diff --git a/crates/processors/Cargo.toml b/crates/processors/Cargo.toml new file mode 100644 index 00000000..38af87d7 --- /dev/null +++ b/crates/processors/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "torii-processors" +edition.workspace = true +license.workspace = true +license-file.workspace = true +repository.workspace = true +version.workspace = true + +[dependencies] +torii-sqlite.workspace = true +dojo-world.workspace = true +dojo-types.workspace = true +starknet.workspace = true +anyhow.workspace = true +async-trait.workspace = true +tokio.workspace = true +tracing.workspace = true +cainome.workspace = true +futures-util.workspace = true +starknet-crypto.workspace = true +lazy_static.workspace = true +base64.workspace = true +serde_json.workspace = true +cainome-cairo-serde.workspace = true diff --git a/crates/indexer/src/processors/mod.rs b/crates/processors/src/lib.rs similarity index 79% rename from crates/indexer/src/processors/mod.rs rename to crates/processors/src/lib.rs index 6ebbb3f3..8cba095e 100644 --- a/crates/indexer/src/processors/mod.rs +++ b/crates/processors/src/lib.rs @@ -8,29 +8,10 @@ use starknet::providers::Provider; use torii_sqlite::cache::ContractClassCache; use torii_sqlite::Sql; -use crate::task_manager::{TaskId, TaskPriority}; +pub mod task_manager; +pub mod processors; -pub mod controller; -pub mod erc1155_transfer_batch; -pub mod erc1155_transfer_single; -pub mod erc20_legacy_transfer; -pub mod erc20_transfer; -pub mod erc4906_batch_metadata_update; -pub mod erc4906_metadata_update; -pub mod erc721_legacy_transfer; -pub mod erc721_transfer; -pub mod event_message; -pub mod metadata_update; -pub mod raw_event; -pub mod register_event; -pub mod register_model; -pub mod store_del_record; -pub mod store_set_record; -pub mod store_transaction; -pub mod store_update_member; -pub mod store_update_record; -pub mod upgrade_event; -pub mod upgrade_model; +use crate::task_manager::{TaskId, TaskPriority}; #[derive(Clone, Debug, Default)] pub struct EventProcessorConfig { @@ -105,3 +86,4 @@ pub trait TransactionProcessor: Send + Syn contract_class_cache: &ContractClassCache

, ) -> Result<(), Error>; } + diff --git a/crates/indexer/src/processors/controller.rs b/crates/processors/src/processors/controller.rs similarity index 98% rename from crates/indexer/src/processors/controller.rs rename to crates/processors/src/processors/controller.rs index a0f8e08b..6e9f05cd 100644 --- a/crates/indexer/src/processors/controller.rs +++ b/crates/processors/src/processors/controller.rs @@ -12,7 +12,7 @@ use starknet_crypto::Felt; use torii_sqlite::Sql; use tracing::info; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::controller"; diff --git a/crates/indexer/src/processors/erc1155_transfer_batch.rs b/crates/processors/src/processors/erc1155_transfer_batch.rs similarity index 98% rename from crates/indexer/src/processors/erc1155_transfer_batch.rs rename to crates/processors/src/processors/erc1155_transfer_batch.rs index 70ff6324..a1200e47 100644 --- a/crates/indexer/src/processors/erc1155_transfer_batch.rs +++ b/crates/processors/src/processors/erc1155_transfer_batch.rs @@ -7,7 +7,7 @@ use starknet::providers::Provider; use torii_sqlite::Sql; use tracing::debug; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{self, TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::erc1155_transfer_batch"; diff --git a/crates/indexer/src/processors/erc1155_transfer_single.rs b/crates/processors/src/processors/erc1155_transfer_single.rs similarity index 97% rename from crates/indexer/src/processors/erc1155_transfer_single.rs rename to crates/processors/src/processors/erc1155_transfer_single.rs index ea9cc38b..a7c1e645 100644 --- a/crates/indexer/src/processors/erc1155_transfer_single.rs +++ b/crates/processors/src/processors/erc1155_transfer_single.rs @@ -7,7 +7,7 @@ use starknet::providers::Provider; use torii_sqlite::Sql; use tracing::debug; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{self, TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::erc1155_transfer_single"; diff --git a/crates/indexer/src/processors/erc20_legacy_transfer.rs b/crates/processors/src/processors/erc20_legacy_transfer.rs similarity index 98% rename from crates/indexer/src/processors/erc20_legacy_transfer.rs rename to crates/processors/src/processors/erc20_legacy_transfer.rs index 0fbf663f..3404769b 100644 --- a/crates/indexer/src/processors/erc20_legacy_transfer.rs +++ b/crates/processors/src/processors/erc20_legacy_transfer.rs @@ -9,7 +9,7 @@ use starknet::providers::Provider; use torii_sqlite::Sql; use tracing::debug; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::erc20_legacy_transfer"; diff --git a/crates/indexer/src/processors/erc20_transfer.rs b/crates/processors/src/processors/erc20_transfer.rs similarity index 98% rename from crates/indexer/src/processors/erc20_transfer.rs rename to crates/processors/src/processors/erc20_transfer.rs index 301f70e3..1b637edd 100644 --- a/crates/indexer/src/processors/erc20_transfer.rs +++ b/crates/processors/src/processors/erc20_transfer.rs @@ -9,7 +9,7 @@ use starknet::providers::Provider; use torii_sqlite::Sql; use tracing::debug; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::erc20_transfer"; diff --git a/crates/indexer/src/processors/erc4906_batch_metadata_update.rs b/crates/processors/src/processors/erc4906_batch_metadata_update.rs similarity index 97% rename from crates/indexer/src/processors/erc4906_batch_metadata_update.rs rename to crates/processors/src/processors/erc4906_batch_metadata_update.rs index 0a0a6425..1ac24516 100644 --- a/crates/indexer/src/processors/erc4906_batch_metadata_update.rs +++ b/crates/processors/src/processors/erc4906_batch_metadata_update.rs @@ -7,7 +7,7 @@ use starknet::providers::Provider; use torii_sqlite::Sql; use tracing::debug; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{self, TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::erc4906_metadata_update_batch"; diff --git a/crates/indexer/src/processors/erc4906_metadata_update.rs b/crates/processors/src/processors/erc4906_metadata_update.rs similarity index 97% rename from crates/indexer/src/processors/erc4906_metadata_update.rs rename to crates/processors/src/processors/erc4906_metadata_update.rs index 832f0e2c..f0fb808c 100644 --- a/crates/indexer/src/processors/erc4906_metadata_update.rs +++ b/crates/processors/src/processors/erc4906_metadata_update.rs @@ -7,7 +7,7 @@ use starknet::providers::Provider; use torii_sqlite::Sql; use tracing::debug; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{self, TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::erc4906_metadata_update"; diff --git a/crates/indexer/src/processors/erc721_legacy_transfer.rs b/crates/processors/src/processors/erc721_legacy_transfer.rs similarity index 98% rename from crates/indexer/src/processors/erc721_legacy_transfer.rs rename to crates/processors/src/processors/erc721_legacy_transfer.rs index f253a971..177057c4 100644 --- a/crates/indexer/src/processors/erc721_legacy_transfer.rs +++ b/crates/processors/src/processors/erc721_legacy_transfer.rs @@ -9,7 +9,7 @@ use starknet::providers::Provider; use torii_sqlite::Sql; use tracing::debug; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::erc721_legacy_transfer"; diff --git a/crates/indexer/src/processors/erc721_transfer.rs b/crates/processors/src/processors/erc721_transfer.rs similarity index 98% rename from crates/indexer/src/processors/erc721_transfer.rs rename to crates/processors/src/processors/erc721_transfer.rs index 86259063..be09b146 100644 --- a/crates/indexer/src/processors/erc721_transfer.rs +++ b/crates/processors/src/processors/erc721_transfer.rs @@ -9,7 +9,7 @@ use starknet::providers::Provider; use torii_sqlite::Sql; use tracing::debug; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::erc721_transfer"; diff --git a/crates/indexer/src/processors/event_message.rs b/crates/processors/src/processors/event_message.rs similarity index 98% rename from crates/indexer/src/processors/event_message.rs rename to crates/processors/src/processors/event_message.rs index 1d24d33d..81613ceb 100644 --- a/crates/indexer/src/processors/event_message.rs +++ b/crates/processors/src/processors/event_message.rs @@ -11,7 +11,7 @@ use starknet_crypto::poseidon_hash_many; use torii_sqlite::Sql; use tracing::info; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::event_message"; diff --git a/crates/indexer/src/processors/metadata_update.rs b/crates/processors/src/processors/metadata_update.rs similarity index 98% rename from crates/indexer/src/processors/metadata_update.rs rename to crates/processors/src/processors/metadata_update.rs index a0186c1c..740155e9 100644 --- a/crates/indexer/src/processors/metadata_update.rs +++ b/crates/processors/src/processors/metadata_update.rs @@ -15,7 +15,7 @@ use torii_sqlite::utils::fetch_content_from_ipfs; use torii_sqlite::Sql; use tracing::{error, info}; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::metadata_update"; diff --git a/crates/processors/src/processors/mod.rs b/crates/processors/src/processors/mod.rs new file mode 100644 index 00000000..fedfd6b1 --- /dev/null +++ b/crates/processors/src/processors/mod.rs @@ -0,0 +1,141 @@ +use std::collections::HashMap; + +use controller::ControllerProcessor; +use erc1155_transfer_batch::Erc1155TransferBatchProcessor; +use erc1155_transfer_single::Erc1155TransferSingleProcessor; +use erc20_legacy_transfer::Erc20LegacyTransferProcessor; +use erc20_transfer::Erc20TransferProcessor; +use erc4906_batch_metadata_update::Erc4906BatchMetadataUpdateProcessor; +use erc4906_metadata_update::Erc4906MetadataUpdateProcessor; +use erc721_legacy_transfer::Erc721LegacyTransferProcessor; +use erc721_transfer::Erc721TransferProcessor; +use event_message::EventMessageProcessor; +use metadata_update::MetadataUpdateProcessor; +use raw_event::RawEventProcessor; +use register_event::RegisterEventProcessor; +use register_model::RegisterModelProcessor; +use starknet::{core::utils::get_selector_from_name, providers::Provider}; +use starknet::core::types::Felt; +use store_del_record::StoreDelRecordProcessor; +use store_set_record::StoreSetRecordProcessor; +use store_transaction::StoreTransactionProcessor; +use store_update_member::StoreUpdateMemberProcessor; +use store_update_record::StoreUpdateRecordProcessor; +use torii_sqlite::types::ContractType; +use upgrade_event::UpgradeEventProcessor; +use upgrade_model::UpgradeModelProcessor; + +use crate::{BlockProcessor, EventProcessor, TransactionProcessor}; + +mod controller; +mod erc1155_transfer_batch; +mod erc1155_transfer_single; +mod erc20_legacy_transfer; +mod erc20_transfer; +mod erc4906_batch_metadata_update; +mod erc4906_metadata_update; +mod erc721_legacy_transfer; +mod erc721_transfer; +mod event_message; +mod metadata_update; +mod raw_event; +mod register_event; +mod register_model; +mod store_del_record; +mod store_set_record; +mod store_transaction; +mod store_update_member; +mod store_update_record; +mod upgrade_event; +mod upgrade_model; + +type EventKey = Felt; +type EventProcessorMap

= HashMap>>>; + +#[allow(missing_debug_implementations)] +pub struct Processors { + pub block: Vec>>, + pub transaction: Vec>>, + pub catch_all_event: Box>, + pub event_processors: HashMap>, +} + +impl Default for Processors

{ + fn default() -> Self { + Self { + block: vec![], + transaction: vec![Box::new(StoreTransactionProcessor)], + // We shouldn't have a catch all for now since the world doesn't forward raw events + // anymore. + catch_all_event: Box::new(RawEventProcessor) as Box>, + event_processors: Self::initialize_event_processors(), + } + } +} + +impl Processors

{ + pub fn initialize_event_processors() -> HashMap> { + let mut event_processors_map = HashMap::>::new(); + + let event_processors = vec![ + ( + ContractType::WORLD, + vec![ + Box::new(RegisterModelProcessor) as Box>, + Box::new(RegisterEventProcessor) as Box>, + Box::new(UpgradeModelProcessor) as Box>, + Box::new(UpgradeEventProcessor) as Box>, + Box::new(StoreSetRecordProcessor), + Box::new(StoreDelRecordProcessor), + Box::new(StoreUpdateRecordProcessor), + Box::new(StoreUpdateMemberProcessor), + Box::new(MetadataUpdateProcessor), + Box::new(EventMessageProcessor), + ], + ), + ( + ContractType::ERC20, + vec![ + Box::new(Erc20TransferProcessor) as Box>, + Box::new(Erc20LegacyTransferProcessor) as Box>, + ], + ), + ( + ContractType::ERC721, + vec![ + Box::new(Erc721TransferProcessor) as Box>, + Box::new(Erc721LegacyTransferProcessor) as Box>, + Box::new(Erc4906MetadataUpdateProcessor) as Box>, + Box::new(Erc4906BatchMetadataUpdateProcessor) as Box>, + ], + ), + ( + ContractType::ERC1155, + vec![ + Box::new(Erc1155TransferBatchProcessor) as Box>, + Box::new(Erc1155TransferSingleProcessor) as Box>, + Box::new(Erc4906MetadataUpdateProcessor) as Box>, + Box::new(Erc4906BatchMetadataUpdateProcessor) as Box>, + ], + ), + (ContractType::UDC, vec![Box::new(ControllerProcessor) as Box>]), + ]; + + for (contract_type, processors) in event_processors { + for processor in processors { + let key = get_selector_from_name(processor.event_key().as_str()) + .expect("Event key is ASCII so this should never fail"); + event_processors_map.entry(contract_type).or_default().entry(key).or_default().push(processor); + } + } + + event_processors_map + } + + pub fn get_event_processors( + &self, + contract_type: ContractType, + ) -> &HashMap>>> { + self.event_processors.get(&contract_type).unwrap() + } +} \ No newline at end of file diff --git a/crates/indexer/src/processors/raw_event.rs b/crates/processors/src/processors/raw_event.rs similarity index 95% rename from crates/indexer/src/processors/raw_event.rs rename to crates/processors/src/processors/raw_event.rs index 8614b926..2a532940 100644 --- a/crates/indexer/src/processors/raw_event.rs +++ b/crates/processors/src/processors/raw_event.rs @@ -5,7 +5,7 @@ use starknet::core::types::Event; use starknet::providers::Provider; use torii_sqlite::Sql; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{self, TaskId, TaskPriority}; #[derive(Default, Debug)] diff --git a/crates/indexer/src/processors/register_event.rs b/crates/processors/src/processors/register_event.rs similarity index 98% rename from crates/indexer/src/processors/register_event.rs rename to crates/processors/src/processors/register_event.rs index 265c0ccc..999cd2b3 100644 --- a/crates/indexer/src/processors/register_event.rs +++ b/crates/processors/src/processors/register_event.rs @@ -10,7 +10,7 @@ use starknet::providers::Provider; use torii_sqlite::Sql; use tracing::{debug, info}; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::register_event"; diff --git a/crates/indexer/src/processors/register_model.rs b/crates/processors/src/processors/register_model.rs similarity index 98% rename from crates/indexer/src/processors/register_model.rs rename to crates/processors/src/processors/register_model.rs index bcd181e6..f176e7de 100644 --- a/crates/indexer/src/processors/register_model.rs +++ b/crates/processors/src/processors/register_model.rs @@ -10,7 +10,7 @@ use starknet::providers::Provider; use torii_sqlite::Sql; use tracing::{debug, info}; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::register_model"; diff --git a/crates/indexer/src/processors/store_del_record.rs b/crates/processors/src/processors/store_del_record.rs similarity index 98% rename from crates/indexer/src/processors/store_del_record.rs rename to crates/processors/src/processors/store_del_record.rs index fc23834f..a582eeb7 100644 --- a/crates/indexer/src/processors/store_del_record.rs +++ b/crates/processors/src/processors/store_del_record.rs @@ -9,7 +9,7 @@ use starknet::providers::Provider; use torii_sqlite::Sql; use tracing::{debug, info}; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::store_del_record"; diff --git a/crates/indexer/src/processors/store_set_record.rs b/crates/processors/src/processors/store_set_record.rs similarity index 98% rename from crates/indexer/src/processors/store_set_record.rs rename to crates/processors/src/processors/store_set_record.rs index 403ab301..377f55b4 100644 --- a/crates/indexer/src/processors/store_set_record.rs +++ b/crates/processors/src/processors/store_set_record.rs @@ -10,7 +10,7 @@ use torii_sqlite::utils::felts_to_sql_string; use torii_sqlite::Sql; use tracing::{debug, info}; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::store_set_record"; diff --git a/crates/indexer/src/processors/store_transaction.rs b/crates/processors/src/processors/store_transaction.rs similarity index 100% rename from crates/indexer/src/processors/store_transaction.rs rename to crates/processors/src/processors/store_transaction.rs diff --git a/crates/indexer/src/processors/store_update_member.rs b/crates/processors/src/processors/store_update_member.rs similarity index 98% rename from crates/indexer/src/processors/store_update_member.rs rename to crates/processors/src/processors/store_update_member.rs index 78b59345..ecb6de38 100644 --- a/crates/indexer/src/processors/store_update_member.rs +++ b/crates/processors/src/processors/store_update_member.rs @@ -11,7 +11,7 @@ use starknet::providers::Provider; use torii_sqlite::Sql; use tracing::{debug, info}; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::store_update_member"; diff --git a/crates/indexer/src/processors/store_update_record.rs b/crates/processors/src/processors/store_update_record.rs similarity index 98% rename from crates/indexer/src/processors/store_update_record.rs rename to crates/processors/src/processors/store_update_record.rs index db38e18c..8865c4c6 100644 --- a/crates/indexer/src/processors/store_update_record.rs +++ b/crates/processors/src/processors/store_update_record.rs @@ -10,7 +10,7 @@ use starknet::providers::Provider; use torii_sqlite::Sql; use tracing::{debug, info}; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::store_update_record"; diff --git a/crates/indexer/src/processors/upgrade_event.rs b/crates/processors/src/processors/upgrade_event.rs similarity index 98% rename from crates/indexer/src/processors/upgrade_event.rs rename to crates/processors/src/processors/upgrade_event.rs index 54574c2c..565e1aa7 100644 --- a/crates/indexer/src/processors/upgrade_event.rs +++ b/crates/processors/src/processors/upgrade_event.rs @@ -10,7 +10,7 @@ use starknet::providers::Provider; use torii_sqlite::Sql; use tracing::{debug, info}; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::upgrade_event"; diff --git a/crates/indexer/src/processors/upgrade_model.rs b/crates/processors/src/processors/upgrade_model.rs similarity index 98% rename from crates/indexer/src/processors/upgrade_model.rs rename to crates/processors/src/processors/upgrade_model.rs index ae4f1bc1..0b11c772 100644 --- a/crates/indexer/src/processors/upgrade_model.rs +++ b/crates/processors/src/processors/upgrade_model.rs @@ -10,7 +10,7 @@ use starknet::providers::Provider; use torii_sqlite::Sql; use tracing::{debug, info}; -use super::{EventProcessor, EventProcessorConfig}; +use crate::{EventProcessor, EventProcessorConfig}; use crate::task_manager::{TaskId, TaskPriority}; pub(crate) const LOG_TARGET: &str = "torii::indexer::processors::upgrade_model"; diff --git a/crates/indexer/src/task_manager.rs b/crates/processors/src/task_manager.rs similarity index 97% rename from crates/indexer/src/task_manager.rs rename to crates/processors/src/task_manager.rs index 9a7c4a4e..7d993658 100644 --- a/crates/indexer/src/task_manager.rs +++ b/crates/processors/src/task_manager.rs @@ -11,8 +11,8 @@ use torii_sqlite::types::ContractType; use torii_sqlite::Sql; use tracing::{debug, error}; -use crate::engine::Processors; -use crate::processors::EventProcessorConfig; +use crate::EventProcessorConfig; +use crate::processors::Processors; pub const TASK_ID_SEQUENTIAL: TaskId = 0; @@ -99,7 +99,7 @@ impl TaskManager

{ event_id, } in events { - let contract_processors = processors.get_event_processor(contract_type); + let contract_processors = processors.get_event_processors(contract_type); if let Some(processors) = contract_processors.get(&event.keys[0]) { let processor = processors .iter()