Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
[package]
edition = "2021"
name = "dojo-c"
version = "1.7.0-alpha.3"
version = "1.7.0-alpha.5"

[lib]
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"
Expand Down
10 changes: 10 additions & 0 deletions dojo.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@ typedef enum ComparisonOperator {
Lte,
In,
NotIn,
Contains,
ContainsAll,
ContainsAny,
ArrayLengthEq,
ArrayLengthGt,
ArrayLengthLt,
} ComparisonOperator;

typedef enum LogicalOperator {
Expand Down Expand Up @@ -659,6 +665,7 @@ typedef struct Token {
const char *symbol;
uint8_t decimals;
const char *metadata;
struct COptionU256 total_supply;
} Token;

typedef struct CArrayTokenBalance {
Expand Down Expand Up @@ -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 {
Expand Down
10 changes: 10 additions & 0 deletions dojo.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,12 @@ enum class ComparisonOperator {
Lte,
In,
NotIn,
Contains,
ContainsAll,
ContainsAny,
ArrayLengthEq,
ArrayLengthGt,
ArrayLengthLt,
};

enum class LogicalOperator {
Expand Down Expand Up @@ -201,6 +207,9 @@ struct Struct {
struct Entity {
FieldElement hashed_keys;
CArray<Struct> models;
uint64_t created_at;
uint64_t updated_at;
uint64_t executed_at;
};

struct KeysClause {
Expand Down Expand Up @@ -867,6 +876,7 @@ struct Token {
const char *symbol;
uint8_t decimals;
const char *metadata;
COption<U256> total_supply;
};

struct TokenQuery {
Expand Down
10 changes: 10 additions & 0 deletions dojo.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ cdef extern from *:
Lte,
In,
NotIn,
Contains,
ContainsAll,
ContainsAny,
ArrayLengthEq,
ArrayLengthGt,
ArrayLengthLt,

cdef enum LogicalOperator:
And,
Expand Down Expand Up @@ -428,6 +434,7 @@ cdef extern from *:
const char *symbol;
uint8_t decimals;
const char *metadata;
COptionU256 total_supply;

cdef struct CArrayTokenBalance:
TokenBalance *data;
Expand Down Expand Up @@ -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,
Expand Down
41 changes: 39 additions & 2 deletions src/c/types.rs
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -137,6 +138,7 @@ pub struct Token {
pub symbol: *const c_char,
pub decimals: u8,
pub metadata: *const c_char,
pub total_supply: COption<U256>,
}

impl From<torii_proto::Token> for Token {
Expand All @@ -148,6 +150,7 @@ impl From<torii_proto::Token> 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(),
}
}
}
Expand Down Expand Up @@ -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)]
Expand All @@ -886,22 +896,37 @@ pub enum ValueType {
pub struct Entity {
pub hashed_keys: FieldElement,
pub models: CArray<Struct>,
pub created_at: u64,
pub updated_at: u64,
pub executed_at: u64,
}

impl From<Entity> for torii_proto::schema::Entity {
fn from(val: Entity) -> Self {
let models: Vec<Struct> = 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(),
}
}
}

impl From<torii_proto::schema::Entity> for Entity {
fn from(val: torii_proto::schema::Entity) -> Self {
let models = val.models.into_iter().map(|m| m.into()).collect::<Vec<Struct>>();

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,
}
}
}

Expand Down Expand Up @@ -1398,6 +1423,12 @@ impl From<ComparisonOperator> 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,
}
}
}
Expand All @@ -1413,6 +1444,12 @@ impl From<torii_proto::ComparisonOperator> 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,
}
}
}
Expand Down
8 changes: 8 additions & 0 deletions src/wasm/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ pub struct Token {
pub symbol: String,
pub decimals: u8,
pub metadata: String,
pub total_supply: Option<String>,
}

impl From<torii_proto::Token> for Token {
Expand All @@ -95,6 +96,7 @@ impl From<torii_proto::Token> for Token {
symbol: value.symbol.clone(),
decimals: value.decimals,
metadata: value.metadata.clone(),
total_supply: value.total_supply.map(|t| format!("0x{:x}", t)),
}
}
}
Expand Down Expand Up @@ -473,13 +475,19 @@ impl From<Struct> for Model {
pub struct Entity {
pub hashed_keys: String,
pub models: HashMap<String, Model>,
pub created_at: u64,
pub updated_at: u64,
pub executed_at: u64,
}

impl From<torii_proto::schema::Entity> for Entity {
fn from(value: torii_proto::schema::Entity) -> Self {
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,
}
}
}
Expand Down
Loading