From b89229d6eb9d33e274b0b4b3ad708d013d6acd7f Mon Sep 17 00:00:00 2001 From: Nasr Date: Fri, 5 Sep 2025 14:21:11 +0100 Subject: [PATCH] feat: update to 1.7.0-alpha.5 with tokens supply & entities timestamps --- Cargo.lock | 14 +++++++------- Cargo.toml | 8 ++++---- dojo.h | 10 ++++++++++ dojo.hpp | 10 ++++++++++ dojo.pyx | 10 ++++++++++ src/c/types.rs | 41 +++++++++++++++++++++++++++++++++++++++-- src/wasm/types.rs | 8 ++++++++ 7 files changed, 88 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 47348e1..bb69d12 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1360,7 +1360,7 @@ dependencies = [ [[package]] name = "dojo-c" -version = "1.7.0-alpha.3" +version = "1.7.0-alpha.5" dependencies = [ "account_sdk", "anyhow", @@ -5169,8 +5169,8 @@ dependencies = [ [[package]] name = "torii-client" -version = "1.7.0-alpha.2" -source = "git+https://github.com/dojoengine/torii?tag=v1.7.0-alpha.2#cc2f5c32f71aa0ecf3e224dee4d15ab63df6a1ad" +version = "1.7.0-alpha.5" +source = "git+https://github.com/dojoengine/torii?tag=v1.7.0-alpha.5#bdfb00884029a9b001af6446c4239208e9617890" dependencies = [ "async-trait", "crypto-bigint", @@ -5193,8 +5193,8 @@ dependencies = [ [[package]] name = "torii-grpc-client" -version = "1.7.0-alpha.2" -source = "git+https://github.com/dojoengine/torii?tag=v1.7.0-alpha.2#cc2f5c32f71aa0ecf3e224dee4d15ab63df6a1ad" +version = "1.7.0-alpha.5" +source = "git+https://github.com/dojoengine/torii?tag=v1.7.0-alpha.5#bdfb00884029a9b001af6446c4239208e9617890" dependencies = [ "crypto-bigint", "dojo-types", @@ -5219,8 +5219,8 @@ dependencies = [ [[package]] name = "torii-proto" -version = "1.7.0-alpha.2" -source = "git+https://github.com/dojoengine/torii?tag=v1.7.0-alpha.2#cc2f5c32f71aa0ecf3e224dee4d15ab63df6a1ad" +version = "1.7.0-alpha.5" +source = "git+https://github.com/dojoengine/torii?tag=v1.7.0-alpha.5#bdfb00884029a9b001af6446c4239208e9617890" dependencies = [ "chrono", "crypto-bigint", diff --git a/Cargo.toml b/Cargo.toml index 38b60c3..e357385 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] edition = "2021" name = "dojo-c" -version = "1.7.0-alpha.3" +version = "1.7.0-alpha.5" [lib] crate-type = ["cdylib", "rlib", "staticlib"] @@ -9,9 +9,9 @@ crate-type = ["cdylib", "rlib", "staticlib"] [dependencies] dojo-world = { git = "https://github.com/dojoengine/dojo", branch = "primitive-from-sql" } dojo-types = { git = "https://github.com/dojoengine/dojo", branch = "primitive-from-sql" } -torii-proto = { git = "https://github.com/dojoengine/torii", tag = "v1.7.0-alpha.2" } -torii-client = { git = "https://github.com/dojoengine/torii", tag = "v1.7.0-alpha.2" } -torii-grpc-client = { git = "https://github.com/dojoengine/torii", tag = "v1.7.0-alpha.2" } +torii-proto = { git = "https://github.com/dojoengine/torii", tag = "v1.7.0-alpha.5" } +torii-client = { git = "https://github.com/dojoengine/torii", tag = "v1.7.0-alpha.5" } +torii-grpc-client = { git = "https://github.com/dojoengine/torii", tag = "v1.7.0-alpha.5" } starknet = "0.17.0-rc.2" starknet-crypto = "0.7.4" diff --git a/dojo.h b/dojo.h index 5a12406..5fe0a87 100644 --- a/dojo.h +++ b/dojo.h @@ -48,6 +48,12 @@ typedef enum ComparisonOperator { Lte, In, NotIn, + Contains, + ContainsAll, + ContainsAny, + ArrayLengthEq, + ArrayLengthGt, + ArrayLengthLt, } ComparisonOperator; typedef enum LogicalOperator { @@ -659,6 +665,7 @@ typedef struct Token { const char *symbol; uint8_t decimals; const char *metadata; + struct COptionU256 total_supply; } Token; typedef struct CArrayTokenBalance { @@ -865,6 +872,9 @@ typedef struct OrderBy { typedef struct Entity { struct FieldElement hashed_keys; struct CArrayStruct models; + uint64_t created_at; + uint64_t updated_at; + uint64_t executed_at; } Entity; typedef enum COptionFieldElement_Tag { diff --git a/dojo.hpp b/dojo.hpp index 461c9a9..9b58733 100644 --- a/dojo.hpp +++ b/dojo.hpp @@ -34,6 +34,12 @@ enum class ComparisonOperator { Lte, In, NotIn, + Contains, + ContainsAll, + ContainsAny, + ArrayLengthEq, + ArrayLengthGt, + ArrayLengthLt, }; enum class LogicalOperator { @@ -201,6 +207,9 @@ struct Struct { struct Entity { FieldElement hashed_keys; CArray models; + uint64_t created_at; + uint64_t updated_at; + uint64_t executed_at; }; struct KeysClause { @@ -867,6 +876,7 @@ struct Token { const char *symbol; uint8_t decimals; const char *metadata; + COption total_supply; }; struct TokenQuery { diff --git a/dojo.pyx b/dojo.pyx index f94cdc1..3f4c437 100644 --- a/dojo.pyx +++ b/dojo.pyx @@ -23,6 +23,12 @@ cdef extern from *: Lte, In, NotIn, + Contains, + ContainsAll, + ContainsAny, + ArrayLengthEq, + ArrayLengthGt, + ArrayLengthLt, cdef enum LogicalOperator: And, @@ -428,6 +434,7 @@ cdef extern from *: const char *symbol; uint8_t decimals; const char *metadata; + COptionU256 total_supply; cdef struct CArrayTokenBalance: TokenBalance *data; @@ -557,6 +564,9 @@ cdef extern from *: cdef struct Entity: FieldElement hashed_keys; CArrayStruct models; + uint64_t created_at; + uint64_t updated_at; + uint64_t executed_at; cdef enum COptionFieldElement_Tag: SomeFieldElement, diff --git a/src/c/types.rs b/src/c/types.rs index 46590da..3b6f5ed 100644 --- a/src/c/types.rs +++ b/src/c/types.rs @@ -1,5 +1,6 @@ use std::ffi::{c_char, CStr, CString}; +use chrono::DateTime; use crypto_bigint::Encoding; use dojo_types::naming::compute_selector_from_names; use starknet::core::utils::get_selector_from_name; @@ -137,6 +138,7 @@ pub struct Token { pub symbol: *const c_char, pub decimals: u8, pub metadata: *const c_char, + pub total_supply: COption, } impl From for Token { @@ -148,6 +150,7 @@ impl From for Token { symbol: CString::new(val.symbol.clone()).unwrap().into_raw(), decimals: val.decimals, metadata: CString::new(val.metadata.clone()).unwrap().into_raw(), + total_supply: val.total_supply.into(), } } } @@ -862,6 +865,13 @@ pub enum ComparisonOperator { Lte, In, NotIn, + // Array-specific operators + Contains, // Array contains value + ContainsAll, // Array contains all values + ContainsAny, // Array contains any of the values + ArrayLengthEq, // Array length equals + ArrayLengthGt, // Array length greater than + ArrayLengthLt, // Array length less than } #[derive(Clone, Debug)] @@ -886,6 +896,9 @@ pub enum ValueType { pub struct Entity { pub hashed_keys: FieldElement, pub models: CArray, + pub created_at: u64, + pub updated_at: u64, + pub executed_at: u64, } impl From for torii_proto::schema::Entity { @@ -893,7 +906,13 @@ impl From for torii_proto::schema::Entity { let models: Vec = val.models.into(); let models = models.into_iter().map(|m| m.into()).collect(); - torii_proto::schema::Entity { hashed_keys: val.hashed_keys.into(), models } + torii_proto::schema::Entity { + hashed_keys: val.hashed_keys.into(), + models, + created_at: DateTime::from_timestamp(val.created_at as i64, 0).unwrap(), + updated_at: DateTime::from_timestamp(val.updated_at as i64, 0).unwrap(), + executed_at: DateTime::from_timestamp(val.executed_at as i64, 0).unwrap(), + } } } @@ -901,7 +920,13 @@ impl From for Entity { fn from(val: torii_proto::schema::Entity) -> Self { let models = val.models.into_iter().map(|m| m.into()).collect::>(); - Entity { hashed_keys: val.hashed_keys.into(), models: models.into() } + Entity { + hashed_keys: val.hashed_keys.into(), + models: models.into(), + created_at: val.created_at.timestamp() as u64, + updated_at: val.updated_at.timestamp() as u64, + executed_at: val.executed_at.timestamp() as u64, + } } } @@ -1398,6 +1423,12 @@ impl From for torii_proto::ComparisonOperator { ComparisonOperator::Lte => torii_proto::ComparisonOperator::Lte, ComparisonOperator::In => torii_proto::ComparisonOperator::In, ComparisonOperator::NotIn => torii_proto::ComparisonOperator::NotIn, + ComparisonOperator::Contains => torii_proto::ComparisonOperator::Contains, + ComparisonOperator::ContainsAll => torii_proto::ComparisonOperator::ContainsAll, + ComparisonOperator::ContainsAny => torii_proto::ComparisonOperator::ContainsAny, + ComparisonOperator::ArrayLengthEq => torii_proto::ComparisonOperator::ArrayLengthEq, + ComparisonOperator::ArrayLengthGt => torii_proto::ComparisonOperator::ArrayLengthGt, + ComparisonOperator::ArrayLengthLt => torii_proto::ComparisonOperator::ArrayLengthLt, } } } @@ -1413,6 +1444,12 @@ impl From for ComparisonOperator { torii_proto::ComparisonOperator::Lte => ComparisonOperator::Lte, torii_proto::ComparisonOperator::In => ComparisonOperator::In, torii_proto::ComparisonOperator::NotIn => ComparisonOperator::NotIn, + torii_proto::ComparisonOperator::Contains => ComparisonOperator::Contains, + torii_proto::ComparisonOperator::ContainsAll => ComparisonOperator::ContainsAll, + torii_proto::ComparisonOperator::ContainsAny => ComparisonOperator::ContainsAny, + torii_proto::ComparisonOperator::ArrayLengthEq => ComparisonOperator::ArrayLengthEq, + torii_proto::ComparisonOperator::ArrayLengthGt => ComparisonOperator::ArrayLengthGt, + torii_proto::ComparisonOperator::ArrayLengthLt => ComparisonOperator::ArrayLengthLt, } } } diff --git a/src/wasm/types.rs b/src/wasm/types.rs index 5ff6a1b..4f4655b 100644 --- a/src/wasm/types.rs +++ b/src/wasm/types.rs @@ -84,6 +84,7 @@ pub struct Token { pub symbol: String, pub decimals: u8, pub metadata: String, + pub total_supply: Option, } impl From for Token { @@ -95,6 +96,7 @@ impl From for Token { symbol: value.symbol.clone(), decimals: value.decimals, metadata: value.metadata.clone(), + total_supply: value.total_supply.map(|t| format!("0x{:x}", t)), } } } @@ -473,6 +475,9 @@ impl From for Model { pub struct Entity { pub hashed_keys: String, pub models: HashMap, + pub created_at: u64, + pub updated_at: u64, + pub executed_at: u64, } impl From for Entity { @@ -480,6 +485,9 @@ impl From for Entity { Self { hashed_keys: format!("{:#x}", value.hashed_keys), models: value.models.into_iter().map(|m| (m.name.clone(), m.into())).collect(), + created_at: value.created_at.timestamp() as u64, + updated_at: value.updated_at.timestamp() as u64, + executed_at: value.executed_at.timestamp() as u64, } } }