diff --git a/bin/torii/src/main.rs b/bin/torii/src/main.rs index 56d10b9380..a6dc11c24f 100644 --- a/bin/torii/src/main.rs +++ b/bin/torii/src/main.rs @@ -143,7 +143,7 @@ struct Args { contracts: Vec, /// Event messages that are going to be treated as historical - /// A list of the model tags (namespace-name) + /// A list of the model tags (namespace-name) #[arg(long, value_delimiter = ',')] historical_events: Vec, @@ -252,7 +252,7 @@ async fn main() -> anyhow::Result<()> { polling_interval: Duration::from_millis(args.polling_interval), flags, event_processor_config: EventProcessorConfig { - historical_events: args.historical_events, + historical_events: args.historical_events.into_iter().collect(), }, }, shutdown_tx.clone(), diff --git a/bin/torii/torii.toml b/bin/torii/torii.toml index 93a444170f..ee843ea651 100644 --- a/bin/torii/torii.toml +++ b/bin/torii/torii.toml @@ -1,6 +1,14 @@ # Example configuration file for Torii -# contracts = [ -# { type = "WORLD", address = "" }, -# { type = "ERC20", address = "" }, -# { type = "ERC721", address = "" }, -# ] \ No newline at end of file +world_address="0x054d0f13bf3fb5f15a8674c5204aad35e3022af96bcc23bdbd16b7e297ffd399" +addr="0.0.0.0:8080" +rpc="http://0.0.0.0:5050" + +historical_events=["ns-Moved", "ns-Spawned"] + +[[contracts]] +type="ERC20" +address="0x0" + +[[contracts]] +type="ERC721" +address="0x123" \ No newline at end of file diff --git a/crates/torii/core/src/engine.rs b/crates/torii/core/src/engine.rs index 7b3c4d883e..b73b66bcf9 100644 --- a/crates/torii/core/src/engine.rs +++ b/crates/torii/core/src/engine.rs @@ -37,7 +37,9 @@ use crate::processors::store_del_record::StoreDelRecordProcessor; use crate::processors::store_set_record::StoreSetRecordProcessor; use crate::processors::store_update_member::StoreUpdateMemberProcessor; use crate::processors::store_update_record::StoreUpdateRecordProcessor; -use crate::processors::{BlockProcessor, EventProcessor, EventProcessorConfig, TransactionProcessor}; +use crate::processors::{ + BlockProcessor, EventProcessor, EventProcessorConfig, TransactionProcessor, +}; use crate::sql::{Cursors, Sql}; use crate::types::{Contract, ContractType}; @@ -219,9 +221,11 @@ impl Engine

{ config: EngineConfig, shutdown_tx: Sender<()>, block_tx: Option>, - contracts: &Vec, + contracts: &[Contract], ) -> Self { - let contracts = Arc::new(contracts.iter().map(|contract| (contract.address, contract.r#type)).collect()); + let contracts = Arc::new( + contracts.iter().map(|contract| (contract.address, contract.r#type)).collect(), + ); Self { world: Arc::new(world), diff --git a/crates/torii/core/src/processors/event_message.rs b/crates/torii/core/src/processors/event_message.rs index 2f9dcb78cd..2fbb982284 100644 --- a/crates/torii/core/src/processors/event_message.rs +++ b/crates/torii/core/src/processors/event_message.rs @@ -73,7 +73,8 @@ where entity.deserialize(&mut keys_and_unpacked)?; // TODO: this must come from some torii's configuration. - let historical = config.historical_events.contains(&format!("{}-{}", model.namespace, model.name)); + let historical = + config.historical_events.contains(&format!("{}-{}", model.namespace, model.name)); db.set_event_message(entity, event_id, block_timestamp, historical).await?; Ok(()) } diff --git a/crates/torii/core/src/processors/mod.rs b/crates/torii/core/src/processors/mod.rs index 9ea8ccf74c..fa24de5e9b 100644 --- a/crates/torii/core/src/processors/mod.rs +++ b/crates/torii/core/src/processors/mod.rs @@ -1,3 +1,5 @@ +use std::collections::HashSet; + use anyhow::{Error, Result}; use async_trait::async_trait; use dojo_world::contracts::world::WorldContractReader; @@ -26,7 +28,7 @@ const ENTITY_ID_INDEX: usize = 1; #[derive(Clone, Debug, Default)] pub struct EventProcessorConfig { - pub historical_events: Vec, + pub historical_events: HashSet, } #[async_trait] diff --git a/crates/torii/core/src/sql/test.rs b/crates/torii/core/src/sql/test.rs index 9bab88ec0c..65076fffa3 100644 --- a/crates/torii/core/src/sql/test.rs +++ b/crates/torii/core/src/sql/test.rs @@ -45,7 +45,7 @@ where EngineConfig::default(), shutdown_tx, None, - &vec![Contract { address: world_address, r#type: ContractType::WORLD }], + &[Contract { address: world_address, r#type: ContractType::WORLD }], ); let data = engine.fetch_range(0, to, &HashMap::new()).await.unwrap(); diff --git a/crates/torii/graphql/src/tests/metadata_test.rs b/crates/torii/graphql/src/tests/metadata_test.rs index 3f0d6ec11e..d6b00ea72b 100644 --- a/crates/torii/graphql/src/tests/metadata_test.rs +++ b/crates/torii/graphql/src/tests/metadata_test.rs @@ -56,10 +56,13 @@ mod tests { tokio::spawn(async move { executor.run().await.unwrap(); }); - let mut db = - Sql::new(pool.clone(), sender, &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }]) - .await - .unwrap(); + let mut db = Sql::new( + pool.clone(), + sender, + &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }], + ) + .await + .unwrap(); let schema = build_schema(&pool).await.unwrap(); let cover_img = "QWxsIHlvdXIgYmFzZSBiZWxvbmcgdG8gdXM="; @@ -117,10 +120,13 @@ mod tests { tokio::spawn(async move { executor.run().await.unwrap(); }); - let mut db = - Sql::new(pool.clone(), sender, &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }]) - .await - .unwrap(); + let mut db = Sql::new( + pool.clone(), + sender, + &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }], + ) + .await + .unwrap(); let schema = build_schema(&pool).await.unwrap(); db.set_metadata(&RESOURCE, URI, BLOCK_TIMESTAMP).unwrap(); diff --git a/crates/torii/graphql/src/tests/mod.rs b/crates/torii/graphql/src/tests/mod.rs index a003b7ea01..c21419bbba 100644 --- a/crates/torii/graphql/src/tests/mod.rs +++ b/crates/torii/graphql/src/tests/mod.rs @@ -345,9 +345,13 @@ pub async fn spinup_types_test(path: &str) -> Result { tokio::spawn(async move { executor.run().await.unwrap(); }); - let db = Sql::new(pool.clone(), sender, &vec![Contract { address: world_address, r#type: ContractType::WORLD }]) - .await - .unwrap(); + let db = Sql::new( + pool.clone(), + sender, + &vec![Contract { address: world_address, r#type: ContractType::WORLD }], + ) + .await + .unwrap(); let (shutdown_tx, _) = broadcast::channel(1); let mut engine = Engine::new( @@ -358,7 +362,7 @@ pub async fn spinup_types_test(path: &str) -> Result { EngineConfig::default(), shutdown_tx, None, - &vec![Contract { address: world_address, r#type: ContractType::WORLD }], + &[Contract { address: world_address, r#type: ContractType::WORLD }], ); let to = account.provider().block_hash_and_number().await?.block_number; diff --git a/crates/torii/graphql/src/tests/subscription_test.rs b/crates/torii/graphql/src/tests/subscription_test.rs index 5a79ea9c08..583779c97d 100644 --- a/crates/torii/graphql/src/tests/subscription_test.rs +++ b/crates/torii/graphql/src/tests/subscription_test.rs @@ -30,10 +30,13 @@ mod tests { tokio::spawn(async move { executor.run().await.unwrap(); }); - let mut db = - Sql::new(pool.clone(), sender, &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }]) - .await - .unwrap(); + let mut db = Sql::new( + pool.clone(), + sender, + &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }], + ) + .await + .unwrap(); model_fixtures(&mut db).await; // 0. Preprocess expected entity value @@ -174,10 +177,13 @@ mod tests { tokio::spawn(async move { executor.run().await.unwrap(); }); - let mut db = - Sql::new(pool.clone(), sender, &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }]) - .await - .unwrap(); + let mut db = Sql::new( + pool.clone(), + sender, + &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }], + ) + .await + .unwrap(); model_fixtures(&mut db).await; // 0. Preprocess expected entity value @@ -298,10 +304,13 @@ mod tests { tokio::spawn(async move { executor.run().await.unwrap(); }); - let mut db = - Sql::new(pool.clone(), sender, &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }]) - .await - .unwrap(); + let mut db = Sql::new( + pool.clone(), + sender, + &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }], + ) + .await + .unwrap(); // 0. Preprocess model value let namespace = "types_test".to_string(); let model_name = "Subrecord".to_string(); @@ -372,10 +381,13 @@ mod tests { tokio::spawn(async move { executor.run().await.unwrap(); }); - let mut db = - Sql::new(pool.clone(), sender, &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }]) - .await - .unwrap(); + let mut db = Sql::new( + pool.clone(), + sender, + &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }], + ) + .await + .unwrap(); // 0. Preprocess model value let namespace = "types_test".to_string(); let model_name = "Subrecord".to_string(); @@ -447,10 +459,13 @@ mod tests { tokio::spawn(async move { executor.run().await.unwrap(); }); - let mut db = - Sql::new(pool.clone(), sender, &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }]) - .await - .unwrap(); + let mut db = Sql::new( + pool.clone(), + sender, + &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }], + ) + .await + .unwrap(); let block_timestamp: u64 = 1710754478_u64; let (tx, mut rx) = mpsc::channel(7); tokio::spawn(async move { diff --git a/crates/torii/grpc/src/server/tests/entities_test.rs b/crates/torii/grpc/src/server/tests/entities_test.rs index 5214575d96..9a0bb39f31 100644 --- a/crates/torii/grpc/src/server/tests/entities_test.rs +++ b/crates/torii/grpc/src/server/tests/entities_test.rs @@ -92,9 +92,13 @@ async fn test_entities_queries(sequencer: &RunnerCtx) { tokio::spawn(async move { executor.run().await.unwrap(); }); - let db = Sql::new(pool.clone(), sender, &vec![Contract { address: world_address, r#type: ContractType::WORLD }]) - .await - .unwrap(); + let db = Sql::new( + pool.clone(), + sender, + &vec![Contract { address: world_address, r#type: ContractType::WORLD }], + ) + .await + .unwrap(); let (shutdown_tx, _) = broadcast::channel(1); let mut engine = Engine::new( @@ -105,7 +109,7 @@ async fn test_entities_queries(sequencer: &RunnerCtx) { EngineConfig::default(), shutdown_tx, None, - &vec![Contract { address: world_address, r#type: ContractType::WORLD }], + &[Contract { address: world_address, r#type: ContractType::WORLD }], ); let to = provider.block_hash_and_number().await.unwrap().block_number; diff --git a/crates/torii/libp2p/src/tests.rs b/crates/torii/libp2p/src/tests.rs index 7c94fa04c5..0156093935 100644 --- a/crates/torii/libp2p/src/tests.rs +++ b/crates/torii/libp2p/src/tests.rs @@ -577,10 +577,13 @@ mod test { tokio::spawn(async move { executor.run().await.unwrap(); }); - let mut db = - Sql::new(pool.clone(), sender, &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }]) - .await - .unwrap(); + let mut db = Sql::new( + pool.clone(), + sender, + &vec![Contract { address: Felt::ZERO, r#type: ContractType::WORLD }], + ) + .await + .unwrap(); // Register the model of our Message db.register_model(