From b7ac26db14b7ac5174ec49f6056f647ed552d680 Mon Sep 17 00:00:00 2001 From: Nasr Date: Mon, 3 Feb 2025 17:13:24 +0700 Subject: [PATCH 1/3] fix(torii-sqlite): erc721 tokens check both cache + db for write --- crates/torii/sqlite/src/executor/mod.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/crates/torii/sqlite/src/executor/mod.rs b/crates/torii/sqlite/src/executor/mod.rs index 6022962f65..98204fa803 100644 --- a/crates/torii/sqlite/src/executor/mod.rs +++ b/crates/torii/sqlite/src/executor/mod.rs @@ -620,8 +620,19 @@ impl<'c, P: Provider + Sync + Send + 'static> Executor<'c, P> { QueryType::RegisterErc721Token(register_erc721_token) => { let semaphore = self.semaphore.clone(); let provider = self.provider.clone(); + + let token_exists = + sqlx::query_scalar::<_, i64>("SELECT COUNT(*) FROM tokens WHERE id = ?") + .bind(register_erc721_token.id.to_string()) + .fetch_one(&mut **tx) + .await?; + + if token_exists > 0 { + return Ok(()); + } + let res = sqlx::query_as::<_, (String, String)>(&format!( - "SELECT name, symbol FROM {TOKENS_TABLE} WHERE contract_address = ? LIMIT 1" + "SELECT name, symbol FROM {TOKENS_TABLE} WHERE id = ? LIMIT 1" )) .bind(felt_to_sql_string(®ister_erc721_token.contract_address)) .fetch_one(&mut **tx) From 4ee95eb7883e89ae118667a09612ec3666b06381 Mon Sep 17 00:00:00 2001 From: Nasr Date: Tue, 4 Feb 2025 10:47:00 +0700 Subject: [PATCH 2/3] fix --- crates/torii/sqlite/src/executor/erc.rs | 2 +- crates/torii/sqlite/src/executor/mod.rs | 10 ---------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/crates/torii/sqlite/src/executor/erc.rs b/crates/torii/sqlite/src/executor/erc.rs index f4c9bf210a..34c6bab7bd 100644 --- a/crates/torii/sqlite/src/executor/erc.rs +++ b/crates/torii/sqlite/src/executor/erc.rs @@ -340,7 +340,7 @@ impl<'c, P: Provider + Sync + Send + 'static> Executor<'c, P> { ) -> Result<()> { let query = sqlx::query( "INSERT INTO tokens (id, contract_address, name, symbol, decimals, metadata) VALUES \ - (?, ?, ?, ?, ?, ?)", + (?, ?, ?, ?, ?, ?) ON CONFLICT DO NOTHING", ) .bind(&result.query.token_id) .bind(felt_to_sql_string(&result.query.contract_address)) diff --git a/crates/torii/sqlite/src/executor/mod.rs b/crates/torii/sqlite/src/executor/mod.rs index 98204fa803..86a6c0c999 100644 --- a/crates/torii/sqlite/src/executor/mod.rs +++ b/crates/torii/sqlite/src/executor/mod.rs @@ -621,16 +621,6 @@ impl<'c, P: Provider + Sync + Send + 'static> Executor<'c, P> { let semaphore = self.semaphore.clone(); let provider = self.provider.clone(); - let token_exists = - sqlx::query_scalar::<_, i64>("SELECT COUNT(*) FROM tokens WHERE id = ?") - .bind(register_erc721_token.id.to_string()) - .fetch_one(&mut **tx) - .await?; - - if token_exists > 0 { - return Ok(()); - } - let res = sqlx::query_as::<_, (String, String)>(&format!( "SELECT name, symbol FROM {TOKENS_TABLE} WHERE id = ? LIMIT 1" )) From da558c32ed096d4cbbdd2bd06cd95a85c0599a5e Mon Sep 17 00:00:00 2001 From: Nasr Date: Tue, 4 Feb 2025 23:59:54 +0700 Subject: [PATCH 3/3] c --- crates/torii/sqlite/src/executor/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/torii/sqlite/src/executor/mod.rs b/crates/torii/sqlite/src/executor/mod.rs index 86a6c0c999..5441ad42b4 100644 --- a/crates/torii/sqlite/src/executor/mod.rs +++ b/crates/torii/sqlite/src/executor/mod.rs @@ -622,7 +622,7 @@ impl<'c, P: Provider + Sync + Send + 'static> Executor<'c, P> { let provider = self.provider.clone(); let res = sqlx::query_as::<_, (String, String)>(&format!( - "SELECT name, symbol FROM {TOKENS_TABLE} WHERE id = ? LIMIT 1" + "SELECT name, symbol FROM {TOKENS_TABLE} WHERE contract_address = ? LIMIT 1" )) .bind(felt_to_sql_string(®ister_erc721_token.contract_address)) .fetch_one(&mut **tx)