From 71799199a9e395419f51c79c5606054f7fd4f104 Mon Sep 17 00:00:00 2001 From: Larko <59736843+Larkooo@users.noreply.github.com> Date: Thu, 5 Dec 2024 22:16:22 +0700 Subject: [PATCH 1/3] refactor(torii-args): bool values no need for explicit true (#2767) * refactor(torii-args): bool values no need for explicit true * fmt * fix test --- crates/torii/cli/src/args.rs | 3 --- crates/torii/cli/src/options.rs | 14 ++++++++++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/crates/torii/cli/src/args.rs b/crates/torii/cli/src/args.rs index 4049ff3049..36a72ad20a 100644 --- a/crates/torii/cli/src/args.rs +++ b/crates/torii/cli/src/args.rs @@ -218,12 +218,9 @@ mod test { "http://0.0.0.0:6060", "--db-dir", "/tmp/torii-test2", - "--events.raw", - "false", "--events.historical", "a-A", "--indexing.transactions", - "true", "--config", path_str.as_str(), ]; diff --git a/crates/torii/cli/src/options.rs b/crates/torii/cli/src/options.rs index 48fc62915d..eaffd58b2d 100644 --- a/crates/torii/cli/src/options.rs +++ b/crates/torii/cli/src/options.rs @@ -2,7 +2,6 @@ use std::net::{IpAddr, Ipv4Addr}; use std::str::FromStr; use anyhow::Context; -use clap::ArgAction; use serde::ser::SerializeSeq; use serde::{Deserialize, Serialize}; use starknet::core::types::Felt; @@ -102,7 +101,11 @@ pub struct IndexingOptions { pub blocks_chunk_size: u64, /// Enable indexing pending blocks - #[arg(long = "indexing.pending", action = ArgAction::Set, default_value_t = true, help = "Whether or not to index pending blocks.")] + #[arg( + long = "indexing.pending", + default_value_t = true, + help = "Whether or not to index pending blocks." + )] #[serde(default)] pub pending: bool, @@ -127,7 +130,6 @@ pub struct IndexingOptions { /// Whether or not to index world transactions #[arg( long = "indexing.transactions", - action = ArgAction::Set, default_value_t = false, help = "Whether or not to index world transactions and keep them in the database." )] @@ -214,7 +216,11 @@ impl IndexingOptions { #[command(next_help_heading = "Events indexing options")] pub struct EventsOptions { /// Whether or not to index raw events - #[arg(long = "events.raw", action = ArgAction::Set, default_value_t = false, help = "Whether or not to index raw events.")] + #[arg( + long = "events.raw", + default_value_t = false, + help = "Whether or not to index raw events." + )] #[serde(default)] pub raw: bool, From 06bc91e5f12febca9cd1190d80b71d3360d7e9a2 Mon Sep 17 00:00:00 2001 From: glihm Date: Thu, 5 Dec 2024 09:17:24 -0600 Subject: [PATCH 2/3] fix(torii-tokens-graphql): returns tokens balances with no metadata (#2764) * fix(torii-tokens-graphql): returns tokens balances even with empty metadata * wip: check preview workflow issue * ci: disable move cache for now * ci: remove preview fix since merged in main --- .../graphql/src/object/erc/token_balance.rs | 46 +++++++++++++------ 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/crates/torii/graphql/src/object/erc/token_balance.rs b/crates/torii/graphql/src/object/erc/token_balance.rs index db006dfea0..fd383746cc 100644 --- a/crates/torii/graphql/src/object/erc/token_balance.rs +++ b/crates/torii/graphql/src/object/erc/token_balance.rs @@ -103,10 +103,7 @@ async fn fetch_token_balances( JOIN tokens t ON b.token_id = t.id JOIN contracts c ON t.contract_address = c.contract_address" ); - let mut conditions = vec![ - "(b.account_address = ?)".to_string(), - "(t.metadata IS NULL OR length(t.metadata) > 0)".to_string(), - ]; + let mut conditions = vec!["(b.account_address = ?)".to_string()]; let mut cursor_param = &connection.after; if let Some(after_cursor) = &connection.after { @@ -238,17 +235,36 @@ fn token_balances_connection_output<'a>( assert!(token_id.len() == 2); let metadata_str = row.metadata; - let metadata: serde_json::Value = - serde_json::from_str(&metadata_str).expect("metadata is always json"); - let metadata_name = - metadata.get("name").map(|v| v.to_string().trim_matches('"').to_string()); - let metadata_description = metadata - .get("description") - .map(|v| v.to_string().trim_matches('"').to_string()); - let metadata_attributes = - metadata.get("attributes").map(|v| v.to_string().trim_matches('"').to_string()); - - let image_path = format!("{}/{}", token_id.join("/"), "image"); + let ( + metadata_str, + metadata_name, + metadata_description, + metadata_attributes, + image_path, + ) = if metadata_str.is_empty() { + (String::new(), None, None, None, String::new()) + } else { + let metadata: serde_json::Value = + serde_json::from_str(&metadata_str).expect("metadata is always json"); + let metadata_name = + metadata.get("name").map(|v| v.to_string().trim_matches('"').to_string()); + let metadata_description = metadata + .get("description") + .map(|v| v.to_string().trim_matches('"').to_string()); + let metadata_attributes = metadata + .get("attributes") + .map(|v| v.to_string().trim_matches('"').to_string()); + + let image_path = format!("{}/{}", token_id.join("/"), "image"); + + ( + metadata_str, + metadata_name, + metadata_description, + metadata_attributes, + image_path, + ) + }; let token_metadata = Erc721Token { name: row.name, From 90e2edda9777775caee2a7dfb2c56ba755589ec1 Mon Sep 17 00:00:00 2001 From: Larko <59736843+Larkooo@users.noreply.github.com> Date: Thu, 5 Dec 2024 22:21:47 +0700 Subject: [PATCH 3/3] fix(torii-core): store v3 transactions (#2768) --- crates/torii/core/src/sql/mod.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/crates/torii/core/src/sql/mod.rs b/crates/torii/core/src/sql/mod.rs index 5a9ee03eb1..16388c5fb2 100644 --- a/crates/torii/core/src/sql/mod.rs +++ b/crates/torii/core/src/sql/mod.rs @@ -543,6 +543,14 @@ impl Sql { let (transaction_hash, sender_address, calldata, max_fee, signature, nonce) = match transaction { + Transaction::Invoke(InvokeTransaction::V3(invoke_v3_transaction)) => ( + Argument::FieldElement(invoke_v3_transaction.transaction_hash), + Argument::FieldElement(invoke_v3_transaction.sender_address), + Argument::String(felts_to_sql_string(&invoke_v3_transaction.calldata)), + Argument::FieldElement(Felt::ZERO), // has no max_fee + Argument::String(felts_to_sql_string(&invoke_v3_transaction.signature)), + Argument::FieldElement(invoke_v3_transaction.nonce), + ), Transaction::Invoke(InvokeTransaction::V1(invoke_v1_transaction)) => ( Argument::FieldElement(invoke_v1_transaction.transaction_hash), Argument::FieldElement(invoke_v1_transaction.sender_address),