Skip to content

Commit

Permalink
update proto schema
Browse files Browse the repository at this point in the history
  • Loading branch information
Larkooo committed Feb 4, 2025
1 parent d6ca2cb commit 4fa9c5a
Show file tree
Hide file tree
Showing 7 changed files with 51 additions and 46 deletions.
7 changes: 2 additions & 5 deletions crates/dojo/types/src/primitive.rs
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ impl Primitive {
set_primitive!(set_class_hash, ClassHash, Felt);
set_primitive!(set_contract_address, ContractAddress, Felt);
set_primitive!(set_eth_address, EthAddress, Felt);

pub fn to_numeric(&self) -> usize {
match self {
Primitive::Bool(_) => 0,
Expand Down Expand Up @@ -507,10 +507,7 @@ mod tests {
vec![Felt::from(123456789u128)],
Primitive::ContractAddress(Some(Felt::from(123456789))),
),
(
vec![Felt::from(123456789u128)],
Primitive::EthAddress(Some(Felt::from(123456789))),
),
(vec![Felt::from(123456789u128)], Primitive::EthAddress(Some(Felt::from(123456789)))),
];

for (serialized, expected) in test_cases {
Expand Down
22 changes: 11 additions & 11 deletions crates/dojo/types/src/schema.rs
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,6 @@ impl Ty {
Primitive::U32(Some(v)) => Ok(json!(*v)),
Primitive::U64(Some(v)) => Ok(json!(v.to_string())),
Primitive::U128(Some(v)) => Ok(json!(v.to_string())),
Primitive::USize(Some(v)) => Ok(json!(*v)),
Primitive::U256(Some(v)) => {
let bytes = v.to_be_bytes();
let high = u128::from_be_bytes(bytes[..16].try_into().unwrap());
Expand All @@ -362,6 +361,7 @@ impl Ty {
Primitive::Felt252(Some(v)) => Ok(json!(format!("{:#x}", v))),
Primitive::ClassHash(Some(v)) => Ok(json!(format!("{:#x}", v))),
Primitive::ContractAddress(Some(v)) => Ok(json!(format!("{:#x}", v))),
Primitive::EthAddress(Some(v)) => Ok(json!(format!("{:#x}", v))),
_ => Err(PrimitiveError::MissingFieldElement),
},
Ty::Struct(s) => {
Expand Down Expand Up @@ -448,11 +448,6 @@ impl Ty {
*v = s.parse().ok();
}
}
Primitive::USize(v) => {
if let JsonValue::Number(n) = value {
*v = n.as_u64().map(|n| n as u32);
}
}
Primitive::U256(v) => {
if let JsonValue::Object(obj) = value {
if let (Some(JsonValue::String(high)), Some(JsonValue::String(low))) =
Expand Down Expand Up @@ -483,6 +478,11 @@ impl Ty {
*v = Felt::from_str(&s).ok();
}
}
Primitive::EthAddress(v) => {
if let JsonValue::String(s) = value {
*v = Felt::from_str(&s).ok();
}
}
},
(Ty::Struct(s), JsonValue::Object(obj)) => {
for member in &mut s.children {
Expand Down Expand Up @@ -719,11 +719,6 @@ fn format_member(m: &Member) -> String {
str.push_str(&format!(" = {}", value));
}
}
Primitive::USize(value) => {
if let Some(value) = value {
str.push_str(&format!(" = {}", value));
}
}
Primitive::Bool(value) => {
if let Some(value) = value {
str.push_str(&format!(" = {}", value));
Expand All @@ -744,6 +739,11 @@ fn format_member(m: &Member) -> String {
str.push_str(&format!(" = {:#x}", value));
}
}
Primitive::EthAddress(value) => {
if let Some(value) = value {
str.push_str(&format!(" = {:#x}", value));
}
}
}
} else if let Ty::Enum(e) = &m.ty {
match e.option() {
Expand Down
10 changes: 5 additions & 5 deletions crates/torii/grpc/proto/schema.proto
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ message Primitive {
uint64 u64 = 9;
bytes u128 = 10;
bytes u256 = 11;
uint32 usize = 12;
bool bool = 13;
bytes felt252 = 14;
bytes class_hash = 15;
bytes contract_address = 16;
bool bool = 12;
bytes felt252 = 13;
bytes class_hash = 14;
bytes contract_address = 15;
bytes eth_address = 16;
}
}

Expand Down
10 changes: 6 additions & 4 deletions crates/torii/grpc/src/types/schema.rs
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,6 @@ impl TryFrom<proto::types::Primitive> for Primitive {
proto::types::primitive::PrimitiveType::U128(bytes) => Primitive::U128(Some(
u128::from_be_bytes(bytes.as_slice().try_into().map_err(SchemaError::FromSlice)?),
)),
proto::types::primitive::PrimitiveType::Usize(int) => Primitive::USize(Some(*int)),
proto::types::primitive::PrimitiveType::Felt252(felt) => {
Primitive::Felt252(Some(Felt::from_bytes_be_slice(felt.as_slice())))
}
Expand All @@ -175,6 +174,9 @@ impl TryFrom<proto::types::Primitive> for Primitive {
proto::types::primitive::PrimitiveType::ContractAddress(felt) => {
Primitive::ContractAddress(Some(Felt::from_bytes_be_slice(felt.as_slice())))
}
proto::types::primitive::PrimitiveType::EthAddress(felt) => {
Primitive::EthAddress(Some(Felt::from_bytes_be_slice(felt.as_slice())))
}
proto::types::primitive::PrimitiveType::U256(bytes) => Primitive::U256(Some(
U256::from_be_bytes(bytes.as_slice().try_into().map_err(SchemaError::FromSlice)?),
)),
Expand Down Expand Up @@ -220,9 +222,6 @@ impl From<Primitive> for proto::types::Primitive {
Primitive::U128(u128) => proto::types::primitive::PrimitiveType::U128(
u128.unwrap_or_default().to_be_bytes().to_vec(),
),
Primitive::USize(usize) => {
proto::types::primitive::PrimitiveType::Usize(usize.unwrap_or_default())
}
Primitive::Felt252(felt) => proto::types::primitive::PrimitiveType::Felt252(
felt.unwrap_or_default().to_bytes_be().to_vec(),
),
Expand All @@ -234,6 +233,9 @@ impl From<Primitive> for proto::types::Primitive {
felt.unwrap_or_default().to_bytes_be().to_vec(),
)
}
Primitive::EthAddress(felt) => proto::types::primitive::PrimitiveType::EthAddress(
felt.unwrap_or_default().to_bytes_be().to_vec(),
),
Primitive::U256(u256) => proto::types::primitive::PrimitiveType::U256(
u256.unwrap_or_default().to_be_bytes().to_vec(),
),
Expand Down
12 changes: 8 additions & 4 deletions crates/torii/sqlite/src/model.rs
Original file line number Diff line number Diff line change
Expand Up @@ -315,10 +315,6 @@ pub fn map_row_to_ty(
primitive.set_u256(Some(U256::from_be_hex(hex_str)))?;
}
}
Primitive::USize(_) => {
let value = row.try_get::<u32, &str>(column_name)?;
primitive.set_usize(Some(value))?;
}
Primitive::Bool(_) => {
let value = row.try_get::<bool, &str>(column_name)?;
primitive.set_bool(Some(value))?;
Expand Down Expand Up @@ -347,6 +343,14 @@ pub fn map_row_to_ty(
))?;
}
}
Primitive::EthAddress(_) => {
let value = row.try_get::<String, &str>(column_name)?;
if !value.is_empty() {
primitive.set_eth_address(Some(
Felt::from_str(&value).map_err(ParseError::FromStr)?,
))?;
}
}
};
}
Ty::Enum(enum_ty) => {
Expand Down
18 changes: 9 additions & 9 deletions crates/torii/typed-data/src/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,6 @@ fn test_parse_primitive_to_ty() {
parse_value_to_ty(&value, &mut ty).unwrap();
assert_eq!(ty, Ty::Primitive(Primitive::U32(Some(1))));

let mut ty = Ty::Primitive(Primitive::USize(None));
let value = PrimitiveType::Number(Number::from(1u64));
parse_value_to_ty(&value, &mut ty).unwrap();
assert_eq!(ty, Ty::Primitive(Primitive::USize(Some(1))));

let mut ty = Ty::Primitive(Primitive::U64(None));
let value = PrimitiveType::Number(Number::from(1u64));
parse_value_to_ty(&value, &mut ty).unwrap();
Expand Down Expand Up @@ -67,6 +62,11 @@ fn test_parse_primitive_to_ty() {
parse_value_to_ty(&value, &mut ty).unwrap();
assert_eq!(ty, Ty::Primitive(Primitive::ContractAddress(Some(Felt::ONE))));

let mut ty = Ty::Primitive(Primitive::EthAddress(None));
let value = PrimitiveType::String("1".to_string());
parse_value_to_ty(&value, &mut ty).unwrap();
assert_eq!(ty, Ty::Primitive(Primitive::EthAddress(Some(Felt::ONE))));

let mut ty = Ty::Primitive(Primitive::Bool(None));
let value = PrimitiveType::Bool(true);
parse_value_to_ty(&value, &mut ty).unwrap();
Expand All @@ -93,10 +93,6 @@ fn test_map_ty_to_primitive() {
let value = PrimitiveType::Number(Number::from(1u64));
assert_eq!(value, map_ty_to_primitive(&ty).unwrap());

let ty = Ty::Primitive(Primitive::USize(Some(1)));
let value = PrimitiveType::Number(Number::from(1u64));
assert_eq!(value, map_ty_to_primitive(&ty).unwrap());

let ty = Ty::Primitive(Primitive::U64(Some(1)));
let value = PrimitiveType::String("1".to_string());
assert_eq!(value, map_ty_to_primitive(&ty).unwrap());
Expand Down Expand Up @@ -128,6 +124,10 @@ fn test_map_ty_to_primitive() {
let value = PrimitiveType::String("1".to_string());
assert_eq!(value, map_ty_to_primitive(&ty).unwrap());

let ty = Ty::Primitive(Primitive::EthAddress(Some(Felt::ONE)));
let value = PrimitiveType::String("1".to_string());
assert_eq!(value, map_ty_to_primitive(&ty).unwrap());

let ty = Ty::Primitive(Primitive::Bool(Some(true)));
let value = PrimitiveType::Bool(true);
assert_eq!(value, map_ty_to_primitive(&ty).unwrap());
Expand Down
18 changes: 10 additions & 8 deletions crates/torii/typed-data/src/typed_data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -552,9 +552,6 @@ pub fn parse_value_to_ty(value: &PrimitiveType, ty: &mut Ty) -> Result<(), Error
Primitive::U64(ref mut u64) => {
*u64 = Some(number.as_u64().unwrap());
}
Primitive::USize(ref mut usize) => {
*usize = Some(number.as_u64().unwrap() as u32);
}
_ => {
return Err(Error::InvalidType(format!(
"Invalid number type for {}",
Expand Down Expand Up @@ -601,9 +598,6 @@ pub fn parse_value_to_ty(value: &PrimitiveType, ty: &mut Ty) -> Result<(), Error
Primitive::U128(v) => {
*v = Some(from_str!(string, u128)?);
}
Primitive::USize(v) => {
*v = Some(from_str!(string, u32)?);
}
Primitive::Felt252(v) => {
*v = Some(Felt::from_str(string).unwrap());
}
Expand All @@ -613,6 +607,9 @@ pub fn parse_value_to_ty(value: &PrimitiveType, ty: &mut Ty) -> Result<(), Error
Primitive::ContractAddress(v) => {
*v = Some(Felt::from_str(string).unwrap());
}
Primitive::EthAddress(v) => {
*v = Some(Felt::from_str(string).unwrap());
}
Primitive::Bool(v) => {
*v = Some(bool::from_str(string).unwrap());
}
Expand Down Expand Up @@ -674,7 +671,6 @@ pub fn map_ty_to_primitive(ty: &Ty) -> Result<PrimitiveType, Error> {
Primitive::U32(n) => Ok(PrimitiveType::Number(Number::from(n.unwrap_or(0)))),
Primitive::U64(n) => Ok(PrimitiveType::String((n.unwrap_or(0)).to_string())),
Primitive::U128(n) => Ok(PrimitiveType::String((n.unwrap_or(0)).to_string())),
Primitive::USize(n) => Ok(PrimitiveType::Number(Number::from(n.unwrap_or(0)))),
Primitive::Felt252(f) => {
Ok(PrimitiveType::String((f.unwrap_or(Felt::ZERO)).to_string()))
}
Expand All @@ -684,6 +680,9 @@ pub fn map_ty_to_primitive(ty: &Ty) -> Result<PrimitiveType, Error> {
Primitive::ContractAddress(c) => {
Ok(PrimitiveType::String((c.unwrap_or(Felt::ZERO)).to_string()))
}
Primitive::EthAddress(e) => {
Ok(PrimitiveType::String((e.unwrap_or(Felt::ZERO)).to_string()))
}
Primitive::U256(u256) => {
let mut object = IndexMap::new();
let bytes = u256.map_or([0u8; 32], |u256| u256.to_be_bytes());
Expand Down Expand Up @@ -714,7 +713,6 @@ fn map_ty_type(types: &mut IndexMap<String, Vec<Field>>, name: &str, ty: Ty) ->
| Primitive::U16(_)
| Primitive::U32(_)
| Primitive::U64(_)
| Primitive::USize(_)
| Primitive::U128(_) => Field::SimpleType(SimpleField {
name: name.to_string(),
r#type: "u128".to_string(),
Expand All @@ -739,6 +737,10 @@ fn map_ty_type(types: &mut IndexMap<String, Vec<Field>>, name: &str, ty: Ty) ->
name: name.to_string(),
r#type: "ContractAddress".to_string(),
}),
Primitive::EthAddress(_) => Field::SimpleType(SimpleField {
name: name.to_string(),
r#type: "EthAddress".to_string(),
}),
},
Ty::Array(array) => {
// if array is empty, we fallback to felt
Expand Down

0 comments on commit 4fa9c5a

Please sign in to comment.