-
Notifications
You must be signed in to change notification settings - Fork 188
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(torii-tokens-graphql): returns tokens balances with no metadata #2764
Changes from 4 commits
09937d9
dd8238a
54a2c73
7dbbd9c
a2fe03e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -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 = | ||||||||||||||||||||||||
Comment on lines
+247
to
+249
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Consider improving error handling for metadata parsing, sensei! The - let metadata: serde_json::Value =
- serde_json::from_str(&metadata_str).expect("metadata is always json");
+ let metadata: serde_json::Value = match serde_json::from_str(&metadata_str) {
+ Ok(value) => value,
+ Err(e) => {
+ warn!("Failed to parse metadata JSON: {}", e);
+ return (String::new(), None, None, None, String::new());
+ }
+ }; 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||
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, | ||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Ohayo sensei! Consider improving error handling for cache operations.
While adding
|| true
prevents workflow failures, it silently ignores potential cache issues. Consider adding error logging:Also applies to: 86-86