diff --git a/crates/dojo-core/src/model/metadata.cairo b/crates/dojo-core/src/model/metadata.cairo index a1d8e2e170..ed55481d82 100644 --- a/crates/dojo-core/src/model/metadata.cairo +++ b/crates/dojo-core/src/model/metadata.cairo @@ -33,13 +33,9 @@ pub struct ResourceMetadata { #[generate_trait] pub impl ResourceMetadataImpl of ResourceMetadataTrait { - fn from_values(resource_id: felt252, ref values: Span) -> ResourceMetadata { - let metadata_uri = Serde::::deserialize(ref values); - if metadata_uri.is_none() { - panic!("Model `ResourceMetadata`: metadata_uri deserialization failed."); - } - - ResourceMetadata { resource_id, metadata_uri: metadata_uri.unwrap() } + fn from_values(resource_id: felt252, ref values: Span) -> Option { + let metadata_uri = Serde::::deserialize(ref values)?; + Option::Some(ResourceMetadata { resource_id, metadata_uri }) } } @@ -50,7 +46,10 @@ pub impl ResourceMetadataModel of Model { }; let mut values = world.entity(Self::selector(), ModelIndex::Keys(keys), Self::layout()); - ResourceMetadataTrait::from_values(*keys.at(0), ref values) + match ResourceMetadataTrait::from_values(*keys.at(0), ref values) { + Option::Some(x) => x, + Option::None => { panic!("Model `ResourceMetadata`: deserialization failed.") } + } } fn set_model(self: @ResourceMetadata, world: IWorldDispatcher,) { diff --git a/crates/dojo-core/src/model/model.cairo b/crates/dojo-core/src/model/model.cairo index 240ef0c3f5..3f4d78a6b1 100644 --- a/crates/dojo-core/src/model/model.cairo +++ b/crates/dojo-core/src/model/model.cairo @@ -16,7 +16,7 @@ pub enum ModelIndex { pub trait ModelEntity { fn id(self: @T) -> felt252; fn values(self: @T) -> Span; - fn from_values(entity_id: felt252, ref values: Span) -> T; + fn from_values(entity_id: felt252, ref values: Span) -> Option; // Get is always used with the trait path, which results in no ambiguity for the compiler. fn get(world: IWorldDispatcher, entity_id: felt252) -> T; // Update and delete can be used directly on the entity, which results in ambiguity. diff --git a/crates/dojo-core/src/tests/model/model.cairo b/crates/dojo-core/src/tests/model/model.cairo index b52ebbfbe7..384e6cc47a 100644 --- a/crates/dojo-core/src/tests/model/model.cairo +++ b/crates/dojo-core/src/tests/model/model.cairo @@ -35,14 +35,16 @@ fn test_from_values() { let mut values = [3, 4].span(); let model_entity = ModelEntity::::from_values(1, ref values); + assert!(model_entity.is_some()); + let model_entity = model_entity.unwrap(); assert!(model_entity.__id == 1 && model_entity.v1 == 3 && model_entity.v2 == 4); } #[test] -#[should_panic(expected: "ModelEntity `FooEntity`: deserialization failed.")] fn test_from_values_bad_data() { let mut values = [3].span(); - let _ = ModelEntity::::from_values(1, ref values); + let res = ModelEntity::::from_values(1, ref values); + assert!(res.is_none()); } #[test] diff --git a/crates/dojo-core/src/world/world_contract.cairo b/crates/dojo-core/src/world/world_contract.cairo index 9f2c8ad4ba..806cc33624 100644 --- a/crates/dojo-core/src/world/world_contract.cairo +++ b/crates/dojo-core/src/world/world_contract.cairo @@ -381,7 +381,10 @@ pub mod world { Model::::layout() ); - ResourceMetadataTrait::from_values(resource_selector, ref values) + match ResourceMetadataTrait::from_values(resource_selector, ref values) { + Option::Some(x) => x, + Option::None => { panic!("Model `ResourceMetadata`: deserialization failed.") } + } } /// Sets the metadata of the resource. diff --git a/crates/dojo-lang/src/data.rs b/crates/dojo-lang/src/data.rs index 8d1f732b7d..bf47f87ff1 100644 --- a/crates/dojo-lang/src/data.rs +++ b/crates/dojo-lang/src/data.rs @@ -282,28 +282,16 @@ pub fn deserialize_keys_and_values( /// /// * member: The member to serialize. pub fn serialize_member_ty(member: &Member, with_self: bool, dest_name: &str) -> RewriteNode { - match member.ty.as_str() { - "felt252" => RewriteNode::Text(format!( - "core::array::ArrayTrait::append(ref {dest_name}, {}{});\n", - if with_self { "*self." } else { "" }, - member.name - )), - _ => RewriteNode::Text(format!( - "core::serde::Serde::serialize({}{}, ref {dest_name});\n", - if with_self { "self." } else { "@" }, - member.name - )), - } + RewriteNode::Text(format!( + "core::serde::Serde::serialize({}{}, ref {dest_name});\n", + if with_self { "self." } else { "@" }, + member.name + )) } pub fn deserialize_member_ty(member: &Member, input_name: &str) -> RewriteNode { - match member.ty.as_str() { - "felt252" => { - RewriteNode::Text(format!("let {} = {input_name}.pop_front()?;\n", member.name)) - } - _ => RewriteNode::Text(format!( - "let {} = core::serde::Serde::<{}>::deserialize(ref {input_name})?;", - member.name, member.ty - )), - } + RewriteNode::Text(format!( + "let {} = core::serde::Serde::<{}>::deserialize(ref {input_name})?;\n", + member.name, member.ty + )) } diff --git a/crates/dojo-lang/src/manifest_test_data/compiler_cairo/manifests/dev/base/dojo-world.toml b/crates/dojo-lang/src/manifest_test_data/compiler_cairo/manifests/dev/base/dojo-world.toml index 25c3956684..992555fe3d 100644 --- a/crates/dojo-lang/src/manifest_test_data/compiler_cairo/manifests/dev/base/dojo-world.toml +++ b/crates/dojo-lang/src/manifest_test_data/compiler_cairo/manifests/dev/base/dojo-world.toml @@ -1,6 +1,6 @@ kind = "Class" -class_hash = "0x190f42b1a811d9e39dee85ae2129db5a592b4117cb318e6df4737a6033d9dac" -original_class_hash = "0x190f42b1a811d9e39dee85ae2129db5a592b4117cb318e6df4737a6033d9dac" +class_hash = "0x4743bf5aabbbbb43f658bd540ae7a0a2bb7f7ccce057a6cbb74be1ca56e3f57" +original_class_hash = "0x4743bf5aabbbbb43f658bd540ae7a0a2bb7f7ccce057a6cbb74be1ca56e3f57" abi = "manifests/dev/base/abis/dojo-world.json" tag = "dojo-world" manifest_name = "dojo-world" diff --git a/crates/dojo-lang/src/model.rs b/crates/dojo-lang/src/model.rs index e64f2c25a5..18f01a1202 100644 --- a/crates/dojo-lang/src/model.rs +++ b/crates/dojo-lang/src/model.rs @@ -12,8 +12,8 @@ use dojo_world::manifest::Member; use starknet::core::utils::get_selector_from_name; use crate::data::{ - compute_namespace, get_parameters, parse_members, serialize_keys_and_values, - serialize_member_ty, DEFAULT_DATA_VERSION, + compute_namespace, deserialize_keys_and_values, get_parameters, parse_members, + serialize_keys_and_values, serialize_member_ty, DEFAULT_DATA_VERSION, }; use crate::plugin::{DojoAuxData, Model, DOJO_MODEL_ATTR}; @@ -70,15 +70,10 @@ pub fn handle_model_struct( ), }; - let mut members_values: Vec = vec![]; - let mut param_keys: Vec = vec![]; + let members = parse_members(db, &struct_ast.members(db).elements(db), &mut diagnostics); + let mut serialized_keys: Vec = vec![]; - let mut serialized_param_keys: Vec = vec![]; let mut serialized_values: Vec = vec![]; - let mut field_accessors: Vec = vec![]; - let mut entity_field_accessors: Vec = vec![]; - - let members = parse_members(db, &struct_ast.members(db).elements(db), &mut diagnostics); serialize_keys_and_values( &members, @@ -104,17 +99,39 @@ pub fn handle_model_struct( }); } + let mut deserialized_keys: Vec = vec![]; + let mut deserialized_values: Vec = vec![]; + + deserialize_keys_and_values( + &members, + "keys", + &mut deserialized_keys, + "values", + &mut deserialized_values, + ); + + let mut member_key_names: Vec = vec![]; + let mut member_value_names: Vec = vec![]; + let mut members_values: Vec = vec![]; + let mut param_keys: Vec = vec![]; + let mut serialized_param_keys: Vec = vec![]; + members.iter().for_each(|member| { if member.key { param_keys.push(format!("{}: {}", member.name, member.ty)); serialized_param_keys.push(serialize_member_ty(member, false, "serialized")); + member_key_names.push(RewriteNode::Text(format!("{},\n", member.name.clone()))); } else { members_values .push(RewriteNode::Text(format!("pub {}: {},\n", member.name, member.ty))); + member_value_names.push(RewriteNode::Text(format!("{},\n", member.name.clone()))); } }); let param_keys = param_keys.join(", "); + let mut field_accessors: Vec = vec![]; + let mut entity_field_accessors: Vec = vec![]; + members.iter().filter(|m| !m.key).for_each(|member| { field_accessors.push(generate_field_accessors( model_name.clone(), @@ -165,22 +182,16 @@ pub impl $type_name$StoreImpl of $type_name$Store { core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> $type_name$ { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::<$type_name$>::deserialize(ref serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option<$type_name$> { + $deserialized_keys$ + $deserialized_values$ - if core::option::OptionTrait::<$type_name$>::is_none(@entity) { - panic!( - \"Model `$type_name$`: deserialization failed. Ensure the length of the keys tuple \ - is matching the number of #[key] fields in the model struct.\" - ); - } - - core::option::OptionTrait::<$type_name$>::unwrap(entity) + Option::Some( + $type_name$ { + $member_key_names$ + $member_value_names$ + } + ) } fn get(world: dojo::world::IWorldDispatcher, $param_keys$) -> $type_name$ { @@ -212,18 +223,15 @@ pub impl $type_name$ModelEntityImpl of dojo::model::ModelEntity<$type_name$Entit core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> $type_name$Entity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option<$type_name$Entity> { + $deserialized_values$ - let entity_values = core::serde::Serde::<$type_name$Entity>::deserialize(ref serialized); - if core::option::OptionTrait::<$type_name$Entity>::is_none(@entity_values) { - panic!( - \"ModelEntity `$type_name$Entity`: deserialization failed.\" - ); - } - core::option::OptionTrait::<$type_name$Entity>::unwrap(entity_values) + Option::Some( + $type_name$Entity { + __id: entity_id, + $member_value_names$ + } + ) } fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> $type_name$Entity { @@ -233,7 +241,12 @@ pub impl $type_name$ModelEntityImpl of dojo::model::ModelEntity<$type_name$Entit dojo::model::ModelIndex::Id(entity_id), dojo::model::Model::<$type_name$>::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!(\"ModelEntity `$type_name$Entity`: deserialization failed.\") + } + } } fn update_entity(self: @$type_name$Entity, world: dojo::world::IWorldDispatcher) { @@ -334,7 +347,12 @@ pub impl $type_name$ModelImpl of dojo::model::Model<$type_name$> { ); let mut _keys = keys; - $type_name$Store::from_values(ref _keys, ref values) + match $type_name$Store::from_values(ref _keys, ref values) { + Option::Some(x) => x, + Option::None => { + panic!(\"Model `$type_name$`: deserialization failed.\") + } + } } fn set_model( @@ -580,8 +598,12 @@ pub mod $contract_name$ { &UnorderedHashMap::from([ ("contract_name".to_string(), RewriteNode::Text(model_name.to_case(Case::Snake))), ("type_name".to_string(), RewriteNode::Text(model_name)), + ("member_key_names".to_string(), RewriteNode::new_modified(member_key_names)), + ("member_value_names".to_string(), RewriteNode::new_modified(member_value_names)), ("serialized_keys".to_string(), RewriteNode::new_modified(serialized_keys)), ("serialized_values".to_string(), RewriteNode::new_modified(serialized_values)), + ("deserialized_keys".to_string(), RewriteNode::new_modified(deserialized_keys)), + ("deserialized_values".to_string(), RewriteNode::new_modified(deserialized_values)), ("model_version".to_string(), model_version), ("model_selector".to_string(), model_selector), ("model_namespace".to_string(), RewriteNode::Text(model_namespace.clone())), diff --git a/crates/dojo-lang/src/plugin_test_data/event b/crates/dojo-lang/src/plugin_test_data/event index 3a071850d9..db6e5022da 100644 --- a/crates/dojo-lang/src/plugin_test_data/event +++ b/crates/dojo-lang/src/plugin_test_data/event @@ -7,20 +7,919 @@ test_expand_plugin event //! > cairo_code +#[derive(Drop, Serde)] +#[dojo::model] +pub struct Message { + #[key] + pub identity: ContractAddress, + #[key] + pub channel: felt252, + pub message: ByteArray, + #[key] + pub salt: felt252 +} + +#[dojo::event(namespace: 'my_namespace')] +struct MyEvent { + #[key] + id: felt252, + name: ByteArray, +} + +//! > expanded_cairo_code +#[derive(Drop, Serde)] +#[dojo::model] +pub struct Message { + #[key] + pub identity: ContractAddress, + #[key] + pub channel: felt252, + pub message: ByteArray, + #[key] + pub salt: felt252 +} + #[dojo::event(namespace: 'my_namespace')] struct MyEvent { #[key] id: felt252, name: ByteArray, +}impl MessageDrop of core::traits::Drop::; +impl MessageSerde of core::serde::Serde:: { + fn serialize(self: @Message, ref output: core::array::Array) { + core::serde::Serde::serialize(self.identity, ref output); + core::serde::Serde::serialize(self.channel, ref output); + core::serde::Serde::serialize(self.message, ref output); + core::serde::Serde::serialize(self.salt, ref output) + } + fn deserialize(ref serialized: core::array::Span) -> core::option::Option { + core::option::Option::Some(Message { + identity: core::serde::Serde::deserialize(ref serialized)?, + channel: core::serde::Serde::deserialize(ref serialized)?, + message: core::serde::Serde::deserialize(ref serialized)?, + salt: core::serde::Serde::deserialize(ref serialized)?, + }) + } +} + +impl MessageIntrospect<> of dojo::meta::introspect::Introspect> { + #[inline(always)] + fn size() -> Option { + Option::None + } + + fn layout() -> dojo::meta::Layout { + dojo::meta::Layout::Struct( + array![ + dojo::meta::FieldLayout { + selector: 1234962429638067342109111948666382589302318509162806680039978245403372666376, + layout: dojo::meta::introspect::Introspect::::layout() + } + ].span() + ) + } + + #[inline(always)] + fn ty() -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Ty::Struct( + dojo::meta::introspect::Struct { + name: 'Message', + attrs: array![].span(), + children: array![ + dojo::meta::introspect::Member { + name: 'identity', + attrs: array!['key'].span(), + ty: dojo::meta::introspect::Introspect::::ty() + }, +dojo::meta::introspect::Member { + name: 'channel', + attrs: array!['key'].span(), + ty: dojo::meta::introspect::Introspect::::ty() + }, +dojo::meta::introspect::Member { + name: 'message', + attrs: array![].span(), + ty: dojo::meta::introspect::Ty::ByteArray + }, +dojo::meta::introspect::Member { + name: 'salt', + attrs: array!['key'].span(), + ty: dojo::meta::introspect::Introspect::::ty() + } + + ].span() + } + ) + } +} + +#[derive(Drop, Serde)] +pub struct MessageEntity { + __id: felt252, // private field + pub message: ByteArray, + +} + +#[generate_trait] +pub impl MessageEntityStoreImpl of MessageEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> MessageEntity { + MessageModelEntityImpl::get(world, entity_id) + } + + fn update(self: @MessageEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); + } + + fn delete(self: @MessageEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); + } + + + fn get_message(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ByteArray { + let mut values = dojo::model::ModelEntity::::get_member( + world, + entity_id, + 1234962429638067342109111948666382589302318509162806680039978245403372666376 + ); + let field_value = core::serde::Serde::::deserialize(ref values); + + if core::option::OptionTrait::::is_none(@field_value) { + panic!( + "Field `Message::message`: deserialization failed." + ); + } + + core::option::OptionTrait::::unwrap(field_value) + } + + fn set_message(self: @MessageEntity, world: dojo::world::IWorldDispatcher, value: ByteArray) { + let mut serialized = core::array::ArrayTrait::new(); + core::serde::Serde::serialize(@value, ref serialized); + + self.set_member( + world, + 1234962429638067342109111948666382589302318509162806680039978245403372666376, + serialized.span() + ); + } + +} + +#[generate_trait] +pub impl MessageStoreImpl of MessageStore { + fn entity_id_from_keys(identity: ContractAddress, channel: felt252, salt: felt252) -> felt252 { + let mut serialized = core::array::ArrayTrait::new(); + core::serde::Serde::serialize(@identity, ref serialized); +core::serde::Serde::serialize(@channel, ref serialized); +core::serde::Serde::serialize(@salt, ref serialized); + + core::poseidon::poseidon_hash_span(serialized.span()) + } + + fn from_values(ref keys: Span, ref values: Span) -> Option { + let identity = core::serde::Serde::::deserialize(ref keys)?; +let channel = core::serde::Serde::::deserialize(ref keys)?; +let salt = core::serde::Serde::::deserialize(ref keys)?; + + let message = core::serde::Serde::::deserialize(ref values)?; + + + Option::Some( + Message { + identity, +channel, +salt, + + message, + + } + ) + } + + fn get(world: dojo::world::IWorldDispatcher, identity: ContractAddress, channel: felt252, salt: felt252) -> Message { + let mut serialized = core::array::ArrayTrait::new(); + core::serde::Serde::serialize(@identity, ref serialized); +core::serde::Serde::serialize(@channel, ref serialized); +core::serde::Serde::serialize(@salt, ref serialized); + + + dojo::model::Model::::get(world, serialized.span()) + } + + fn set(self: @Message, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); + } + + fn delete(self: @Message, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); + } + + + fn get_message(world: dojo::world::IWorldDispatcher, identity: ContractAddress, channel: felt252, salt: felt252) -> ByteArray { + let mut serialized = core::array::ArrayTrait::new(); + core::serde::Serde::serialize(@identity, ref serialized); +core::serde::Serde::serialize(@channel, ref serialized); +core::serde::Serde::serialize(@salt, ref serialized); + + + let mut values = dojo::model::Model::::get_member( + world, + serialized.span(), + 1234962429638067342109111948666382589302318509162806680039978245403372666376 + ); + + let field_value = core::serde::Serde::::deserialize(ref values); + + if core::option::OptionTrait::::is_none(@field_value) { + panic!( + "Field `Message::message`: deserialization failed." + ); + } + + core::option::OptionTrait::::unwrap(field_value) + } + + fn set_message(self: @Message, world: dojo::world::IWorldDispatcher, value: ByteArray) { + let mut serialized = core::array::ArrayTrait::new(); + core::serde::Serde::serialize(@value, ref serialized); + + self.set_member( + world, + 1234962429638067342109111948666382589302318509162806680039978245403372666376, + serialized.span() + ); + } + +} + +pub impl MessageModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @MessageEntity) -> felt252 { + *self.__id + } + + fn values(self: @MessageEntity) -> Span { + let mut serialized = core::array::ArrayTrait::new(); + core::serde::Serde::serialize(self.message, ref serialized); + + core::array::ArrayTrait::span(@serialized) + } + + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let message = core::serde::Serde::::deserialize(ref values)?; + + + Option::Some( + MessageEntity { + __id: entity_id, + message, + + } + ) + } + + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> MessageEntity { + let mut values = dojo::world::IWorldDispatcherTrait::entity( + world, + dojo::model::Model::::selector(), + dojo::model::ModelIndex::Id(entity_id), + dojo::model::Model::::layout() + ); + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `MessageEntity`: deserialization failed.") + } + } + } + + fn update_entity(self: @MessageEntity, world: dojo::world::IWorldDispatcher) { + dojo::world::IWorldDispatcherTrait::set_entity( + world, + dojo::model::Model::::selector(), + dojo::model::ModelIndex::Id(self.id()), + self.values(), + dojo::model::Model::::layout() + ); + } + + fn delete_entity(self: @MessageEntity, world: dojo::world::IWorldDispatcher) { + dojo::world::IWorldDispatcherTrait::delete_entity( + world, + dojo::model::Model::::selector(), + dojo::model::ModelIndex::Id(self.id()), + dojo::model::Model::::layout() + ); + } + + fn get_member( + world: dojo::world::IWorldDispatcher, + entity_id: felt252, + member_id: felt252, + ) -> Span { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + Option::Some(field_layout) => { + dojo::world::IWorldDispatcherTrait::entity( + world, + dojo::model::Model::::selector(), + dojo::model::ModelIndex::MemberId((entity_id, member_id)), + field_layout + ) + }, + Option::None => core::panic_with_felt252('bad member id') + } + } + + fn set_member( + self: @MessageEntity, + world: dojo::world::IWorldDispatcher, + member_id: felt252, + values: Span, + ) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + Option::Some(field_layout) => { + dojo::world::IWorldDispatcherTrait::set_entity( + world, + dojo::model::Model::::selector(), + dojo::model::ModelIndex::MemberId((self.id(), member_id)), + values, + field_layout + ) + }, + Option::None => core::panic_with_felt252('bad member id') + } + } +} + +pub impl MessageModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> Message { + let mut values = dojo::world::IWorldDispatcherTrait::entity( + world, + Self::selector(), + dojo::model::ModelIndex::Keys(keys), + Self::layout() + ); + let mut _keys = keys; + + match MessageStore::from_values(ref _keys, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("Model `Message`: deserialization failed.") + } + } + } + + fn set_model( + self: @Message, + world: dojo::world::IWorldDispatcher + ) { + dojo::world::IWorldDispatcherTrait::set_entity( + world, + Self::selector(), + dojo::model::ModelIndex::Keys(Self::keys(self)), + Self::values(self), + Self::layout() + ); + } + + fn delete_model( + self: @Message, + world: dojo::world::IWorldDispatcher + ) { + dojo::world::IWorldDispatcherTrait::delete_entity( + world, + Self::selector(), + dojo::model::ModelIndex::Keys(Self::keys(self)), + Self::layout() + ); + } + + fn get_member( + world: dojo::world::IWorldDispatcher, + keys: Span, + member_id: felt252 + ) -> Span { + match dojo::utils::find_model_field_layout(Self::layout(), member_id) { + Option::Some(field_layout) => { + let entity_id = dojo::utils::entity_id_from_keys(keys); + dojo::world::IWorldDispatcherTrait::entity( + world, + Self::selector(), + dojo::model::ModelIndex::MemberId((entity_id, member_id)), + field_layout + ) + }, + Option::None => core::panic_with_felt252('bad member id') + } + } + + fn set_member( + self: @Message, + world: dojo::world::IWorldDispatcher, + member_id: felt252, + values: Span + ) { + match dojo::utils::find_model_field_layout(Self::layout(), member_id) { + Option::Some(field_layout) => { + dojo::world::IWorldDispatcherTrait::set_entity( + world, + Self::selector(), + dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), + values, + field_layout + ) + }, + Option::None => core::panic_with_felt252('bad member id') + } + } + + #[inline(always)] + fn name() -> ByteArray { + "Message" + } + + #[inline(always)] + fn namespace() -> ByteArray { + "dojo_test" + } + + #[inline(always)] + fn tag() -> ByteArray { + "dojo_test-Message" + } + + #[inline(always)] + fn version() -> u8 { + 1 + } + + #[inline(always)] + fn selector() -> felt252 { + 1906185680711303922822303398414928927091284519615502535643957313578662707163 + } + + #[inline(always)] + fn instance_selector(self: @Message) -> felt252 { + Self::selector() + } + + #[inline(always)] + fn name_hash() -> felt252 { + 1218932985479400212550774377351312162398071867364919833219536439613388630232 + } + + #[inline(always)] + fn namespace_hash() -> felt252 { + 1452123528942907587532668415362544424816022573043154497385993678618948064048 + } + + #[inline(always)] + fn entity_id(self: @Message) -> felt252 { + core::poseidon::poseidon_hash_span(self.keys()) + } + + #[inline(always)] + fn keys(self: @Message) -> Span { + let mut serialized = core::array::ArrayTrait::new(); + core::serde::Serde::serialize(self.identity, ref serialized); +core::serde::Serde::serialize(self.channel, ref serialized); +core::serde::Serde::serialize(self.salt, ref serialized); + + core::array::ArrayTrait::span(@serialized) + } + + #[inline(always)] + fn values(self: @Message) -> Span { + let mut serialized = core::array::ArrayTrait::new(); + core::serde::Serde::serialize(self.message, ref serialized); + + core::array::ArrayTrait::span(@serialized) + } + + #[inline(always)] + fn layout() -> dojo::meta::Layout { + dojo::meta::introspect::Introspect::::layout() + } + + #[inline(always)] + fn instance_layout(self: @Message) -> dojo::meta::Layout { + Self::layout() + } + + #[inline(always)] + fn packed_size() -> Option { + dojo::meta::layout::compute_packed_size(Self::layout()) + } +} + +#[starknet::interface] +pub trait Imessage { + fn ensure_abi(self: @T, model: Message); +} + +#[starknet::contract] +pub mod message { + use super::Message; + use super::Imessage; + + #[abi(embed_v0)] + impl DojoModelImpl of dojo::model::IModel{ + fn name(self: @ContractState) -> ByteArray { + dojo::model::Model::::name() + } + + fn namespace(self: @ContractState) -> ByteArray { + dojo::model::Model::::namespace() + } + + fn tag(self: @ContractState) -> ByteArray { + dojo::model::Model::::tag() + } + + fn version(self: @ContractState) -> u8 { + dojo::model::Model::::version() + } + + fn selector(self: @ContractState) -> felt252 { + dojo::model::Model::::selector() + } + + fn name_hash(self: @ContractState) -> felt252 { + dojo::model::Model::::name_hash() + } + + fn namespace_hash(self: @ContractState) -> felt252 { + dojo::model::Model::::namespace_hash() + } + + fn unpacked_size(self: @ContractState) -> Option { + dojo::meta::introspect::Introspect::::size() + } + + fn packed_size(self: @ContractState) -> Option { + dojo::model::Model::::packed_size() + } + + fn layout(self: @ContractState) -> dojo::meta::Layout { + dojo::model::Model::::layout() + } + + fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Introspect::::ty() + } + } + + #[abi(embed_v0)] + impl messageImpl of Imessage{ + fn ensure_abi(self: @ContractState, model: Message) { + } + } +#[event] +#[derive(Drop, starknet::Event)] +pub enum Event {} + + +#[phantom] +pub struct Storage { +} + +#[derive(Drop, Copy)] +pub struct StorageStorageBase { +} +impl StorageStorageImpl of starknet::storage::StorageTrait { + type BaseType = StorageStorageBase; + fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { + StorageStorageBase { + } + } +} +#[derive(Drop, Copy)] +pub struct StorageStorageBaseMut { +} +impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { + type BaseType = StorageStorageBaseMut; + fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { + StorageStorageBaseMut { + } + } +} + +pub struct ContractState { +} + +impl ContractStateDrop of Drop {} + +impl ContractStateDeref of core::ops::SnapshotDeref { + type Target = starknet::storage::FlattenedStorage; + fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { + starknet::storage::FlattenedStorage {} + } +} +impl ContractStateDerefMut of core::ops::DerefMut { + type Target = starknet::storage::FlattenedStorage> ; + fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { + starknet::storage::FlattenedStorage {} + } +} +pub fn unsafe_new_contract_state() -> ContractState { + ContractState { + } +} + +// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. +#[deprecated( + feature: "deprecated_legacy_map", + note: "Use `starknet::storage::Map` instead." +)] +use starknet::storage::Map as LegacyMap; + +#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] +fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { + core::internal::require_implicit::(); + core::internal::revoke_ap_tracking(); + core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); + + assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); + core::option::OptionTraitImpl::expect( + core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', + ); + let mut contract_state = unsafe_new_contract_state(); + let res = DojoModelImpl::name(@contract_state, ); + let mut arr = ArrayTrait::new(); + // References. + // Result. + core::serde::Serde::::serialize(@res, ref arr); + core::array::ArrayTrait::span(@arr) +} + +#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] +fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { + core::internal::require_implicit::(); + core::internal::revoke_ap_tracking(); + core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); + + assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); + core::option::OptionTraitImpl::expect( + core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', + ); + let mut contract_state = unsafe_new_contract_state(); + let res = DojoModelImpl::namespace(@contract_state, ); + let mut arr = ArrayTrait::new(); + // References. + // Result. + core::serde::Serde::::serialize(@res, ref arr); + core::array::ArrayTrait::span(@arr) +} + +#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] +fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { + core::internal::require_implicit::(); + core::internal::revoke_ap_tracking(); + core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); + + assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); + core::option::OptionTraitImpl::expect( + core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', + ); + let mut contract_state = unsafe_new_contract_state(); + let res = DojoModelImpl::tag(@contract_state, ); + let mut arr = ArrayTrait::new(); + // References. + // Result. + core::serde::Serde::::serialize(@res, ref arr); + core::array::ArrayTrait::span(@arr) +} + +#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] +fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { + core::internal::require_implicit::(); + core::internal::revoke_ap_tracking(); + core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); + + assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); + core::option::OptionTraitImpl::expect( + core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', + ); + let mut contract_state = unsafe_new_contract_state(); + let res = DojoModelImpl::version(@contract_state, ); + let mut arr = ArrayTrait::new(); + // References. + // Result. + core::serde::Serde::::serialize(@res, ref arr); + core::array::ArrayTrait::span(@arr) +} + +#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] +fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { + core::internal::require_implicit::(); + core::internal::revoke_ap_tracking(); + core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); + + assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); + core::option::OptionTraitImpl::expect( + core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', + ); + let mut contract_state = unsafe_new_contract_state(); + let res = DojoModelImpl::selector(@contract_state, ); + let mut arr = ArrayTrait::new(); + // References. + // Result. + core::serde::Serde::::serialize(@res, ref arr); + core::array::ArrayTrait::span(@arr) +} + +#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] +fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { + core::internal::require_implicit::(); + core::internal::revoke_ap_tracking(); + core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); + + assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); + core::option::OptionTraitImpl::expect( + core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', + ); + let mut contract_state = unsafe_new_contract_state(); + let res = DojoModelImpl::name_hash(@contract_state, ); + let mut arr = ArrayTrait::new(); + // References. + // Result. + core::serde::Serde::::serialize(@res, ref arr); + core::array::ArrayTrait::span(@arr) +} + +#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] +fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { + core::internal::require_implicit::(); + core::internal::revoke_ap_tracking(); + core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); + + assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); + core::option::OptionTraitImpl::expect( + core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', + ); + let mut contract_state = unsafe_new_contract_state(); + let res = DojoModelImpl::namespace_hash(@contract_state, ); + let mut arr = ArrayTrait::new(); + // References. + // Result. + core::serde::Serde::::serialize(@res, ref arr); + core::array::ArrayTrait::span(@arr) +} + +#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] +fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { + core::internal::require_implicit::(); + core::internal::revoke_ap_tracking(); + core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); + + assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); + core::option::OptionTraitImpl::expect( + core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', + ); + let mut contract_state = unsafe_new_contract_state(); + let res = DojoModelImpl::unpacked_size(@contract_state, ); + let mut arr = ArrayTrait::new(); + // References. + // Result. + core::serde::Serde::>::serialize(@res, ref arr); + core::array::ArrayTrait::span(@arr) +} + +#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] +fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { + core::internal::require_implicit::(); + core::internal::revoke_ap_tracking(); + core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); + + assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); + core::option::OptionTraitImpl::expect( + core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', + ); + let mut contract_state = unsafe_new_contract_state(); + let res = DojoModelImpl::packed_size(@contract_state, ); + let mut arr = ArrayTrait::new(); + // References. + // Result. + core::serde::Serde::>::serialize(@res, ref arr); + core::array::ArrayTrait::span(@arr) +} + +#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] +fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { + core::internal::require_implicit::(); + core::internal::revoke_ap_tracking(); + core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); + + assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); + core::option::OptionTraitImpl::expect( + core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', + ); + let mut contract_state = unsafe_new_contract_state(); + let res = DojoModelImpl::layout(@contract_state, ); + let mut arr = ArrayTrait::new(); + // References. + // Result. + core::serde::Serde::::serialize(@res, ref arr); + core::array::ArrayTrait::span(@arr) } -//! > expanded_cairo_code -#[dojo::event(namespace: 'my_namespace')] -struct MyEvent { - #[key] - id: felt252, - name: ByteArray, +#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] +fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { + core::internal::require_implicit::(); + core::internal::revoke_ap_tracking(); + core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); + + assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); + core::option::OptionTraitImpl::expect( + core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', + ); + let mut contract_state = unsafe_new_contract_state(); + let res = DojoModelImpl::schema(@contract_state, ); + let mut arr = ArrayTrait::new(); + // References. + // Result. + core::serde::Serde::::serialize(@res, ref arr); + core::array::ArrayTrait::span(@arr) +} + +#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] +fn __wrapper__messageImpl__ensure_abi(mut data: Span::) -> Span:: { + core::internal::require_implicit::(); + core::internal::revoke_ap_tracking(); + core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); + let __arg_model = core::option::OptionTraitImpl::expect( + core::serde::Serde::::deserialize(ref data), + 'Failed to deserialize param #1' + ); + assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); + core::option::OptionTraitImpl::expect( + core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', + ); + let mut contract_state = unsafe_new_contract_state(); + messageImpl::ensure_abi(@contract_state, __arg_model); + let mut arr = ArrayTrait::new(); + // References. + // Result. + core::array::ArrayTrait::span(@arr) +} + + +pub mod __external { + pub use super::__wrapper__DojoModelImpl__name as name; + pub use super::__wrapper__DojoModelImpl__namespace as namespace; + pub use super::__wrapper__DojoModelImpl__tag as tag; + pub use super::__wrapper__DojoModelImpl__version as version; + pub use super::__wrapper__DojoModelImpl__selector as selector; + pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; + pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; + pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; + pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; + pub use super::__wrapper__DojoModelImpl__layout as layout; + pub use super::__wrapper__DojoModelImpl__schema as schema; + pub use super::__wrapper__messageImpl__ensure_abi as ensure_abi; +} +pub mod __l1_handler { +} +pub mod __constructor { +} + impl ContractStateEventEmitter of starknet::event::EventEmitter< + ContractState, Event + > { + fn emit>( + ref self: ContractState, event: S + ) { + let event: Event = core::traits::Into::into(event); + let mut keys = Default::::default(); + let mut data = Default::::default(); + starknet::Event::append_keys_and_data(@event, ref keys, ref data); + starknet::SyscallResultTrait::unwrap_syscall( + starknet::syscalls::emit_event_syscall( + core::array::ArrayTrait::span(@keys), + core::array::ArrayTrait::span(@data), + ) + ) + } + } +impl EventDrop of core::traits::Drop::; +impl EventIsEvent of starknet::Event { + fn append_keys_and_data( + self: @Event, ref keys: Array, ref data: Array + ) { + match self { + } + } + fn deserialize( + ref keys: Span, ref data: Span, + ) -> Option { + let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; + Option::None + } +} +impl StorageStorageBaseDrop of core::traits::Drop::; +impl StorageStorageBaseCopy of core::traits::Copy::; +impl StorageStorageBaseMutDrop of core::traits::Drop::; +impl StorageStorageBaseMutCopy of core::traits::Copy::; } + impl MyEventStrkEventImpl of starknet::Event { fn append_keys_and_data( @@ -29,7 +928,7 @@ impl MyEventStrkEventImpl of starknet::Event { core::array::ArrayTrait::append( ref keys, dojo::event::Event::::selector() ); - core::array::ArrayTrait::append(ref keys, *self.id); + core::serde::Serde::serialize(self.id, ref keys); core::serde::Serde::serialize(self.name, ref data); @@ -40,10 +939,11 @@ impl MyEventStrkEventImpl of starknet::Event { ) -> Option { let _ = keys.pop_front(); - let id = keys.pop_front()?; + let id = core::serde::Serde::::deserialize(ref keys)?; let name = core::serde::Serde::::deserialize(ref data)?; + Option::Some( MyEvent { id, @@ -492,5 +1392,477 @@ impl StorageStorageBaseCopy of core::traits::Copy::; impl StorageStorageBaseMutDrop of core::traits::Drop::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } +impl MessageEntityDrop of core::traits::Drop::; +impl MessageEntitySerde of core::serde::Serde:: { + fn serialize(self: @MessageEntity, ref output: core::array::Array) { + core::serde::Serde::serialize(self.__id, ref output); + core::serde::Serde::serialize(self.message, ref output) + } + fn deserialize(ref serialized: core::array::Span) -> core::option::Option { + core::option::Option::Some(MessageEntity { + __id: core::serde::Serde::deserialize(ref serialized)?, + message: core::serde::Serde::deserialize(ref serialized)?, + }) + } +} +pub trait MessageEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> MessageEntity; + + fn update(self: @MessageEntity, world: dojo::world::IWorldDispatcher); + + fn delete(self: @MessageEntity, world: dojo::world::IWorldDispatcher); + + + fn get_message(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ByteArray; + + fn set_message(self: @MessageEntity, world: dojo::world::IWorldDispatcher, value: ByteArray); + +} +pub trait MessageStore { + fn entity_id_from_keys(identity: ContractAddress, channel: felt252, salt: felt252) -> felt252; + + fn from_values(ref keys: Span, ref values: Span) -> Option; + + fn get(world: dojo::world::IWorldDispatcher, identity: ContractAddress, channel: felt252, salt: felt252) -> Message; + + fn set(self: @Message, world: dojo::world::IWorldDispatcher); + + fn delete(self: @Message, world: dojo::world::IWorldDispatcher); + + + fn get_message(world: dojo::world::IWorldDispatcher, identity: ContractAddress, channel: felt252, salt: felt252) -> ByteArray; + + fn set_message(self: @Message, world: dojo::world::IWorldDispatcher, value: ByteArray); + +} +pub trait ImessageDispatcherTrait { + fn ensure_abi(self: T, model: Message); +} + +#[derive(Copy, Drop, starknet::Store, Serde)] +pub struct ImessageDispatcher { + pub contract_address: starknet::ContractAddress, +} + +impl ImessageDispatcherImpl of ImessageDispatcherTrait { + fn ensure_abi(self: ImessageDispatcher, model: Message) { + let mut __calldata__ = core::traits::Default::default(); + core::serde::Serde::::serialize(@model, ref __calldata__); + + let mut __dispatcher_return_data__ = starknet::syscalls::call_contract_syscall( + self.contract_address, + selector!("ensure_abi"), + core::array::ArrayTrait::span(@__calldata__), + ); + let mut __dispatcher_return_data__ = starknet::SyscallResultTrait::unwrap_syscall(__dispatcher_return_data__); + () + } + +} + +#[derive(Copy, Drop, starknet::Store, Serde)] +pub struct ImessageLibraryDispatcher { + pub class_hash: starknet::ClassHash, +} + +impl ImessageLibraryDispatcherImpl of ImessageDispatcherTrait { + fn ensure_abi(self: ImessageLibraryDispatcher, model: Message) { + let mut __calldata__ = core::traits::Default::default(); + core::serde::Serde::::serialize(@model, ref __calldata__); + + let mut __dispatcher_return_data__ = starknet::syscalls::library_call_syscall( + self.class_hash, + selector!("ensure_abi"), + core::array::ArrayTrait::span(@__calldata__), + ); + let mut __dispatcher_return_data__ = starknet::SyscallResultTrait::unwrap_syscall(__dispatcher_return_data__); + () + } + +} + +pub trait ImessageSafeDispatcherTrait { + #[unstable(feature: "safe_dispatcher")] + fn ensure_abi(self: T, model: Message) -> starknet::SyscallResult<()>; +} + +#[derive(Copy, Drop, starknet::Store, Serde)] +pub struct ImessageSafeLibraryDispatcher { + pub class_hash: starknet::ClassHash, +} + +impl ImessageSafeLibraryDispatcherImpl of ImessageSafeDispatcherTrait { + fn ensure_abi(self: ImessageSafeLibraryDispatcher, model: Message) -> starknet::SyscallResult<()> { + let mut __calldata__ = core::traits::Default::default(); + core::serde::Serde::::serialize(@model, ref __calldata__); + + let mut __dispatcher_return_data__ = starknet::syscalls::library_call_syscall( + self.class_hash, + selector!("ensure_abi"), + core::array::ArrayTrait::span(@__calldata__), + ); + let mut __dispatcher_return_data__ = __dispatcher_return_data__?; + Result::Ok(()) + } + +} + + +#[derive(Copy, Drop, starknet::Store, Serde)] +pub struct ImessageSafeDispatcher { + pub contract_address: starknet::ContractAddress, +} + +impl ImessageSafeDispatcherImpl of ImessageSafeDispatcherTrait { + fn ensure_abi(self: ImessageSafeDispatcher, model: Message) -> starknet::SyscallResult<()> { + let mut __calldata__ = core::traits::Default::default(); + core::serde::Serde::::serialize(@model, ref __calldata__); + + let mut __dispatcher_return_data__ = starknet::syscalls::call_contract_syscall( + self.contract_address, + selector!("ensure_abi"), + core::array::ArrayTrait::span(@__calldata__), + ); + let mut __dispatcher_return_data__ = __dispatcher_return_data__?; + Result::Ok(()) + } + +} +impl ImessageDispatcherCopy of core::traits::Copy::; +impl ImessageDispatcherDrop of core::traits::Drop::; +impl ImessageDispatcherSerde of core::serde::Serde:: { + fn serialize(self: @ImessageDispatcher, ref output: core::array::Array) { + core::serde::Serde::serialize(self.contract_address, ref output) + } + fn deserialize(ref serialized: core::array::Span) -> core::option::Option { + core::option::Option::Some(ImessageDispatcher { + contract_address: core::serde::Serde::deserialize(ref serialized)?, + }) + } +} +impl StoreImessageDispatcher of starknet::Store:: { + fn read(address_domain: u32, base: starknet::storage_access::StorageBaseAddress) -> starknet::SyscallResult { + let contract_address = starknet::Store::::read(address_domain, base)?; + starknet::SyscallResult::Ok( + ImessageDispatcher { + contract_address, + } + ) + } + fn write(address_domain: u32, base: starknet::storage_access::StorageBaseAddress, value: ImessageDispatcher) -> starknet::SyscallResult<()> { + starknet::Store::::write(address_domain, base, value.contract_address)?; + starknet::SyscallResult::Ok(()) + } + fn read_at_offset(address_domain: u32, base: starknet::storage_access::StorageBaseAddress, offset: u8) -> starknet::SyscallResult { + let contract_address = starknet::Store::::read_at_offset(address_domain, base, offset)?; + starknet::SyscallResult::Ok( + ImessageDispatcher { + contract_address, + } + ) + } + #[inline(always)] + fn write_at_offset(address_domain: u32, base: starknet::storage_access::StorageBaseAddress, offset: u8, value: ImessageDispatcher) -> starknet::SyscallResult<()> { + starknet::Store::::write_at_offset(address_domain, base, offset, value.contract_address)?; + starknet::SyscallResult::Ok(()) + } + #[inline(always)] + fn size() -> u8 { + starknet::Store::::size() + } +} + +#[derive(Drop, Copy)] +pub struct ImessageDispatcherSubPointers { + pub contract_address: starknet::storage::StoragePointer, +} +impl ImessageDispatcherSubPointersImpl of starknet::storage::SubPointers { + type SubPointersType = ImessageDispatcherSubPointers; + fn sub_pointers(self: starknet::storage::StoragePointer) -> ImessageDispatcherSubPointers { + let base_address = self.__storage_pointer_address__; + let mut current_offset = self.__storage_pointer_offset__; + let contract_address_value = starknet::storage::StoragePointer { + __storage_pointer_address__: base_address, + __storage_pointer_offset__: current_offset, + }; + ImessageDispatcherSubPointers { + contract_address: contract_address_value, + } + } +} +#[derive(Drop, Copy)] +pub struct ImessageDispatcherSubPointersMut { + pub contract_address: starknet::storage::StoragePointer>, +} +impl ImessageDispatcherSubPointersMutImpl of starknet::storage::SubPointersMut { + type SubPointersType = ImessageDispatcherSubPointersMut; + fn sub_pointers_mut(self: starknet::storage::StoragePointer>) -> ImessageDispatcherSubPointersMut { + let base_address = self.__storage_pointer_address__; + let mut current_offset = self.__storage_pointer_offset__; + let contract_address_value = starknet::storage::StoragePointer { + __storage_pointer_address__: base_address, + __storage_pointer_offset__: current_offset, + }; + ImessageDispatcherSubPointersMut { + contract_address: contract_address_value, + } + } +} +impl ImessageLibraryDispatcherCopy of core::traits::Copy::; +impl ImessageLibraryDispatcherDrop of core::traits::Drop::; +impl ImessageLibraryDispatcherSerde of core::serde::Serde:: { + fn serialize(self: @ImessageLibraryDispatcher, ref output: core::array::Array) { + core::serde::Serde::serialize(self.class_hash, ref output) + } + fn deserialize(ref serialized: core::array::Span) -> core::option::Option { + core::option::Option::Some(ImessageLibraryDispatcher { + class_hash: core::serde::Serde::deserialize(ref serialized)?, + }) + } +} +impl StoreImessageLibraryDispatcher of starknet::Store:: { + fn read(address_domain: u32, base: starknet::storage_access::StorageBaseAddress) -> starknet::SyscallResult { + let class_hash = starknet::Store::::read(address_domain, base)?; + starknet::SyscallResult::Ok( + ImessageLibraryDispatcher { + class_hash, + } + ) + } + fn write(address_domain: u32, base: starknet::storage_access::StorageBaseAddress, value: ImessageLibraryDispatcher) -> starknet::SyscallResult<()> { + starknet::Store::::write(address_domain, base, value.class_hash)?; + starknet::SyscallResult::Ok(()) + } + fn read_at_offset(address_domain: u32, base: starknet::storage_access::StorageBaseAddress, offset: u8) -> starknet::SyscallResult { + let class_hash = starknet::Store::::read_at_offset(address_domain, base, offset)?; + starknet::SyscallResult::Ok( + ImessageLibraryDispatcher { + class_hash, + } + ) + } + #[inline(always)] + fn write_at_offset(address_domain: u32, base: starknet::storage_access::StorageBaseAddress, offset: u8, value: ImessageLibraryDispatcher) -> starknet::SyscallResult<()> { + starknet::Store::::write_at_offset(address_domain, base, offset, value.class_hash)?; + starknet::SyscallResult::Ok(()) + } + #[inline(always)] + fn size() -> u8 { + starknet::Store::::size() + } +} + +#[derive(Drop, Copy)] +pub struct ImessageLibraryDispatcherSubPointers { + pub class_hash: starknet::storage::StoragePointer, +} +impl ImessageLibraryDispatcherSubPointersImpl of starknet::storage::SubPointers { + type SubPointersType = ImessageLibraryDispatcherSubPointers; + fn sub_pointers(self: starknet::storage::StoragePointer) -> ImessageLibraryDispatcherSubPointers { + let base_address = self.__storage_pointer_address__; + let mut current_offset = self.__storage_pointer_offset__; + let class_hash_value = starknet::storage::StoragePointer { + __storage_pointer_address__: base_address, + __storage_pointer_offset__: current_offset, + }; + ImessageLibraryDispatcherSubPointers { + class_hash: class_hash_value, + } + } +} +#[derive(Drop, Copy)] +pub struct ImessageLibraryDispatcherSubPointersMut { + pub class_hash: starknet::storage::StoragePointer>, +} +impl ImessageLibraryDispatcherSubPointersMutImpl of starknet::storage::SubPointersMut { + type SubPointersType = ImessageLibraryDispatcherSubPointersMut; + fn sub_pointers_mut(self: starknet::storage::StoragePointer>) -> ImessageLibraryDispatcherSubPointersMut { + let base_address = self.__storage_pointer_address__; + let mut current_offset = self.__storage_pointer_offset__; + let class_hash_value = starknet::storage::StoragePointer { + __storage_pointer_address__: base_address, + __storage_pointer_offset__: current_offset, + }; + ImessageLibraryDispatcherSubPointersMut { + class_hash: class_hash_value, + } + } +} +impl ImessageSafeLibraryDispatcherCopy of core::traits::Copy::; +impl ImessageSafeLibraryDispatcherDrop of core::traits::Drop::; +impl ImessageSafeLibraryDispatcherSerde of core::serde::Serde:: { + fn serialize(self: @ImessageSafeLibraryDispatcher, ref output: core::array::Array) { + core::serde::Serde::serialize(self.class_hash, ref output) + } + fn deserialize(ref serialized: core::array::Span) -> core::option::Option { + core::option::Option::Some(ImessageSafeLibraryDispatcher { + class_hash: core::serde::Serde::deserialize(ref serialized)?, + }) + } +} +impl StoreImessageSafeLibraryDispatcher of starknet::Store:: { + fn read(address_domain: u32, base: starknet::storage_access::StorageBaseAddress) -> starknet::SyscallResult { + let class_hash = starknet::Store::::read(address_domain, base)?; + starknet::SyscallResult::Ok( + ImessageSafeLibraryDispatcher { + class_hash, + } + ) + } + fn write(address_domain: u32, base: starknet::storage_access::StorageBaseAddress, value: ImessageSafeLibraryDispatcher) -> starknet::SyscallResult<()> { + starknet::Store::::write(address_domain, base, value.class_hash)?; + starknet::SyscallResult::Ok(()) + } + fn read_at_offset(address_domain: u32, base: starknet::storage_access::StorageBaseAddress, offset: u8) -> starknet::SyscallResult { + let class_hash = starknet::Store::::read_at_offset(address_domain, base, offset)?; + starknet::SyscallResult::Ok( + ImessageSafeLibraryDispatcher { + class_hash, + } + ) + } + #[inline(always)] + fn write_at_offset(address_domain: u32, base: starknet::storage_access::StorageBaseAddress, offset: u8, value: ImessageSafeLibraryDispatcher) -> starknet::SyscallResult<()> { + starknet::Store::::write_at_offset(address_domain, base, offset, value.class_hash)?; + starknet::SyscallResult::Ok(()) + } + #[inline(always)] + fn size() -> u8 { + starknet::Store::::size() + } +} + +#[derive(Drop, Copy)] +pub struct ImessageSafeLibraryDispatcherSubPointers { + pub class_hash: starknet::storage::StoragePointer, +} +impl ImessageSafeLibraryDispatcherSubPointersImpl of starknet::storage::SubPointers { + type SubPointersType = ImessageSafeLibraryDispatcherSubPointers; + fn sub_pointers(self: starknet::storage::StoragePointer) -> ImessageSafeLibraryDispatcherSubPointers { + let base_address = self.__storage_pointer_address__; + let mut current_offset = self.__storage_pointer_offset__; + let class_hash_value = starknet::storage::StoragePointer { + __storage_pointer_address__: base_address, + __storage_pointer_offset__: current_offset, + }; + ImessageSafeLibraryDispatcherSubPointers { + class_hash: class_hash_value, + } + } +} +#[derive(Drop, Copy)] +pub struct ImessageSafeLibraryDispatcherSubPointersMut { + pub class_hash: starknet::storage::StoragePointer>, +} +impl ImessageSafeLibraryDispatcherSubPointersMutImpl of starknet::storage::SubPointersMut { + type SubPointersType = ImessageSafeLibraryDispatcherSubPointersMut; + fn sub_pointers_mut(self: starknet::storage::StoragePointer>) -> ImessageSafeLibraryDispatcherSubPointersMut { + let base_address = self.__storage_pointer_address__; + let mut current_offset = self.__storage_pointer_offset__; + let class_hash_value = starknet::storage::StoragePointer { + __storage_pointer_address__: base_address, + __storage_pointer_offset__: current_offset, + }; + ImessageSafeLibraryDispatcherSubPointersMut { + class_hash: class_hash_value, + } + } +} +impl ImessageSafeDispatcherCopy of core::traits::Copy::; +impl ImessageSafeDispatcherDrop of core::traits::Drop::; +impl ImessageSafeDispatcherSerde of core::serde::Serde:: { + fn serialize(self: @ImessageSafeDispatcher, ref output: core::array::Array) { + core::serde::Serde::serialize(self.contract_address, ref output) + } + fn deserialize(ref serialized: core::array::Span) -> core::option::Option { + core::option::Option::Some(ImessageSafeDispatcher { + contract_address: core::serde::Serde::deserialize(ref serialized)?, + }) + } +} +impl StoreImessageSafeDispatcher of starknet::Store:: { + fn read(address_domain: u32, base: starknet::storage_access::StorageBaseAddress) -> starknet::SyscallResult { + let contract_address = starknet::Store::::read(address_domain, base)?; + starknet::SyscallResult::Ok( + ImessageSafeDispatcher { + contract_address, + } + ) + } + fn write(address_domain: u32, base: starknet::storage_access::StorageBaseAddress, value: ImessageSafeDispatcher) -> starknet::SyscallResult<()> { + starknet::Store::::write(address_domain, base, value.contract_address)?; + starknet::SyscallResult::Ok(()) + } + fn read_at_offset(address_domain: u32, base: starknet::storage_access::StorageBaseAddress, offset: u8) -> starknet::SyscallResult { + let contract_address = starknet::Store::::read_at_offset(address_domain, base, offset)?; + starknet::SyscallResult::Ok( + ImessageSafeDispatcher { + contract_address, + } + ) + } + #[inline(always)] + fn write_at_offset(address_domain: u32, base: starknet::storage_access::StorageBaseAddress, offset: u8, value: ImessageSafeDispatcher) -> starknet::SyscallResult<()> { + starknet::Store::::write_at_offset(address_domain, base, offset, value.contract_address)?; + starknet::SyscallResult::Ok(()) + } + #[inline(always)] + fn size() -> u8 { + starknet::Store::::size() + } +} + +#[derive(Drop, Copy)] +pub struct ImessageSafeDispatcherSubPointers { + pub contract_address: starknet::storage::StoragePointer, +} +impl ImessageSafeDispatcherSubPointersImpl of starknet::storage::SubPointers { + type SubPointersType = ImessageSafeDispatcherSubPointers; + fn sub_pointers(self: starknet::storage::StoragePointer) -> ImessageSafeDispatcherSubPointers { + let base_address = self.__storage_pointer_address__; + let mut current_offset = self.__storage_pointer_offset__; + let contract_address_value = starknet::storage::StoragePointer { + __storage_pointer_address__: base_address, + __storage_pointer_offset__: current_offset, + }; + ImessageSafeDispatcherSubPointers { + contract_address: contract_address_value, + } + } +} +#[derive(Drop, Copy)] +pub struct ImessageSafeDispatcherSubPointersMut { + pub contract_address: starknet::storage::StoragePointer>, +} +impl ImessageSafeDispatcherSubPointersMutImpl of starknet::storage::SubPointersMut { + type SubPointersType = ImessageSafeDispatcherSubPointersMut; + fn sub_pointers_mut(self: starknet::storage::StoragePointer>) -> ImessageSafeDispatcherSubPointersMut { + let base_address = self.__storage_pointer_address__; + let mut current_offset = self.__storage_pointer_offset__; + let contract_address_value = starknet::storage::StoragePointer { + __storage_pointer_address__: base_address, + __storage_pointer_offset__: current_offset, + }; + ImessageSafeDispatcherSubPointersMut { + contract_address: contract_address_value, + } + } +} +impl ImessageDispatcherSubPointersDrop of core::traits::Drop::; +impl ImessageDispatcherSubPointersCopy of core::traits::Copy::; +impl ImessageDispatcherSubPointersMutDrop of core::traits::Drop::; +impl ImessageDispatcherSubPointersMutCopy of core::traits::Copy::; +impl ImessageLibraryDispatcherSubPointersDrop of core::traits::Drop::; +impl ImessageLibraryDispatcherSubPointersCopy of core::traits::Copy::; +impl ImessageLibraryDispatcherSubPointersMutDrop of core::traits::Drop::; +impl ImessageLibraryDispatcherSubPointersMutCopy of core::traits::Copy::; +impl ImessageSafeLibraryDispatcherSubPointersDrop of core::traits::Drop::; +impl ImessageSafeLibraryDispatcherSubPointersCopy of core::traits::Copy::; +impl ImessageSafeLibraryDispatcherSubPointersMutDrop of core::traits::Drop::; +impl ImessageSafeLibraryDispatcherSubPointersMutCopy of core::traits::Copy::; +impl ImessageSafeDispatcherSubPointersDrop of core::traits::Drop::; +impl ImessageSafeDispatcherSubPointersCopy of core::traits::Copy::; +impl ImessageSafeDispatcherSubPointersMutDrop of core::traits::Drop::; +impl ImessageSafeDispatcherSubPointersMutCopy of core::traits::Copy::; //! > expected_diagnostics diff --git a/crates/dojo-lang/src/plugin_test_data/model b/crates/dojo-lang/src/plugin_test_data/model index 2fafbd2f8a..e35d89e4bb 100644 --- a/crates/dojo-lang/src/plugin_test_data/model +++ b/crates/dojo-lang/src/plugin_test_data/model @@ -401,7 +401,6 @@ dojo::meta::introspect::Member { pub struct BadModelMultipleVersionsEntity { __id: felt252, // private field pub v: Vec3, -<<<<<<< HEAD } @@ -454,31 +453,30 @@ pub impl BadModelMultipleVersionsEntityStoreImpl of BadModelMultipleVersionsEnti pub impl BadModelMultipleVersionsStoreImpl of BadModelMultipleVersionsStore { fn entity_id_from_keys(id: felt252) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> BadModelMultipleVersions { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let id = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let v = core::serde::Serde::::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `BadModelMultipleVersions`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + BadModelMultipleVersions { + id, + + v, + + } + ) } fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelMultipleVersions { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); dojo::model::Model::::get(world, serialized.span()) @@ -495,7 +493,7 @@ pub impl BadModelMultipleVersionsStoreImpl of BadModelMultipleVersionsStore { fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); let mut values = dojo::model::Model::::get_member( @@ -540,18 +538,17 @@ pub impl BadModelMultipleVersionsModelEntityImpl of dojo::model::ModelEntity) -> BadModelMultipleVersionsEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let v = core::serde::Serde::::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `BadModelMultipleVersionsEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + BadModelMultipleVersionsEntity { + __id: entity_id, + v, + + } + ) } fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelMultipleVersionsEntity { @@ -561,7 +558,12 @@ pub impl BadModelMultipleVersionsModelEntityImpl of dojo::model::ModelEntity::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `BadModelMultipleVersionsEntity`: deserialization failed.") + } + } } fn update_entity(self: @BadModelMultipleVersionsEntity, world: dojo::world::IWorldDispatcher) { @@ -632,7 +634,12 @@ pub impl BadModelMultipleVersionsModelImpl of dojo::model::Model x, + Option::None => { + panic!("Model `BadModelMultipleVersions`: deserialization failed.") + } + } } fn set_model( @@ -747,7 +754,7 @@ pub impl BadModelMultipleVersionsModelImpl of dojo::model::Model Span { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); + core::serde::Serde::serialize(self.id, ref serialized); core::array::ArrayTrait::span(@serialized) } @@ -761,18 +768,18 @@ pub impl BadModelMultipleVersionsModelImpl of dojo::model::Model dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() + fn layout() -> dojo::meta::Layout { + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @BadModelMultipleVersions) -> dojo::model::Layout { + fn instance_layout(self: @BadModelMultipleVersions) -> dojo::meta::Layout { Self::layout() } #[inline(always)] fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) + dojo::meta::layout::compute_packed_size(Self::layout()) } } @@ -817,19 +824,19 @@ pub mod bad_model_multiple_versions { } fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { dojo::model::Model::::packed_size() } - fn layout(self: @ContractState) -> dojo::model::Layout { + fn layout(self: @ContractState) -> dojo::meta::Layout { dojo::model::Model::::layout() } - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() + fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Introspect::::ty() } } @@ -1083,7 +1090,7 @@ fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } @@ -1102,7 +1109,7 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } @@ -1184,28 +1191,72 @@ impl StorageStorageBaseCopy of core::traits::Copy::; impl StorageStorageBaseMutDrop of core::traits::Drop::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) + +impl BadModelBadVersionTypeIntrospect<> of dojo::meta::introspect::Introspect> { + #[inline(always)] + fn size() -> Option { + dojo::meta::introspect::Introspect::::size() + } + + fn layout() -> dojo::meta::Layout { + dojo::meta::Layout::Struct( + array![ + dojo::meta::FieldLayout { + selector: 578691550836206188651404750433984985630363913126316857592149308417275000080, + layout: dojo::meta::introspect::Introspect::::layout() + } + ].span() + ) + } + + #[inline(always)] + fn ty() -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Ty::Struct( + dojo::meta::introspect::Struct { + name: 'BadModelBadVersionType', + attrs: array![].span(), + children: array![ + dojo::meta::introspect::Member { + name: 'id', + attrs: array!['key'].span(), + ty: dojo::meta::introspect::Introspect::::ty() + }, +dojo::meta::introspect::Member { + name: 'v', + attrs: array![].span(), + ty: dojo::meta::introspect::Introspect::::ty() + } + + ].span() + } + ) + } +} + +#[derive(Drop, Serde)] +pub struct BadModelBadVersionTypeEntity { + __id: felt252, // private field + pub v: Vec3, } #[generate_trait] -pub impl BadModelMultipleVersionsEntityStoreImpl of BadModelMultipleVersionsEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelMultipleVersionsEntity { - BadModelMultipleVersionsModelEntityImpl::get(world, entity_id) +pub impl BadModelBadVersionTypeEntityStoreImpl of BadModelBadVersionTypeEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelBadVersionTypeEntity { + BadModelBadVersionTypeModelEntityImpl::get(world, entity_id) } - fn update(self: @BadModelMultipleVersionsEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn update(self: @BadModelBadVersionTypeEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn delete(self: @BadModelMultipleVersionsEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn delete(self: @BadModelBadVersionTypeEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, 578691550836206188651404750433984985630363913126316857592149308417275000080 @@ -1214,14 +1265,14 @@ pub impl BadModelMultipleVersionsEntityStoreImpl of BadModelMultipleVersionsEnti if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `BadModelMultipleVersions::v`: deserialization failed." + "Field `BadModelBadVersionType::v`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_v(self: @BadModelMultipleVersionsEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { + fn set_v(self: @BadModelBadVersionTypeEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -1235,54 +1286,53 @@ pub impl BadModelMultipleVersionsEntityStoreImpl of BadModelMultipleVersionsEnti } #[generate_trait] -pub impl BadModelMultipleVersionsStoreImpl of BadModelMultipleVersionsStore { +pub impl BadModelBadVersionTypeStoreImpl of BadModelBadVersionTypeStore { fn entity_id_from_keys(id: felt252) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> BadModelMultipleVersions { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let id = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let v = core::serde::Serde::::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `BadModelMultipleVersions`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + BadModelBadVersionType { + id, + + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelMultipleVersions { + fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelBadVersionType { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @BadModelMultipleVersions, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @BadModelBadVersionType, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @BadModelMultipleVersions, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @BadModelBadVersionType, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), 578691550836206188651404750433984985630363913126316857592149308417275000080 @@ -1292,14 +1342,14 @@ pub impl BadModelMultipleVersionsStoreImpl of BadModelMultipleVersionsStore { if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `BadModelMultipleVersions::v`: deserialization failed." + "Field `BadModelBadVersionType::v`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_v(self: @BadModelMultipleVersions, world: dojo::world::IWorldDispatcher, value: Vec3) { + fn set_v(self: @BadModelBadVersionType, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -1312,58 +1362,62 @@ pub impl BadModelMultipleVersionsStoreImpl of BadModelMultipleVersionsStore { } -pub impl BadModelMultipleVersionsModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @BadModelMultipleVersionsEntity) -> felt252 { +pub impl BadModelBadVersionTypeModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @BadModelBadVersionTypeEntity) -> felt252 { *self.__id } - fn values(self: @BadModelMultipleVersionsEntity) -> Span { + fn values(self: @BadModelBadVersionTypeEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.v, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> BadModelMultipleVersionsEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let v = core::serde::Serde::::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `BadModelMultipleVersionsEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + BadModelBadVersionTypeEntity { + __id: entity_id, + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelMultipleVersionsEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelBadVersionTypeEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `BadModelBadVersionTypeEntity`: deserialization failed.") + } + } } - fn update_entity(self: @BadModelMultipleVersionsEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @BadModelBadVersionTypeEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @BadModelMultipleVersionsEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @BadModelBadVersionTypeEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -1372,11 +1426,11 @@ pub impl BadModelMultipleVersionsModelEntityImpl of dojo::model::ModelEntity Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -1386,16 +1440,16 @@ pub impl BadModelMultipleVersionsModelEntityImpl of dojo::model::ModelEntity, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -1406,8 +1460,8 @@ pub impl BadModelMultipleVersionsModelEntityImpl of dojo::model::ModelEntity { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelMultipleVersions { +pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelBadVersionType { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -1416,11 +1470,16 @@ pub impl BadModelMultipleVersionsModelImpl of dojo::model::Model x, + Option::None => { + panic!("Model `BadModelBadVersionType`: deserialization failed.") + } + } } fn set_model( - self: @BadModelMultipleVersions, + self: @BadModelBadVersionType, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -1433,7 +1492,7 @@ pub impl BadModelMultipleVersionsModelImpl of dojo::model::Model @@ -1485,7 +1544,7 @@ pub impl BadModelMultipleVersionsModelImpl of dojo::model::Model ByteArray { - "BadModelMultipleVersions" + "BadModelBadVersionType" } #[inline(always)] @@ -1495,27 +1554,27 @@ pub impl BadModelMultipleVersionsModelImpl of dojo::model::Model ByteArray { - "dojo_test-BadModelMultipleVersions" + "dojo_test-BadModelBadVersionType" } #[inline(always)] fn version() -> u8 { - 0 + 1 } #[inline(always)] fn selector() -> felt252 { - "BadModelMultipleVersions" + 1905541678078795270787966976324692071183638743428320623241420232497892529006 } #[inline(always)] - fn instance_selector(self: @BadModelMultipleVersions) -> felt252 { + fn instance_selector(self: @BadModelBadVersionType) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 3538888628466873673221842373412072042558277047191927145880480325050722136660 + 760683829940564015458541272487101565210915690045377810379189532484191344547 } #[inline(always)] @@ -1524,20 +1583,20 @@ pub impl BadModelMultipleVersionsModelImpl of dojo::model::Model felt252 { + fn entity_id(self: @BadModelBadVersionType) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @BadModelMultipleVersions) -> Span { + fn keys(self: @BadModelBadVersionType) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); + core::serde::Serde::serialize(self.id, ref serialized); core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn values(self: @BadModelMultipleVersions) -> Span { + fn values(self: @BadModelBadVersionType) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.v, ref serialized); @@ -1546,11 +1605,11 @@ pub impl BadModelMultipleVersionsModelImpl of dojo::model::Model dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @BadModelMultipleVersions) -> dojo::meta::Layout { + fn instance_layout(self: @BadModelBadVersionType) -> dojo::meta::Layout { Self::layout() } @@ -1561,65 +1620,65 @@ pub impl BadModelMultipleVersionsModelImpl of dojo::model::Model { - fn ensure_abi(self: @T, model: BadModelMultipleVersions); +pub trait Ibad_model_bad_version_type { + fn ensure_abi(self: @T, model: BadModelBadVersionType); } #[starknet::contract] -pub mod bad_model_multiple_versions { - use super::BadModelMultipleVersions; - use super::Ibad_model_multiple_versions; +pub mod bad_model_bad_version_type { + use super::BadModelBadVersionType; + use super::Ibad_model_bad_version_type; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() + dojo::model::Model::::layout() } fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl bad_model_multiple_versionsImpl of Ibad_model_multiple_versions{ - fn ensure_abi(self: @ContractState, model: BadModelMultipleVersions) { + impl bad_model_bad_version_typeImpl of Ibad_model_bad_version_type{ + fn ensure_abi(self: @ContractState, model: BadModelBadVersionType) { } } #[event] @@ -1891,12 +1950,12 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::) -> Span:: { +fn __wrapper__bad_model_bad_version_typeImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -1904,7 +1963,7 @@ fn __wrapper__bad_model_multiple_versionsImpl__ensure_abi(mut data: Span::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -impl BadModelBadVersionTypeIntrospect<> of dojo::meta::introspect::Introspect> { +impl BadModelNoVersionValueIntrospect<> of dojo::meta::introspect::Introspect> { #[inline(always)] fn size() -> Option { dojo::meta::introspect::Introspect::::size() @@ -1990,7 +2049,7 @@ impl BadModelBadVersionTypeIntrospect<> of dojo::meta::introspect::Introspect dojo::meta::introspect::Ty { dojo::meta::introspect::Ty::Struct( dojo::meta::introspect::Struct { - name: 'BadModelBadVersionType', + name: 'BadModelNoVersionValue', attrs: array![].span(), children: array![ dojo::meta::introspect::Member { @@ -2011,30 +2070,29 @@ dojo::meta::introspect::Member { } #[derive(Drop, Serde)] -pub struct BadModelBadVersionTypeEntity { +pub struct BadModelNoVersionValueEntity { __id: felt252, // private field pub v: Vec3, -<<<<<<< HEAD } #[generate_trait] -pub impl BadModelBadVersionTypeEntityStoreImpl of BadModelBadVersionTypeEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelBadVersionTypeEntity { - BadModelBadVersionTypeModelEntityImpl::get(world, entity_id) +pub impl BadModelNoVersionValueEntityStoreImpl of BadModelNoVersionValueEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelNoVersionValueEntity { + BadModelNoVersionValueModelEntityImpl::get(world, entity_id) } - fn update(self: @BadModelBadVersionTypeEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn update(self: @BadModelNoVersionValueEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn delete(self: @BadModelBadVersionTypeEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn delete(self: @BadModelNoVersionValueEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, 578691550836206188651404750433984985630363913126316857592149308417275000080 @@ -2043,14 +2101,14 @@ pub impl BadModelBadVersionTypeEntityStoreImpl of BadModelBadVersionTypeEntitySt if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `BadModelBadVersionType::v`: deserialization failed." + "Field `BadModelNoVersionValue::v`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_v(self: @BadModelBadVersionTypeEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { + fn set_v(self: @BadModelNoVersionValueEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -2064,54 +2122,53 @@ pub impl BadModelBadVersionTypeEntityStoreImpl of BadModelBadVersionTypeEntitySt } #[generate_trait] -pub impl BadModelBadVersionTypeStoreImpl of BadModelBadVersionTypeStore { +pub impl BadModelNoVersionValueStoreImpl of BadModelNoVersionValueStore { fn entity_id_from_keys(id: felt252) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> BadModelBadVersionType { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let id = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let v = core::serde::Serde::::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `BadModelBadVersionType`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + BadModelNoVersionValue { + id, + + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelBadVersionType { + fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelNoVersionValue { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @BadModelBadVersionType, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @BadModelNoVersionValue, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @BadModelBadVersionType, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @BadModelNoVersionValue, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), 578691550836206188651404750433984985630363913126316857592149308417275000080 @@ -2121,14 +2178,14 @@ pub impl BadModelBadVersionTypeStoreImpl of BadModelBadVersionTypeStore { if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `BadModelBadVersionType::v`: deserialization failed." + "Field `BadModelNoVersionValue::v`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_v(self: @BadModelBadVersionType, world: dojo::world::IWorldDispatcher, value: Vec3) { + fn set_v(self: @BadModelNoVersionValue, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -2141,58 +2198,62 @@ pub impl BadModelBadVersionTypeStoreImpl of BadModelBadVersionTypeStore { } -pub impl BadModelBadVersionTypeModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @BadModelBadVersionTypeEntity) -> felt252 { +pub impl BadModelNoVersionValueModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @BadModelNoVersionValueEntity) -> felt252 { *self.__id } - fn values(self: @BadModelBadVersionTypeEntity) -> Span { + fn values(self: @BadModelNoVersionValueEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.v, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> BadModelBadVersionTypeEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let v = core::serde::Serde::::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `BadModelBadVersionTypeEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + BadModelNoVersionValueEntity { + __id: entity_id, + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelBadVersionTypeEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelNoVersionValueEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `BadModelNoVersionValueEntity`: deserialization failed.") + } + } } - fn update_entity(self: @BadModelBadVersionTypeEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @BadModelNoVersionValueEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @BadModelBadVersionTypeEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @BadModelNoVersionValueEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -2201,11 +2262,11 @@ pub impl BadModelBadVersionTypeModelEntityImpl of dojo::model::ModelEntity Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -2215,16 +2276,16 @@ pub impl BadModelBadVersionTypeModelEntityImpl of dojo::model::ModelEntity, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -2235,8 +2296,8 @@ pub impl BadModelBadVersionTypeModelEntityImpl of dojo::model::ModelEntity { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelBadVersionType { +pub impl BadModelNoVersionValueModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelNoVersionValue { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -2245,11 +2306,16 @@ pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model x, + Option::None => { + panic!("Model `BadModelNoVersionValue`: deserialization failed.") + } + } } fn set_model( - self: @BadModelBadVersionType, + self: @BadModelNoVersionValue, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -2262,7 +2328,7 @@ pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model @@ -2314,7 +2380,7 @@ pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model ByteArray { - "BadModelBadVersionType" + "BadModelNoVersionValue" } #[inline(always)] @@ -2324,7 +2390,7 @@ pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model ByteArray { - "dojo_test-BadModelBadVersionType" + "dojo_test-BadModelNoVersionValue" } #[inline(always)] @@ -2334,17 +2400,17 @@ pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model felt252 { - 1905541678078795270787966976324692071183638743428320623241420232497892529006 + 2174173236757861924887576251338889271361403293870377278593064770381730742730 } #[inline(always)] - fn instance_selector(self: @BadModelBadVersionType) -> felt252 { + fn instance_selector(self: @BadModelNoVersionValue) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 760683829940564015458541272487101565210915690045377810379189532484191344547 + 2459365230136118590954025890011480023818926626380754992635699340900694864996 } #[inline(always)] @@ -2353,20 +2419,20 @@ pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model felt252 { + fn entity_id(self: @BadModelNoVersionValue) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @BadModelBadVersionType) -> Span { + fn keys(self: @BadModelNoVersionValue) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); + core::serde::Serde::serialize(self.id, ref serialized); core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn values(self: @BadModelBadVersionType) -> Span { + fn values(self: @BadModelNoVersionValue) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.v, ref serialized); @@ -2374,81 +2440,81 @@ pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() + fn layout() -> dojo::meta::Layout { + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @BadModelBadVersionType) -> dojo::model::Layout { + fn instance_layout(self: @BadModelNoVersionValue) -> dojo::meta::Layout { Self::layout() } #[inline(always)] fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) + dojo::meta::layout::compute_packed_size(Self::layout()) } } #[starknet::interface] -pub trait Ibad_model_bad_version_type { - fn ensure_abi(self: @T, model: BadModelBadVersionType); +pub trait Ibad_model_no_version_value { + fn ensure_abi(self: @T, model: BadModelNoVersionValue); } #[starknet::contract] -pub mod bad_model_bad_version_type { - use super::BadModelBadVersionType; - use super::Ibad_model_bad_version_type; +pub mod bad_model_no_version_value { + use super::BadModelNoVersionValue; + use super::Ibad_model_no_version_value; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() + fn layout(self: @ContractState) -> dojo::meta::Layout { + dojo::model::Model::::layout() } - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() + fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl bad_model_bad_version_typeImpl of Ibad_model_bad_version_type{ - fn ensure_abi(self: @ContractState, model: BadModelBadVersionType) { + impl bad_model_no_version_valueImpl of Ibad_model_no_version_value{ + fn ensure_abi(self: @ContractState, model: BadModelNoVersionValue) { } } #[event] @@ -2696,7 +2762,7 @@ fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } @@ -2715,17 +2781,17 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } #[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__bad_model_bad_version_typeImpl__ensure_abi(mut data: Span::) -> Span:: { +fn __wrapper__bad_model_no_version_valueImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -2733,7 +2799,7 @@ fn __wrapper__bad_model_bad_version_typeImpl__ensure_abi(mut data: Span::; impl StorageStorageBaseMutDrop of core::traits::Drop::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) + +impl BadModelUnexpectedArgWithValueIntrospect<> of dojo::meta::introspect::Introspect> { + #[inline(always)] + fn size() -> Option { + dojo::meta::introspect::Introspect::::size() + } + + fn layout() -> dojo::meta::Layout { + dojo::meta::Layout::Struct( + array![ + dojo::meta::FieldLayout { + selector: 578691550836206188651404750433984985630363913126316857592149308417275000080, + layout: dojo::meta::introspect::Introspect::::layout() + } + ].span() + ) + } + + #[inline(always)] + fn ty() -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Ty::Struct( + dojo::meta::introspect::Struct { + name: 'BadModelUnexpectedArgWithValue', + attrs: array![].span(), + children: array![ + dojo::meta::introspect::Member { + name: 'id', + attrs: array!['key'].span(), + ty: dojo::meta::introspect::Introspect::::ty() + }, +dojo::meta::introspect::Member { + name: 'v', + attrs: array![].span(), + ty: dojo::meta::introspect::Introspect::::ty() + } + + ].span() + } + ) + } +} + +#[derive(Drop, Serde)] +pub struct BadModelUnexpectedArgWithValueEntity { + __id: felt252, // private field + pub v: Vec3, } #[generate_trait] -pub impl BadModelBadVersionTypeEntityStoreImpl of BadModelBadVersionTypeEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelBadVersionTypeEntity { - BadModelBadVersionTypeModelEntityImpl::get(world, entity_id) +pub impl BadModelUnexpectedArgWithValueEntityStoreImpl of BadModelUnexpectedArgWithValueEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelUnexpectedArgWithValueEntity { + BadModelUnexpectedArgWithValueModelEntityImpl::get(world, entity_id) } - fn update(self: @BadModelBadVersionTypeEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn update(self: @BadModelUnexpectedArgWithValueEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn delete(self: @BadModelBadVersionTypeEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn delete(self: @BadModelUnexpectedArgWithValueEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, 578691550836206188651404750433984985630363913126316857592149308417275000080 @@ -2827,14 +2937,14 @@ pub impl BadModelBadVersionTypeEntityStoreImpl of BadModelBadVersionTypeEntitySt if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `BadModelBadVersionType::v`: deserialization failed." + "Field `BadModelUnexpectedArgWithValue::v`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_v(self: @BadModelBadVersionTypeEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { + fn set_v(self: @BadModelUnexpectedArgWithValueEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -2848,54 +2958,53 @@ pub impl BadModelBadVersionTypeEntityStoreImpl of BadModelBadVersionTypeEntitySt } #[generate_trait] -pub impl BadModelBadVersionTypeStoreImpl of BadModelBadVersionTypeStore { +pub impl BadModelUnexpectedArgWithValueStoreImpl of BadModelUnexpectedArgWithValueStore { fn entity_id_from_keys(id: felt252) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> BadModelBadVersionType { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let id = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let v = core::serde::Serde::::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `BadModelBadVersionType`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + BadModelUnexpectedArgWithValue { + id, + + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelBadVersionType { + fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelUnexpectedArgWithValue { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @BadModelBadVersionType, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @BadModelUnexpectedArgWithValue, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @BadModelBadVersionType, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @BadModelUnexpectedArgWithValue, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), 578691550836206188651404750433984985630363913126316857592149308417275000080 @@ -2905,14 +3014,14 @@ pub impl BadModelBadVersionTypeStoreImpl of BadModelBadVersionTypeStore { if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `BadModelBadVersionType::v`: deserialization failed." + "Field `BadModelUnexpectedArgWithValue::v`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_v(self: @BadModelBadVersionType, world: dojo::world::IWorldDispatcher, value: Vec3) { + fn set_v(self: @BadModelUnexpectedArgWithValue, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -2925,58 +3034,62 @@ pub impl BadModelBadVersionTypeStoreImpl of BadModelBadVersionTypeStore { } -pub impl BadModelBadVersionTypeModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @BadModelBadVersionTypeEntity) -> felt252 { +pub impl BadModelUnexpectedArgWithValueModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @BadModelUnexpectedArgWithValueEntity) -> felt252 { *self.__id } - fn values(self: @BadModelBadVersionTypeEntity) -> Span { + fn values(self: @BadModelUnexpectedArgWithValueEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.v, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> BadModelBadVersionTypeEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let v = core::serde::Serde::::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `BadModelBadVersionTypeEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + BadModelUnexpectedArgWithValueEntity { + __id: entity_id, + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelBadVersionTypeEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelUnexpectedArgWithValueEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `BadModelUnexpectedArgWithValueEntity`: deserialization failed.") + } + } } - fn update_entity(self: @BadModelBadVersionTypeEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @BadModelUnexpectedArgWithValueEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @BadModelBadVersionTypeEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @BadModelUnexpectedArgWithValueEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -2985,11 +3098,11 @@ pub impl BadModelBadVersionTypeModelEntityImpl of dojo::model::ModelEntity Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -2999,16 +3112,16 @@ pub impl BadModelBadVersionTypeModelEntityImpl of dojo::model::ModelEntity, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -3019,8 +3132,8 @@ pub impl BadModelBadVersionTypeModelEntityImpl of dojo::model::ModelEntity { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelBadVersionType { +pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelUnexpectedArgWithValue { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -3029,11 +3142,16 @@ pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model x, + Option::None => { + panic!("Model `BadModelUnexpectedArgWithValue`: deserialization failed.") + } + } } fn set_model( - self: @BadModelBadVersionType, + self: @BadModelUnexpectedArgWithValue, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -3046,7 +3164,7 @@ pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model @@ -3098,7 +3216,7 @@ pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model ByteArray { - "BadModelBadVersionType" + "BadModelUnexpectedArgWithValue" } #[inline(always)] @@ -3108,7 +3226,7 @@ pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model ByteArray { - "dojo_test-BadModelBadVersionType" + "dojo_test-BadModelUnexpectedArgWithValue" } #[inline(always)] @@ -3118,17 +3236,17 @@ pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model felt252 { - 1905541678078795270787966976324692071183638743428320623241420232497892529006 + 1774601905279008934284028706234273692471613779453192873246657851412081197776 } #[inline(always)] - fn instance_selector(self: @BadModelBadVersionType) -> felt252 { + fn instance_selector(self: @BadModelUnexpectedArgWithValue) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 760683829940564015458541272487101565210915690045377810379189532484191344547 + 3586339245084542986020591057627093254376225984628310828088084183494435682971 } #[inline(always)] @@ -3137,20 +3255,20 @@ pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model felt252 { + fn entity_id(self: @BadModelUnexpectedArgWithValue) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @BadModelBadVersionType) -> Span { + fn keys(self: @BadModelUnexpectedArgWithValue) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); + core::serde::Serde::serialize(self.id, ref serialized); core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn values(self: @BadModelBadVersionType) -> Span { + fn values(self: @BadModelUnexpectedArgWithValue) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.v, ref serialized); @@ -3159,11 +3277,11 @@ pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @BadModelBadVersionType) -> dojo::meta::Layout { + fn instance_layout(self: @BadModelUnexpectedArgWithValue) -> dojo::meta::Layout { Self::layout() } @@ -3174,65 +3292,65 @@ pub impl BadModelBadVersionTypeModelImpl of dojo::model::Model { - fn ensure_abi(self: @T, model: BadModelBadVersionType); +pub trait Ibad_model_unexpected_arg_with_value { + fn ensure_abi(self: @T, model: BadModelUnexpectedArgWithValue); } #[starknet::contract] -pub mod bad_model_bad_version_type { - use super::BadModelBadVersionType; - use super::Ibad_model_bad_version_type; +pub mod bad_model_unexpected_arg_with_value { + use super::BadModelUnexpectedArgWithValue; + use super::Ibad_model_unexpected_arg_with_value; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() + dojo::model::Model::::layout() } fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl bad_model_bad_version_typeImpl of Ibad_model_bad_version_type{ - fn ensure_abi(self: @ContractState, model: BadModelBadVersionType) { + impl bad_model_unexpected_arg_with_valueImpl of Ibad_model_unexpected_arg_with_value{ + fn ensure_abi(self: @ContractState, model: BadModelUnexpectedArgWithValue) { } } #[event] @@ -3504,12 +3622,12 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::) -> Span:: { +fn __wrapper__bad_model_unexpected_arg_with_valueImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -3517,7 +3635,7 @@ fn __wrapper__bad_model_bad_version_typeImpl__ensure_abi(mut data: Span::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -impl BadModelNoVersionValueIntrospect<> of dojo::meta::introspect::Introspect> { +impl BadModelUnexpectedArgIntrospect<> of dojo::meta::introspect::Introspect> { #[inline(always)] fn size() -> Option { dojo::meta::introspect::Introspect::::size() @@ -3603,7 +3721,7 @@ impl BadModelNoVersionValueIntrospect<> of dojo::meta::introspect::Introspect dojo::meta::introspect::Ty { dojo::meta::introspect::Ty::Struct( dojo::meta::introspect::Struct { - name: 'BadModelNoVersionValue', + name: 'BadModelUnexpectedArg', attrs: array![].span(), children: array![ dojo::meta::introspect::Member { @@ -3624,30 +3742,29 @@ dojo::meta::introspect::Member { } #[derive(Drop, Serde)] -pub struct BadModelNoVersionValueEntity { +pub struct BadModelUnexpectedArgEntity { __id: felt252, // private field pub v: Vec3, -<<<<<<< HEAD } #[generate_trait] -pub impl BadModelNoVersionValueEntityStoreImpl of BadModelNoVersionValueEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelNoVersionValueEntity { - BadModelNoVersionValueModelEntityImpl::get(world, entity_id) +pub impl BadModelUnexpectedArgEntityStoreImpl of BadModelUnexpectedArgEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelUnexpectedArgEntity { + BadModelUnexpectedArgModelEntityImpl::get(world, entity_id) } - fn update(self: @BadModelNoVersionValueEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn update(self: @BadModelUnexpectedArgEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn delete(self: @BadModelNoVersionValueEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn delete(self: @BadModelUnexpectedArgEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, 578691550836206188651404750433984985630363913126316857592149308417275000080 @@ -3656,14 +3773,14 @@ pub impl BadModelNoVersionValueEntityStoreImpl of BadModelNoVersionValueEntitySt if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `BadModelNoVersionValue::v`: deserialization failed." + "Field `BadModelUnexpectedArg::v`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_v(self: @BadModelNoVersionValueEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { + fn set_v(self: @BadModelUnexpectedArgEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -3677,54 +3794,53 @@ pub impl BadModelNoVersionValueEntityStoreImpl of BadModelNoVersionValueEntitySt } #[generate_trait] -pub impl BadModelNoVersionValueStoreImpl of BadModelNoVersionValueStore { +pub impl BadModelUnexpectedArgStoreImpl of BadModelUnexpectedArgStore { fn entity_id_from_keys(id: felt252) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> BadModelNoVersionValue { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let id = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let v = core::serde::Serde::::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `BadModelNoVersionValue`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + BadModelUnexpectedArg { + id, + + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelNoVersionValue { + fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelUnexpectedArg { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @BadModelNoVersionValue, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @BadModelUnexpectedArg, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @BadModelNoVersionValue, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @BadModelUnexpectedArg, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), 578691550836206188651404750433984985630363913126316857592149308417275000080 @@ -3734,14 +3850,14 @@ pub impl BadModelNoVersionValueStoreImpl of BadModelNoVersionValueStore { if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `BadModelNoVersionValue::v`: deserialization failed." + "Field `BadModelUnexpectedArg::v`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_v(self: @BadModelNoVersionValue, world: dojo::world::IWorldDispatcher, value: Vec3) { + fn set_v(self: @BadModelUnexpectedArg, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -3754,58 +3870,62 @@ pub impl BadModelNoVersionValueStoreImpl of BadModelNoVersionValueStore { } -pub impl BadModelNoVersionValueModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @BadModelNoVersionValueEntity) -> felt252 { +pub impl BadModelUnexpectedArgModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @BadModelUnexpectedArgEntity) -> felt252 { *self.__id } - fn values(self: @BadModelNoVersionValueEntity) -> Span { + fn values(self: @BadModelUnexpectedArgEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.v, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> BadModelNoVersionValueEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let v = core::serde::Serde::::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `BadModelNoVersionValueEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + BadModelUnexpectedArgEntity { + __id: entity_id, + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelNoVersionValueEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelUnexpectedArgEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `BadModelUnexpectedArgEntity`: deserialization failed.") + } + } } - fn update_entity(self: @BadModelNoVersionValueEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @BadModelUnexpectedArgEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @BadModelNoVersionValueEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @BadModelUnexpectedArgEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -3814,11 +3934,11 @@ pub impl BadModelNoVersionValueModelEntityImpl of dojo::model::ModelEntity Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -3828,16 +3948,16 @@ pub impl BadModelNoVersionValueModelEntityImpl of dojo::model::ModelEntity, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -3848,8 +3968,8 @@ pub impl BadModelNoVersionValueModelEntityImpl of dojo::model::ModelEntity { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelNoVersionValue { +pub impl BadModelUnexpectedArgModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelUnexpectedArg { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -3858,11 +3978,16 @@ pub impl BadModelNoVersionValueModelImpl of dojo::model::Model x, + Option::None => { + panic!("Model `BadModelUnexpectedArg`: deserialization failed.") + } + } } fn set_model( - self: @BadModelNoVersionValue, + self: @BadModelUnexpectedArg, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -3875,7 +4000,7 @@ pub impl BadModelNoVersionValueModelImpl of dojo::model::Model @@ -3927,7 +4052,7 @@ pub impl BadModelNoVersionValueModelImpl of dojo::model::Model ByteArray { - "BadModelNoVersionValue" + "BadModelUnexpectedArg" } #[inline(always)] @@ -3937,7 +4062,7 @@ pub impl BadModelNoVersionValueModelImpl of dojo::model::Model ByteArray { - "dojo_test-BadModelNoVersionValue" + "dojo_test-BadModelUnexpectedArg" } #[inline(always)] @@ -3947,17 +4072,17 @@ pub impl BadModelNoVersionValueModelImpl of dojo::model::Model felt252 { - 2174173236757861924887576251338889271361403293870377278593064770381730742730 + 285468224541147509570785281966044474829506125602814945625270991330973673529 } #[inline(always)] - fn instance_selector(self: @BadModelNoVersionValue) -> felt252 { + fn instance_selector(self: @BadModelUnexpectedArg) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 2459365230136118590954025890011480023818926626380754992635699340900694864996 + 246403407829267991441535935236143476032296881039254363860883767387993960270 } #[inline(always)] @@ -3966,20 +4091,20 @@ pub impl BadModelNoVersionValueModelImpl of dojo::model::Model felt252 { + fn entity_id(self: @BadModelUnexpectedArg) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @BadModelNoVersionValue) -> Span { + fn keys(self: @BadModelUnexpectedArg) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); + core::serde::Serde::serialize(self.id, ref serialized); core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn values(self: @BadModelNoVersionValue) -> Span { + fn values(self: @BadModelUnexpectedArg) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.v, ref serialized); @@ -3987,81 +4112,81 @@ pub impl BadModelNoVersionValueModelImpl of dojo::model::Model dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() + fn layout() -> dojo::meta::Layout { + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @BadModelNoVersionValue) -> dojo::model::Layout { + fn instance_layout(self: @BadModelUnexpectedArg) -> dojo::meta::Layout { Self::layout() } #[inline(always)] fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) + dojo::meta::layout::compute_packed_size(Self::layout()) } } #[starknet::interface] -pub trait Ibad_model_no_version_value { - fn ensure_abi(self: @T, model: BadModelNoVersionValue); +pub trait Ibad_model_unexpected_arg { + fn ensure_abi(self: @T, model: BadModelUnexpectedArg); } #[starknet::contract] -pub mod bad_model_no_version_value { - use super::BadModelNoVersionValue; - use super::Ibad_model_no_version_value; +pub mod bad_model_unexpected_arg { + use super::BadModelUnexpectedArg; + use super::Ibad_model_unexpected_arg; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() + fn layout(self: @ContractState) -> dojo::meta::Layout { + dojo::model::Model::::layout() } - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() + fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl bad_model_no_version_valueImpl of Ibad_model_no_version_value{ - fn ensure_abi(self: @ContractState, model: BadModelNoVersionValue) { + impl bad_model_unexpected_argImpl of Ibad_model_unexpected_arg{ + fn ensure_abi(self: @ContractState, model: BadModelUnexpectedArg) { } } #[event] @@ -4309,7 +4434,7 @@ fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } @@ -4328,17 +4453,17 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } #[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__bad_model_no_version_valueImpl__ensure_abi(mut data: Span::) -> Span:: { +fn __wrapper__bad_model_unexpected_argImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -4346,7 +4471,7 @@ fn __wrapper__bad_model_no_version_valueImpl__ensure_abi(mut data: Span::; impl StorageStorageBaseMutDrop of core::traits::Drop::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) + +impl BadModelNotSupportedVersionIntrospect<> of dojo::meta::introspect::Introspect> { + #[inline(always)] + fn size() -> Option { + dojo::meta::introspect::Introspect::::size() + } + + fn layout() -> dojo::meta::Layout { + dojo::meta::Layout::Struct( + array![ + dojo::meta::FieldLayout { + selector: 578691550836206188651404750433984985630363913126316857592149308417275000080, + layout: dojo::meta::introspect::Introspect::::layout() + } + ].span() + ) + } + + #[inline(always)] + fn ty() -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Ty::Struct( + dojo::meta::introspect::Struct { + name: 'BadModelNotSupportedVersion', + attrs: array![].span(), + children: array![ + dojo::meta::introspect::Member { + name: 'id', + attrs: array!['key'].span(), + ty: dojo::meta::introspect::Introspect::::ty() + }, +dojo::meta::introspect::Member { + name: 'v', + attrs: array![].span(), + ty: dojo::meta::introspect::Introspect::::ty() + } + + ].span() + } + ) + } +} + +#[derive(Drop, Serde)] +pub struct BadModelNotSupportedVersionEntity { + __id: felt252, // private field + pub v: Vec3, } #[generate_trait] -pub impl BadModelNoVersionValueEntityStoreImpl of BadModelNoVersionValueEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelNoVersionValueEntity { - BadModelNoVersionValueModelEntityImpl::get(world, entity_id) +pub impl BadModelNotSupportedVersionEntityStoreImpl of BadModelNotSupportedVersionEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelNotSupportedVersionEntity { + BadModelNotSupportedVersionModelEntityImpl::get(world, entity_id) } - fn update(self: @BadModelNoVersionValueEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn update(self: @BadModelNotSupportedVersionEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn delete(self: @BadModelNoVersionValueEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn delete(self: @BadModelNotSupportedVersionEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, 578691550836206188651404750433984985630363913126316857592149308417275000080 @@ -4440,14 +4609,14 @@ pub impl BadModelNoVersionValueEntityStoreImpl of BadModelNoVersionValueEntitySt if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `BadModelNoVersionValue::v`: deserialization failed." + "Field `BadModelNotSupportedVersion::v`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_v(self: @BadModelNoVersionValueEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { + fn set_v(self: @BadModelNotSupportedVersionEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -4461,54 +4630,53 @@ pub impl BadModelNoVersionValueEntityStoreImpl of BadModelNoVersionValueEntitySt } #[generate_trait] -pub impl BadModelNoVersionValueStoreImpl of BadModelNoVersionValueStore { +pub impl BadModelNotSupportedVersionStoreImpl of BadModelNotSupportedVersionStore { fn entity_id_from_keys(id: felt252) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> BadModelNoVersionValue { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let id = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let v = core::serde::Serde::::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `BadModelNoVersionValue`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + BadModelNotSupportedVersion { + id, + + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelNoVersionValue { + fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelNotSupportedVersion { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @BadModelNoVersionValue, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @BadModelNotSupportedVersion, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @BadModelNoVersionValue, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @BadModelNotSupportedVersion, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), 578691550836206188651404750433984985630363913126316857592149308417275000080 @@ -4518,14 +4686,14 @@ pub impl BadModelNoVersionValueStoreImpl of BadModelNoVersionValueStore { if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `BadModelNoVersionValue::v`: deserialization failed." + "Field `BadModelNotSupportedVersion::v`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_v(self: @BadModelNoVersionValue, world: dojo::world::IWorldDispatcher, value: Vec3) { + fn set_v(self: @BadModelNotSupportedVersion, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -4538,58 +4706,62 @@ pub impl BadModelNoVersionValueStoreImpl of BadModelNoVersionValueStore { } -pub impl BadModelNoVersionValueModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @BadModelNoVersionValueEntity) -> felt252 { +pub impl BadModelNotSupportedVersionModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @BadModelNotSupportedVersionEntity) -> felt252 { *self.__id } - fn values(self: @BadModelNoVersionValueEntity) -> Span { + fn values(self: @BadModelNotSupportedVersionEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.v, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> BadModelNoVersionValueEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let v = core::serde::Serde::::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `BadModelNoVersionValueEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + BadModelNotSupportedVersionEntity { + __id: entity_id, + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelNoVersionValueEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelNotSupportedVersionEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `BadModelNotSupportedVersionEntity`: deserialization failed.") + } + } } - fn update_entity(self: @BadModelNoVersionValueEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @BadModelNotSupportedVersionEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @BadModelNoVersionValueEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @BadModelNotSupportedVersionEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -4598,11 +4770,11 @@ pub impl BadModelNoVersionValueModelEntityImpl of dojo::model::ModelEntity Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -4612,16 +4784,16 @@ pub impl BadModelNoVersionValueModelEntityImpl of dojo::model::ModelEntity, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -4632,8 +4804,8 @@ pub impl BadModelNoVersionValueModelEntityImpl of dojo::model::ModelEntity { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelNoVersionValue { +pub impl BadModelNotSupportedVersionModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelNotSupportedVersion { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -4642,11 +4814,16 @@ pub impl BadModelNoVersionValueModelImpl of dojo::model::Model x, + Option::None => { + panic!("Model `BadModelNotSupportedVersion`: deserialization failed.") + } + } } fn set_model( - self: @BadModelNoVersionValue, + self: @BadModelNotSupportedVersion, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -4659,7 +4836,7 @@ pub impl BadModelNoVersionValueModelImpl of dojo::model::Model @@ -4711,7 +4888,7 @@ pub impl BadModelNoVersionValueModelImpl of dojo::model::Model ByteArray { - "BadModelNoVersionValue" + "BadModelNotSupportedVersion" } #[inline(always)] @@ -4721,7 +4898,7 @@ pub impl BadModelNoVersionValueModelImpl of dojo::model::Model ByteArray { - "dojo_test-BadModelNoVersionValue" + "dojo_test-BadModelNotSupportedVersion" } #[inline(always)] @@ -4731,17 +4908,17 @@ pub impl BadModelNoVersionValueModelImpl of dojo::model::Model felt252 { - 2174173236757861924887576251338889271361403293870377278593064770381730742730 + 3364830312705791335907422218790599751780160858399843169712719310945970157661 } #[inline(always)] - fn instance_selector(self: @BadModelNoVersionValue) -> felt252 { + fn instance_selector(self: @BadModelNotSupportedVersion) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 2459365230136118590954025890011480023818926626380754992635699340900694864996 + 1812257929012908024237871796629728977392496349235879470060252299886369485820 } #[inline(always)] @@ -4750,20 +4927,20 @@ pub impl BadModelNoVersionValueModelImpl of dojo::model::Model felt252 { + fn entity_id(self: @BadModelNotSupportedVersion) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @BadModelNoVersionValue) -> Span { + fn keys(self: @BadModelNotSupportedVersion) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); + core::serde::Serde::serialize(self.id, ref serialized); core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn values(self: @BadModelNoVersionValue) -> Span { + fn values(self: @BadModelNotSupportedVersion) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.v, ref serialized); @@ -4772,11 +4949,11 @@ pub impl BadModelNoVersionValueModelImpl of dojo::model::Model dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @BadModelNoVersionValue) -> dojo::meta::Layout { + fn instance_layout(self: @BadModelNotSupportedVersion) -> dojo::meta::Layout { Self::layout() } @@ -4787,65 +4964,65 @@ pub impl BadModelNoVersionValueModelImpl of dojo::model::Model { - fn ensure_abi(self: @T, model: BadModelNoVersionValue); +pub trait Ibad_model_not_supported_version { + fn ensure_abi(self: @T, model: BadModelNotSupportedVersion); } #[starknet::contract] -pub mod bad_model_no_version_value { - use super::BadModelNoVersionValue; - use super::Ibad_model_no_version_value; +pub mod bad_model_not_supported_version { + use super::BadModelNotSupportedVersion; + use super::Ibad_model_not_supported_version; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() + dojo::model::Model::::layout() } fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl bad_model_no_version_valueImpl of Ibad_model_no_version_value{ - fn ensure_abi(self: @ContractState, model: BadModelNoVersionValue) { + impl bad_model_not_supported_versionImpl of Ibad_model_not_supported_version{ + fn ensure_abi(self: @ContractState, model: BadModelNotSupportedVersion) { } } #[event] @@ -5117,12 +5294,12 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::) -> Span:: { +fn __wrapper__bad_model_not_supported_versionImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -5130,7 +5307,7 @@ fn __wrapper__bad_model_no_version_valueImpl__ensure_abi(mut data: Span::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -impl BadModelUnexpectedArgWithValueIntrospect<> of dojo::meta::introspect::Introspect> { +impl Modelv0Introspect<> of dojo::meta::introspect::Introspect> { #[inline(always)] fn size() -> Option { dojo::meta::introspect::Introspect::::size() @@ -5216,7 +5393,7 @@ impl BadModelUnexpectedArgWithValueIntrospect<> of dojo::meta::introspect::Intro fn ty() -> dojo::meta::introspect::Ty { dojo::meta::introspect::Ty::Struct( dojo::meta::introspect::Struct { - name: 'BadModelUnexpectedArgWithValue', + name: 'Modelv0', attrs: array![].span(), children: array![ dojo::meta::introspect::Member { @@ -5237,30 +5414,29 @@ dojo::meta::introspect::Member { } #[derive(Drop, Serde)] -pub struct BadModelUnexpectedArgWithValueEntity { +pub struct Modelv0Entity { __id: felt252, // private field pub v: Vec3, -<<<<<<< HEAD } #[generate_trait] -pub impl BadModelUnexpectedArgWithValueEntityStoreImpl of BadModelUnexpectedArgWithValueEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelUnexpectedArgWithValueEntity { - BadModelUnexpectedArgWithValueModelEntityImpl::get(world, entity_id) +pub impl Modelv0EntityStoreImpl of Modelv0EntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Modelv0Entity { + Modelv0ModelEntityImpl::get(world, entity_id) } - fn update(self: @BadModelUnexpectedArgWithValueEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn update(self: @Modelv0Entity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn delete(self: @BadModelUnexpectedArgWithValueEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn delete(self: @Modelv0Entity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, 578691550836206188651404750433984985630363913126316857592149308417275000080 @@ -5269,14 +5445,14 @@ pub impl BadModelUnexpectedArgWithValueEntityStoreImpl of BadModelUnexpectedArgW if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `BadModelUnexpectedArgWithValue::v`: deserialization failed." + "Field `Modelv0::v`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_v(self: @BadModelUnexpectedArgWithValueEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { + fn set_v(self: @Modelv0Entity, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -5290,54 +5466,53 @@ pub impl BadModelUnexpectedArgWithValueEntityStoreImpl of BadModelUnexpectedArgW } #[generate_trait] -pub impl BadModelUnexpectedArgWithValueStoreImpl of BadModelUnexpectedArgWithValueStore { +pub impl Modelv0StoreImpl of Modelv0Store { fn entity_id_from_keys(id: felt252) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> BadModelUnexpectedArgWithValue { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let id = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let v = core::serde::Serde::::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `BadModelUnexpectedArgWithValue`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + Modelv0 { + id, + + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelUnexpectedArgWithValue { + fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> Modelv0 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @BadModelUnexpectedArgWithValue, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @Modelv0, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @BadModelUnexpectedArgWithValue, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @Modelv0, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), 578691550836206188651404750433984985630363913126316857592149308417275000080 @@ -5347,14 +5522,14 @@ pub impl BadModelUnexpectedArgWithValueStoreImpl of BadModelUnexpectedArgWithVal if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `BadModelUnexpectedArgWithValue::v`: deserialization failed." + "Field `Modelv0::v`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_v(self: @BadModelUnexpectedArgWithValue, world: dojo::world::IWorldDispatcher, value: Vec3) { + fn set_v(self: @Modelv0, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -5367,58 +5542,62 @@ pub impl BadModelUnexpectedArgWithValueStoreImpl of BadModelUnexpectedArgWithVal } -pub impl BadModelUnexpectedArgWithValueModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @BadModelUnexpectedArgWithValueEntity) -> felt252 { +pub impl Modelv0ModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @Modelv0Entity) -> felt252 { *self.__id } - fn values(self: @BadModelUnexpectedArgWithValueEntity) -> Span { + fn values(self: @Modelv0Entity) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.v, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> BadModelUnexpectedArgWithValueEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let v = core::serde::Serde::::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `BadModelUnexpectedArgWithValueEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + Modelv0Entity { + __id: entity_id, + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelUnexpectedArgWithValueEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Modelv0Entity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `Modelv0Entity`: deserialization failed.") + } + } } - fn update_entity(self: @BadModelUnexpectedArgWithValueEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @Modelv0Entity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @BadModelUnexpectedArgWithValueEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @Modelv0Entity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -5427,11 +5606,11 @@ pub impl BadModelUnexpectedArgWithValueModelEntityImpl of dojo::model::ModelEnti entity_id: felt252, member_id: felt252, ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -5441,16 +5620,16 @@ pub impl BadModelUnexpectedArgWithValueModelEntityImpl of dojo::model::ModelEnti } fn set_member( - self: @BadModelUnexpectedArgWithValueEntity, + self: @Modelv0Entity, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -5461,8 +5640,8 @@ pub impl BadModelUnexpectedArgWithValueModelEntityImpl of dojo::model::ModelEnti } } -pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelUnexpectedArgWithValue { +pub impl Modelv0ModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> Modelv0 { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -5471,11 +5650,16 @@ pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model x, + Option::None => { + panic!("Model `Modelv0`: deserialization failed.") + } + } } fn set_model( - self: @BadModelUnexpectedArgWithValue, + self: @Modelv0, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -5488,7 +5672,7 @@ pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model @@ -5540,7 +5724,7 @@ pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model ByteArray { - "BadModelUnexpectedArgWithValue" + "Modelv0" } #[inline(always)] @@ -5550,27 +5734,27 @@ pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model ByteArray { - "dojo_test-BadModelUnexpectedArgWithValue" + "dojo_test-Modelv0" } #[inline(always)] fn version() -> u8 { - 1 + 0 } #[inline(always)] fn selector() -> felt252 { - 1774601905279008934284028706234273692471613779453192873246657851412081197776 + "Modelv0" } #[inline(always)] - fn instance_selector(self: @BadModelUnexpectedArgWithValue) -> felt252 { + fn instance_selector(self: @Modelv0) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 3586339245084542986020591057627093254376225984628310828088084183494435682971 + 2212879130471315306779111820244908968466545702031328551192231795237740448313 } #[inline(always)] @@ -5579,20 +5763,20 @@ pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model felt252 { + fn entity_id(self: @Modelv0) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @BadModelUnexpectedArgWithValue) -> Span { + fn keys(self: @Modelv0) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); + core::serde::Serde::serialize(self.id, ref serialized); core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn values(self: @BadModelUnexpectedArgWithValue) -> Span { + fn values(self: @Modelv0) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.v, ref serialized); @@ -5600,81 +5784,81 @@ pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() + fn layout() -> dojo::meta::Layout { + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @BadModelUnexpectedArgWithValue) -> dojo::model::Layout { + fn instance_layout(self: @Modelv0) -> dojo::meta::Layout { Self::layout() } #[inline(always)] fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) + dojo::meta::layout::compute_packed_size(Self::layout()) } } #[starknet::interface] -pub trait Ibad_model_unexpected_arg_with_value { - fn ensure_abi(self: @T, model: BadModelUnexpectedArgWithValue); +pub trait Imodelv_0 { + fn ensure_abi(self: @T, model: Modelv0); } #[starknet::contract] -pub mod bad_model_unexpected_arg_with_value { - use super::BadModelUnexpectedArgWithValue; - use super::Ibad_model_unexpected_arg_with_value; +pub mod modelv_0 { + use super::Modelv0; + use super::Imodelv_0; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() + fn layout(self: @ContractState) -> dojo::meta::Layout { + dojo::model::Model::::layout() } - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() + fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl bad_model_unexpected_arg_with_valueImpl of Ibad_model_unexpected_arg_with_value{ - fn ensure_abi(self: @ContractState, model: BadModelUnexpectedArgWithValue) { + impl modelv_0Impl of Imodelv_0{ + fn ensure_abi(self: @ContractState, model: Modelv0) { } } #[event] @@ -5922,7 +6106,7 @@ fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } @@ -5941,17 +6125,17 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } #[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__bad_model_unexpected_arg_with_valueImpl__ensure_abi(mut data: Span::) -> Span:: { +fn __wrapper__modelv_0Impl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -5959,7 +6143,7 @@ fn __wrapper__bad_model_unexpected_arg_with_valueImpl__ensure_abi(mut data: Span core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', ); let mut contract_state = unsafe_new_contract_state(); - bad_model_unexpected_arg_with_valueImpl::ensure_abi(@contract_state, __arg_model); + modelv_0Impl::ensure_abi(@contract_state, __arg_model); let mut arr = ArrayTrait::new(); // References. // Result. @@ -5979,7 +6163,7 @@ pub mod __external { pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; pub use super::__wrapper__DojoModelImpl__layout as layout; pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__bad_model_unexpected_arg_with_valueImpl__ensure_abi as ensure_abi; + pub use super::__wrapper__modelv_0Impl__ensure_abi as ensure_abi; } pub mod __l1_handler { } @@ -6023,28 +6207,72 @@ impl StorageStorageBaseCopy of core::traits::Copy::; impl StorageStorageBaseMutDrop of core::traits::Drop::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) + +impl ModelWithBadNamespaceFormatIntrospect<> of dojo::meta::introspect::Introspect> { + #[inline(always)] + fn size() -> Option { + dojo::meta::introspect::Introspect::::size() + } + + fn layout() -> dojo::meta::Layout { + dojo::meta::Layout::Struct( + array![ + dojo::meta::FieldLayout { + selector: 578691550836206188651404750433984985630363913126316857592149308417275000080, + layout: dojo::meta::introspect::Introspect::::layout() + } + ].span() + ) + } + + #[inline(always)] + fn ty() -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Ty::Struct( + dojo::meta::introspect::Struct { + name: 'ModelWithBadNamespaceFormat', + attrs: array![].span(), + children: array![ + dojo::meta::introspect::Member { + name: 'id', + attrs: array!['key'].span(), + ty: dojo::meta::introspect::Introspect::::ty() + }, +dojo::meta::introspect::Member { + name: 'v', + attrs: array![].span(), + ty: dojo::meta::introspect::Introspect::::ty() + } + + ].span() + } + ) + } +} + +#[derive(Drop, Serde)] +pub struct ModelWithBadNamespaceFormatEntity { + __id: felt252, // private field + pub v: Vec3, } #[generate_trait] -pub impl BadModelUnexpectedArgWithValueEntityStoreImpl of BadModelUnexpectedArgWithValueEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelUnexpectedArgWithValueEntity { - BadModelUnexpectedArgWithValueModelEntityImpl::get(world, entity_id) +pub impl ModelWithBadNamespaceFormatEntityStoreImpl of ModelWithBadNamespaceFormatEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithBadNamespaceFormatEntity { + ModelWithBadNamespaceFormatModelEntityImpl::get(world, entity_id) } - fn update(self: @BadModelUnexpectedArgWithValueEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn update(self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn delete(self: @BadModelUnexpectedArgWithValueEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn delete(self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, 578691550836206188651404750433984985630363913126316857592149308417275000080 @@ -6053,14 +6281,14 @@ pub impl BadModelUnexpectedArgWithValueEntityStoreImpl of BadModelUnexpectedArgW if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `BadModelUnexpectedArgWithValue::v`: deserialization failed." + "Field `ModelWithBadNamespaceFormat::v`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_v(self: @BadModelUnexpectedArgWithValueEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { + fn set_v(self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -6074,54 +6302,53 @@ pub impl BadModelUnexpectedArgWithValueEntityStoreImpl of BadModelUnexpectedArgW } #[generate_trait] -pub impl BadModelUnexpectedArgWithValueStoreImpl of BadModelUnexpectedArgWithValueStore { +pub impl ModelWithBadNamespaceFormatStoreImpl of ModelWithBadNamespaceFormatStore { fn entity_id_from_keys(id: felt252) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> BadModelUnexpectedArgWithValue { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let id = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let v = core::serde::Serde::::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `BadModelUnexpectedArgWithValue`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + ModelWithBadNamespaceFormat { + id, + + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelUnexpectedArgWithValue { + fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> ModelWithBadNamespaceFormat { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @BadModelUnexpectedArgWithValue, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @ModelWithBadNamespaceFormat, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @BadModelUnexpectedArgWithValue, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @ModelWithBadNamespaceFormat, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); + core::serde::Serde::serialize(@id, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), 578691550836206188651404750433984985630363913126316857592149308417275000080 @@ -6131,14 +6358,14 @@ pub impl BadModelUnexpectedArgWithValueStoreImpl of BadModelUnexpectedArgWithVal if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `BadModelUnexpectedArgWithValue::v`: deserialization failed." + "Field `ModelWithBadNamespaceFormat::v`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_v(self: @BadModelUnexpectedArgWithValue, world: dojo::world::IWorldDispatcher, value: Vec3) { + fn set_v(self: @ModelWithBadNamespaceFormat, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -6151,58 +6378,62 @@ pub impl BadModelUnexpectedArgWithValueStoreImpl of BadModelUnexpectedArgWithVal } -pub impl BadModelUnexpectedArgWithValueModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @BadModelUnexpectedArgWithValueEntity) -> felt252 { +pub impl ModelWithBadNamespaceFormatModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @ModelWithBadNamespaceFormatEntity) -> felt252 { *self.__id } - fn values(self: @BadModelUnexpectedArgWithValueEntity) -> Span { + fn values(self: @ModelWithBadNamespaceFormatEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.v, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> BadModelUnexpectedArgWithValueEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let v = core::serde::Serde::::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `BadModelUnexpectedArgWithValueEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + ModelWithBadNamespaceFormatEntity { + __id: entity_id, + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelUnexpectedArgWithValueEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithBadNamespaceFormatEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `ModelWithBadNamespaceFormatEntity`: deserialization failed.") + } + } } - fn update_entity(self: @BadModelUnexpectedArgWithValueEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @BadModelUnexpectedArgWithValueEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -6211,11 +6442,11 @@ pub impl BadModelUnexpectedArgWithValueModelEntityImpl of dojo::model::ModelEnti entity_id: felt252, member_id: felt252, ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -6225,16 +6456,16 @@ pub impl BadModelUnexpectedArgWithValueModelEntityImpl of dojo::model::ModelEnti } fn set_member( - self: @BadModelUnexpectedArgWithValueEntity, + self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -6245,8 +6476,8 @@ pub impl BadModelUnexpectedArgWithValueModelEntityImpl of dojo::model::ModelEnti } } -pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelUnexpectedArgWithValue { +pub impl ModelWithBadNamespaceFormatModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithBadNamespaceFormat { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -6255,11 +6486,16 @@ pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model x, + Option::None => { + panic!("Model `ModelWithBadNamespaceFormat`: deserialization failed.") + } + } } fn set_model( - self: @BadModelUnexpectedArgWithValue, + self: @ModelWithBadNamespaceFormat, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -6272,7 +6508,7 @@ pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model @@ -6324,7 +6560,7 @@ pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model ByteArray { - "BadModelUnexpectedArgWithValue" + "ModelWithBadNamespaceFormat" } #[inline(always)] @@ -6334,7 +6570,7 @@ pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model ByteArray { - "dojo_test-BadModelUnexpectedArgWithValue" + "dojo_test-ModelWithBadNamespaceFormat" } #[inline(always)] @@ -6344,17 +6580,17 @@ pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model felt252 { - 1774601905279008934284028706234273692471613779453192873246657851412081197776 + 3339335350336894195883884955409923858499485801033572582237787132047489035817 } #[inline(always)] - fn instance_selector(self: @BadModelUnexpectedArgWithValue) -> felt252 { + fn instance_selector(self: @ModelWithBadNamespaceFormat) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 3586339245084542986020591057627093254376225984628310828088084183494435682971 + 513559242384681567568052881519197161166285694153303371154270254637843894159 } #[inline(always)] @@ -6363,20 +6599,20 @@ pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model felt252 { + fn entity_id(self: @ModelWithBadNamespaceFormat) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @BadModelUnexpectedArgWithValue) -> Span { + fn keys(self: @ModelWithBadNamespaceFormat) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); + core::serde::Serde::serialize(self.id, ref serialized); core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn values(self: @BadModelUnexpectedArgWithValue) -> Span { + fn values(self: @ModelWithBadNamespaceFormat) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.v, ref serialized); @@ -6385,11 +6621,11 @@ pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @BadModelUnexpectedArgWithValue) -> dojo::meta::Layout { + fn instance_layout(self: @ModelWithBadNamespaceFormat) -> dojo::meta::Layout { Self::layout() } @@ -6400,65 +6636,65 @@ pub impl BadModelUnexpectedArgWithValueModelImpl of dojo::model::Model { - fn ensure_abi(self: @T, model: BadModelUnexpectedArgWithValue); +pub trait Imodel_with_bad_namespace_format { + fn ensure_abi(self: @T, model: ModelWithBadNamespaceFormat); } #[starknet::contract] -pub mod bad_model_unexpected_arg_with_value { - use super::BadModelUnexpectedArgWithValue; - use super::Ibad_model_unexpected_arg_with_value; +pub mod model_with_bad_namespace_format { + use super::ModelWithBadNamespaceFormat; + use super::Imodel_with_bad_namespace_format; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() + dojo::model::Model::::layout() } fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl bad_model_unexpected_arg_with_valueImpl of Ibad_model_unexpected_arg_with_value{ - fn ensure_abi(self: @ContractState, model: BadModelUnexpectedArgWithValue) { + impl model_with_bad_namespace_formatImpl of Imodel_with_bad_namespace_format{ + fn ensure_abi(self: @ContractState, model: ModelWithBadNamespaceFormat) { } } #[event] @@ -6730,12 +6966,12 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::) -> Span:: { +fn __wrapper__model_with_bad_namespace_formatImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -6743,7 +6979,7 @@ fn __wrapper__bad_model_unexpected_arg_with_valueImpl__ensure_abi(mut data: Span core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', ); let mut contract_state = unsafe_new_contract_state(); - bad_model_unexpected_arg_with_valueImpl::ensure_abi(@contract_state, __arg_model); + model_with_bad_namespace_formatImpl::ensure_abi(@contract_state, __arg_model); let mut arr = ArrayTrait::new(); // References. // Result. @@ -6763,15136 +6999,7 @@ pub mod __external { pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; pub use super::__wrapper__DojoModelImpl__layout as layout; pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__bad_model_unexpected_arg_with_valueImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} - -impl BadModelUnexpectedArgIntrospect<> of dojo::meta::introspect::Introspect> { - #[inline(always)] - fn size() -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn layout() -> dojo::meta::Layout { - dojo::meta::Layout::Struct( - array![ - dojo::meta::FieldLayout { - selector: 578691550836206188651404750433984985630363913126316857592149308417275000080, - layout: dojo::meta::introspect::Introspect::::layout() - } - ].span() - ) - } - - #[inline(always)] - fn ty() -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Ty::Struct( - dojo::meta::introspect::Struct { - name: 'BadModelUnexpectedArg', - attrs: array![].span(), - children: array![ - dojo::meta::introspect::Member { - name: 'id', - attrs: array!['key'].span(), - ty: dojo::meta::introspect::Introspect::::ty() - }, -dojo::meta::introspect::Member { - name: 'v', - attrs: array![].span(), - ty: dojo::meta::introspect::Introspect::::ty() - } - - ].span() - } - ) - } -} - -#[derive(Drop, Serde)] -pub struct BadModelUnexpectedArgEntity { - __id: felt252, // private field - pub v: Vec3, -<<<<<<< HEAD - -} - -#[generate_trait] -pub impl BadModelUnexpectedArgEntityStoreImpl of BadModelUnexpectedArgEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelUnexpectedArgEntity { - BadModelUnexpectedArgModelEntityImpl::get(world, entity_id) - } - - fn update(self: @BadModelUnexpectedArgEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @BadModelUnexpectedArgEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `BadModelUnexpectedArg::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @BadModelUnexpectedArgEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl BadModelUnexpectedArgStoreImpl of BadModelUnexpectedArgStore { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> BadModelUnexpectedArg { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `BadModelUnexpectedArg`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelUnexpectedArg { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @BadModelUnexpectedArg, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @BadModelUnexpectedArg, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `BadModelUnexpectedArg::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @BadModelUnexpectedArg, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -pub impl BadModelUnexpectedArgModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @BadModelUnexpectedArgEntity) -> felt252 { - *self.__id - } - - fn values(self: @BadModelUnexpectedArgEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> BadModelUnexpectedArgEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `BadModelUnexpectedArgEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelUnexpectedArgEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @BadModelUnexpectedArgEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @BadModelUnexpectedArgEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @BadModelUnexpectedArgEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl BadModelUnexpectedArgModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelUnexpectedArg { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - BadModelUnexpectedArgStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @BadModelUnexpectedArg, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @BadModelUnexpectedArg, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @BadModelUnexpectedArg, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "BadModelUnexpectedArg" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-BadModelUnexpectedArg" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 285468224541147509570785281966044474829506125602814945625270991330973673529 - } - - #[inline(always)] - fn instance_selector(self: @BadModelUnexpectedArg) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 246403407829267991441535935236143476032296881039254363860883767387993960270 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @BadModelUnexpectedArg) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @BadModelUnexpectedArg) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @BadModelUnexpectedArg) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @BadModelUnexpectedArg) -> dojo::model::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Ibad_model_unexpected_arg { - fn ensure_abi(self: @T, model: BadModelUnexpectedArg); -} - -#[starknet::contract] -pub mod bad_model_unexpected_arg { - use super::BadModelUnexpectedArg; - use super::Ibad_model_unexpected_arg; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl bad_model_unexpected_argImpl of Ibad_model_unexpected_arg{ - fn ensure_abi(self: @ContractState, model: BadModelUnexpectedArg) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__bad_model_unexpected_argImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - bad_model_unexpected_argImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__bad_model_unexpected_argImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) - -} - -#[generate_trait] -pub impl BadModelUnexpectedArgEntityStoreImpl of BadModelUnexpectedArgEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelUnexpectedArgEntity { - BadModelUnexpectedArgModelEntityImpl::get(world, entity_id) - } - - fn update(self: @BadModelUnexpectedArgEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @BadModelUnexpectedArgEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `BadModelUnexpectedArg::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @BadModelUnexpectedArgEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl BadModelUnexpectedArgStoreImpl of BadModelUnexpectedArgStore { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> BadModelUnexpectedArg { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `BadModelUnexpectedArg`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelUnexpectedArg { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @BadModelUnexpectedArg, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @BadModelUnexpectedArg, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `BadModelUnexpectedArg::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @BadModelUnexpectedArg, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -pub impl BadModelUnexpectedArgModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @BadModelUnexpectedArgEntity) -> felt252 { - *self.__id - } - - fn values(self: @BadModelUnexpectedArgEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> BadModelUnexpectedArgEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `BadModelUnexpectedArgEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelUnexpectedArgEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @BadModelUnexpectedArgEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @BadModelUnexpectedArgEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @BadModelUnexpectedArgEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl BadModelUnexpectedArgModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelUnexpectedArg { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - BadModelUnexpectedArgStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @BadModelUnexpectedArg, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @BadModelUnexpectedArg, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @BadModelUnexpectedArg, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "BadModelUnexpectedArg" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-BadModelUnexpectedArg" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 285468224541147509570785281966044474829506125602814945625270991330973673529 - } - - #[inline(always)] - fn instance_selector(self: @BadModelUnexpectedArg) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 246403407829267991441535935236143476032296881039254363860883767387993960270 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @BadModelUnexpectedArg) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @BadModelUnexpectedArg) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @BadModelUnexpectedArg) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @BadModelUnexpectedArg) -> dojo::meta::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::meta::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Ibad_model_unexpected_arg { - fn ensure_abi(self: @T, model: BadModelUnexpectedArg); -} - -#[starknet::contract] -pub mod bad_model_unexpected_arg { - use super::BadModelUnexpectedArg; - use super::Ibad_model_unexpected_arg; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl bad_model_unexpected_argImpl of Ibad_model_unexpected_arg{ - fn ensure_abi(self: @ContractState, model: BadModelUnexpectedArg) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__bad_model_unexpected_argImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - bad_model_unexpected_argImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__bad_model_unexpected_argImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} - -impl BadModelNotSupportedVersionIntrospect<> of dojo::meta::introspect::Introspect> { - #[inline(always)] - fn size() -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn layout() -> dojo::meta::Layout { - dojo::meta::Layout::Struct( - array![ - dojo::meta::FieldLayout { - selector: 578691550836206188651404750433984985630363913126316857592149308417275000080, - layout: dojo::meta::introspect::Introspect::::layout() - } - ].span() - ) - } - - #[inline(always)] - fn ty() -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Ty::Struct( - dojo::meta::introspect::Struct { - name: 'BadModelNotSupportedVersion', - attrs: array![].span(), - children: array![ - dojo::meta::introspect::Member { - name: 'id', - attrs: array!['key'].span(), - ty: dojo::meta::introspect::Introspect::::ty() - }, -dojo::meta::introspect::Member { - name: 'v', - attrs: array![].span(), - ty: dojo::meta::introspect::Introspect::::ty() - } - - ].span() - } - ) - } -} - -#[derive(Drop, Serde)] -pub struct BadModelNotSupportedVersionEntity { - __id: felt252, // private field - pub v: Vec3, -<<<<<<< HEAD - -} - -#[generate_trait] -pub impl BadModelNotSupportedVersionEntityStoreImpl of BadModelNotSupportedVersionEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelNotSupportedVersionEntity { - BadModelNotSupportedVersionModelEntityImpl::get(world, entity_id) - } - - fn update(self: @BadModelNotSupportedVersionEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @BadModelNotSupportedVersionEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `BadModelNotSupportedVersion::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @BadModelNotSupportedVersionEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl BadModelNotSupportedVersionStoreImpl of BadModelNotSupportedVersionStore { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> BadModelNotSupportedVersion { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `BadModelNotSupportedVersion`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelNotSupportedVersion { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @BadModelNotSupportedVersion, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @BadModelNotSupportedVersion, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `BadModelNotSupportedVersion::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @BadModelNotSupportedVersion, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -pub impl BadModelNotSupportedVersionModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @BadModelNotSupportedVersionEntity) -> felt252 { - *self.__id - } - - fn values(self: @BadModelNotSupportedVersionEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> BadModelNotSupportedVersionEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `BadModelNotSupportedVersionEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelNotSupportedVersionEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @BadModelNotSupportedVersionEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @BadModelNotSupportedVersionEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @BadModelNotSupportedVersionEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl BadModelNotSupportedVersionModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelNotSupportedVersion { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - BadModelNotSupportedVersionStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @BadModelNotSupportedVersion, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @BadModelNotSupportedVersion, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @BadModelNotSupportedVersion, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "BadModelNotSupportedVersion" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-BadModelNotSupportedVersion" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 3364830312705791335907422218790599751780160858399843169712719310945970157661 - } - - #[inline(always)] - fn instance_selector(self: @BadModelNotSupportedVersion) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 1812257929012908024237871796629728977392496349235879470060252299886369485820 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @BadModelNotSupportedVersion) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @BadModelNotSupportedVersion) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @BadModelNotSupportedVersion) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @BadModelNotSupportedVersion) -> dojo::model::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Ibad_model_not_supported_version { - fn ensure_abi(self: @T, model: BadModelNotSupportedVersion); -} - -#[starknet::contract] -pub mod bad_model_not_supported_version { - use super::BadModelNotSupportedVersion; - use super::Ibad_model_not_supported_version; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl bad_model_not_supported_versionImpl of Ibad_model_not_supported_version{ - fn ensure_abi(self: @ContractState, model: BadModelNotSupportedVersion) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__bad_model_not_supported_versionImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - bad_model_not_supported_versionImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__bad_model_not_supported_versionImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) - -} - -#[generate_trait] -pub impl BadModelNotSupportedVersionEntityStoreImpl of BadModelNotSupportedVersionEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelNotSupportedVersionEntity { - BadModelNotSupportedVersionModelEntityImpl::get(world, entity_id) - } - - fn update(self: @BadModelNotSupportedVersionEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @BadModelNotSupportedVersionEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `BadModelNotSupportedVersion::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @BadModelNotSupportedVersionEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl BadModelNotSupportedVersionStoreImpl of BadModelNotSupportedVersionStore { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> BadModelNotSupportedVersion { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `BadModelNotSupportedVersion`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelNotSupportedVersion { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @BadModelNotSupportedVersion, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @BadModelNotSupportedVersion, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `BadModelNotSupportedVersion::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @BadModelNotSupportedVersion, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -pub impl BadModelNotSupportedVersionModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @BadModelNotSupportedVersionEntity) -> felt252 { - *self.__id - } - - fn values(self: @BadModelNotSupportedVersionEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> BadModelNotSupportedVersionEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `BadModelNotSupportedVersionEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> BadModelNotSupportedVersionEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @BadModelNotSupportedVersionEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @BadModelNotSupportedVersionEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @BadModelNotSupportedVersionEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl BadModelNotSupportedVersionModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> BadModelNotSupportedVersion { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - BadModelNotSupportedVersionStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @BadModelNotSupportedVersion, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @BadModelNotSupportedVersion, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @BadModelNotSupportedVersion, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "BadModelNotSupportedVersion" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-BadModelNotSupportedVersion" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 3364830312705791335907422218790599751780160858399843169712719310945970157661 - } - - #[inline(always)] - fn instance_selector(self: @BadModelNotSupportedVersion) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 1812257929012908024237871796629728977392496349235879470060252299886369485820 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @BadModelNotSupportedVersion) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @BadModelNotSupportedVersion) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @BadModelNotSupportedVersion) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @BadModelNotSupportedVersion) -> dojo::meta::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::meta::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Ibad_model_not_supported_version { - fn ensure_abi(self: @T, model: BadModelNotSupportedVersion); -} - -#[starknet::contract] -pub mod bad_model_not_supported_version { - use super::BadModelNotSupportedVersion; - use super::Ibad_model_not_supported_version; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl bad_model_not_supported_versionImpl of Ibad_model_not_supported_version{ - fn ensure_abi(self: @ContractState, model: BadModelNotSupportedVersion) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__bad_model_not_supported_versionImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - bad_model_not_supported_versionImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__bad_model_not_supported_versionImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} - -impl Modelv0Introspect<> of dojo::meta::introspect::Introspect> { - #[inline(always)] - fn size() -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn layout() -> dojo::meta::Layout { - dojo::meta::Layout::Struct( - array![ - dojo::meta::FieldLayout { - selector: 578691550836206188651404750433984985630363913126316857592149308417275000080, - layout: dojo::meta::introspect::Introspect::::layout() - } - ].span() - ) - } - - #[inline(always)] - fn ty() -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Ty::Struct( - dojo::meta::introspect::Struct { - name: 'Modelv0', - attrs: array![].span(), - children: array![ - dojo::meta::introspect::Member { - name: 'id', - attrs: array!['key'].span(), - ty: dojo::meta::introspect::Introspect::::ty() - }, -dojo::meta::introspect::Member { - name: 'v', - attrs: array![].span(), - ty: dojo::meta::introspect::Introspect::::ty() - } - - ].span() - } - ) - } -} - -#[derive(Drop, Serde)] -pub struct Modelv0Entity { - __id: felt252, // private field - pub v: Vec3, -<<<<<<< HEAD - -} - -#[generate_trait] -pub impl Modelv0EntityStoreImpl of Modelv0EntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Modelv0Entity { - Modelv0ModelEntityImpl::get(world, entity_id) - } - - fn update(self: @Modelv0Entity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @Modelv0Entity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `Modelv0::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @Modelv0Entity, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl Modelv0StoreImpl of Modelv0Store { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> Modelv0 { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `Modelv0`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> Modelv0 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @Modelv0, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @Modelv0, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `Modelv0::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @Modelv0, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -pub impl Modelv0ModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @Modelv0Entity) -> felt252 { - *self.__id - } - - fn values(self: @Modelv0Entity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> Modelv0Entity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `Modelv0Entity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Modelv0Entity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @Modelv0Entity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @Modelv0Entity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @Modelv0Entity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl Modelv0ModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> Modelv0 { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - Modelv0Store::from_values(ref _keys, ref values) - } - - fn set_model( - self: @Modelv0, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @Modelv0, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @Modelv0, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "Modelv0" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-Modelv0" - } - - #[inline(always)] - fn version() -> u8 { - 0 - } - - #[inline(always)] - fn selector() -> felt252 { - "Modelv0" - } - - #[inline(always)] - fn instance_selector(self: @Modelv0) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 2212879130471315306779111820244908968466545702031328551192231795237740448313 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @Modelv0) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @Modelv0) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @Modelv0) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @Modelv0) -> dojo::model::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Imodelv_0 { - fn ensure_abi(self: @T, model: Modelv0); -} - -#[starknet::contract] -pub mod modelv_0 { - use super::Modelv0; - use super::Imodelv_0; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl modelv_0Impl of Imodelv_0{ - fn ensure_abi(self: @ContractState, model: Modelv0) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__modelv_0Impl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - modelv_0Impl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__modelv_0Impl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) - -} - -#[generate_trait] -pub impl Modelv0EntityStoreImpl of Modelv0EntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Modelv0Entity { - Modelv0ModelEntityImpl::get(world, entity_id) - } - - fn update(self: @Modelv0Entity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @Modelv0Entity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `Modelv0::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @Modelv0Entity, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl Modelv0StoreImpl of Modelv0Store { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> Modelv0 { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `Modelv0`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> Modelv0 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @Modelv0, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @Modelv0, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `Modelv0::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @Modelv0, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -pub impl Modelv0ModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @Modelv0Entity) -> felt252 { - *self.__id - } - - fn values(self: @Modelv0Entity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> Modelv0Entity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `Modelv0Entity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Modelv0Entity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @Modelv0Entity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @Modelv0Entity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @Modelv0Entity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl Modelv0ModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> Modelv0 { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - Modelv0Store::from_values(ref _keys, ref values) - } - - fn set_model( - self: @Modelv0, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @Modelv0, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @Modelv0, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "Modelv0" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-Modelv0" - } - - #[inline(always)] - fn version() -> u8 { - 0 - } - - #[inline(always)] - fn selector() -> felt252 { - "Modelv0" - } - - #[inline(always)] - fn instance_selector(self: @Modelv0) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 2212879130471315306779111820244908968466545702031328551192231795237740448313 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @Modelv0) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @Modelv0) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @Modelv0) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @Modelv0) -> dojo::meta::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::meta::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Imodelv_0 { - fn ensure_abi(self: @T, model: Modelv0); -} - -#[starknet::contract] -pub mod modelv_0 { - use super::Modelv0; - use super::Imodelv_0; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl modelv_0Impl of Imodelv_0{ - fn ensure_abi(self: @ContractState, model: Modelv0) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__modelv_0Impl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - modelv_0Impl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__modelv_0Impl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} - -impl ModelWithBadNamespaceFormatIntrospect<> of dojo::meta::introspect::Introspect> { - #[inline(always)] - fn size() -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn layout() -> dojo::meta::Layout { - dojo::meta::Layout::Struct( - array![ - dojo::meta::FieldLayout { - selector: 578691550836206188651404750433984985630363913126316857592149308417275000080, - layout: dojo::meta::introspect::Introspect::::layout() - } - ].span() - ) - } - - #[inline(always)] - fn ty() -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Ty::Struct( - dojo::meta::introspect::Struct { - name: 'ModelWithBadNamespaceFormat', - attrs: array![].span(), - children: array![ - dojo::meta::introspect::Member { - name: 'id', - attrs: array!['key'].span(), - ty: dojo::meta::introspect::Introspect::::ty() - }, -dojo::meta::introspect::Member { - name: 'v', - attrs: array![].span(), - ty: dojo::meta::introspect::Introspect::::ty() - } - - ].span() - } - ) - } -} - -#[derive(Drop, Serde)] -pub struct ModelWithBadNamespaceFormatEntity { - __id: felt252, // private field - pub v: Vec3, -<<<<<<< HEAD - -} - -#[generate_trait] -pub impl ModelWithBadNamespaceFormatEntityStoreImpl of ModelWithBadNamespaceFormatEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithBadNamespaceFormatEntity { - ModelWithBadNamespaceFormatModelEntityImpl::get(world, entity_id) - } - - fn update(self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithBadNamespaceFormat::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl ModelWithBadNamespaceFormatStoreImpl of ModelWithBadNamespaceFormatStore { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> ModelWithBadNamespaceFormat { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `ModelWithBadNamespaceFormat`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> ModelWithBadNamespaceFormat { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @ModelWithBadNamespaceFormat, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @ModelWithBadNamespaceFormat, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithBadNamespaceFormat::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @ModelWithBadNamespaceFormat, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -pub impl ModelWithBadNamespaceFormatModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @ModelWithBadNamespaceFormatEntity) -> felt252 { - *self.__id - } - - fn values(self: @ModelWithBadNamespaceFormatEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> ModelWithBadNamespaceFormatEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `ModelWithBadNamespaceFormatEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithBadNamespaceFormatEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @ModelWithBadNamespaceFormatEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl ModelWithBadNamespaceFormatModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithBadNamespaceFormat { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - ModelWithBadNamespaceFormatStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @ModelWithBadNamespaceFormat, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @ModelWithBadNamespaceFormat, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @ModelWithBadNamespaceFormat, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "ModelWithBadNamespaceFormat" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-ModelWithBadNamespaceFormat" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 3339335350336894195883884955409923858499485801033572582237787132047489035817 - } - - #[inline(always)] - fn instance_selector(self: @ModelWithBadNamespaceFormat) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 513559242384681567568052881519197161166285694153303371154270254637843894159 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @ModelWithBadNamespaceFormat) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @ModelWithBadNamespaceFormat) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @ModelWithBadNamespaceFormat) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @ModelWithBadNamespaceFormat) -> dojo::model::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Imodel_with_bad_namespace_format { - fn ensure_abi(self: @T, model: ModelWithBadNamespaceFormat); -} - -#[starknet::contract] -pub mod model_with_bad_namespace_format { - use super::ModelWithBadNamespaceFormat; - use super::Imodel_with_bad_namespace_format; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl model_with_bad_namespace_formatImpl of Imodel_with_bad_namespace_format{ - fn ensure_abi(self: @ContractState, model: ModelWithBadNamespaceFormat) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__model_with_bad_namespace_formatImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - model_with_bad_namespace_formatImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__model_with_bad_namespace_formatImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) - -} - -#[generate_trait] -pub impl ModelWithBadNamespaceFormatEntityStoreImpl of ModelWithBadNamespaceFormatEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithBadNamespaceFormatEntity { - ModelWithBadNamespaceFormatModelEntityImpl::get(world, entity_id) - } - - fn update(self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithBadNamespaceFormat::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl ModelWithBadNamespaceFormatStoreImpl of ModelWithBadNamespaceFormatStore { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> ModelWithBadNamespaceFormat { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `ModelWithBadNamespaceFormat`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> ModelWithBadNamespaceFormat { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @ModelWithBadNamespaceFormat, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @ModelWithBadNamespaceFormat, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithBadNamespaceFormat::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @ModelWithBadNamespaceFormat, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -pub impl ModelWithBadNamespaceFormatModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @ModelWithBadNamespaceFormatEntity) -> felt252 { - *self.__id - } - - fn values(self: @ModelWithBadNamespaceFormatEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> ModelWithBadNamespaceFormatEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `ModelWithBadNamespaceFormatEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithBadNamespaceFormatEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @ModelWithBadNamespaceFormatEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @ModelWithBadNamespaceFormatEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl ModelWithBadNamespaceFormatModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithBadNamespaceFormat { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - ModelWithBadNamespaceFormatStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @ModelWithBadNamespaceFormat, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @ModelWithBadNamespaceFormat, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @ModelWithBadNamespaceFormat, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "ModelWithBadNamespaceFormat" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-ModelWithBadNamespaceFormat" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 3339335350336894195883884955409923858499485801033572582237787132047489035817 - } - - #[inline(always)] - fn instance_selector(self: @ModelWithBadNamespaceFormat) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 513559242384681567568052881519197161166285694153303371154270254637843894159 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @ModelWithBadNamespaceFormat) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @ModelWithBadNamespaceFormat) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @ModelWithBadNamespaceFormat) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @ModelWithBadNamespaceFormat) -> dojo::meta::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::meta::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Imodel_with_bad_namespace_format { - fn ensure_abi(self: @T, model: ModelWithBadNamespaceFormat); -} - -#[starknet::contract] -pub mod model_with_bad_namespace_format { - use super::ModelWithBadNamespaceFormat; - use super::Imodel_with_bad_namespace_format; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl model_with_bad_namespace_formatImpl of Imodel_with_bad_namespace_format{ - fn ensure_abi(self: @ContractState, model: ModelWithBadNamespaceFormat) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__model_with_bad_namespace_formatImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - model_with_bad_namespace_formatImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__model_with_bad_namespace_formatImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} - -impl ModelWithShortStringNamespaceIntrospect<> of dojo::meta::introspect::Introspect> { - #[inline(always)] - fn size() -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn layout() -> dojo::meta::Layout { - dojo::meta::Layout::Struct( - array![ - dojo::meta::FieldLayout { - selector: 578691550836206188651404750433984985630363913126316857592149308417275000080, - layout: dojo::meta::introspect::Introspect::::layout() - } - ].span() - ) - } - - #[inline(always)] - fn ty() -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Ty::Struct( - dojo::meta::introspect::Struct { - name: 'ModelWithShortStringNamespace', - attrs: array![].span(), - children: array![ - dojo::meta::introspect::Member { - name: 'id', - attrs: array!['key'].span(), - ty: dojo::meta::introspect::Introspect::::ty() - }, -dojo::meta::introspect::Member { - name: 'v', - attrs: array![].span(), - ty: dojo::meta::introspect::Introspect::::ty() - } - - ].span() - } - ) - } -} - -#[derive(Drop, Serde)] -pub struct ModelWithShortStringNamespaceEntity { - __id: felt252, // private field - pub v: Vec3, -<<<<<<< HEAD - -} - -#[generate_trait] -pub impl ModelWithShortStringNamespaceEntityStoreImpl of ModelWithShortStringNamespaceEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithShortStringNamespaceEntity { - ModelWithShortStringNamespaceModelEntityImpl::get(world, entity_id) - } - - fn update(self: @ModelWithShortStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @ModelWithShortStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithShortStringNamespace::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @ModelWithShortStringNamespaceEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl ModelWithShortStringNamespaceStoreImpl of ModelWithShortStringNamespaceStore { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> ModelWithShortStringNamespace { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `ModelWithShortStringNamespace`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> ModelWithShortStringNamespace { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @ModelWithShortStringNamespace, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @ModelWithShortStringNamespace, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithShortStringNamespace::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @ModelWithShortStringNamespace, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -pub impl ModelWithShortStringNamespaceModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @ModelWithShortStringNamespaceEntity) -> felt252 { - *self.__id - } - - fn values(self: @ModelWithShortStringNamespaceEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> ModelWithShortStringNamespaceEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `ModelWithShortStringNamespaceEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithShortStringNamespaceEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @ModelWithShortStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @ModelWithShortStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @ModelWithShortStringNamespaceEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl ModelWithShortStringNamespaceModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithShortStringNamespace { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - ModelWithShortStringNamespaceStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @ModelWithShortStringNamespace, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @ModelWithShortStringNamespace, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @ModelWithShortStringNamespace, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "ModelWithShortStringNamespace" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-ModelWithShortStringNamespace" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 3563011140946869267852628778244415212055246902495528859686589254859279333005 - } - - #[inline(always)] - fn instance_selector(self: @ModelWithShortStringNamespace) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 4646597166239297873853881466258165424425132957303541470648153031188639878 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @ModelWithShortStringNamespace) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @ModelWithShortStringNamespace) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @ModelWithShortStringNamespace) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @ModelWithShortStringNamespace) -> dojo::model::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Imodel_with_short_string_namespace { - fn ensure_abi(self: @T, model: ModelWithShortStringNamespace); -} - -#[starknet::contract] -pub mod model_with_short_string_namespace { - use super::ModelWithShortStringNamespace; - use super::Imodel_with_short_string_namespace; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl model_with_short_string_namespaceImpl of Imodel_with_short_string_namespace{ - fn ensure_abi(self: @ContractState, model: ModelWithShortStringNamespace) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__model_with_short_string_namespaceImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - model_with_short_string_namespaceImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__model_with_short_string_namespaceImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) - -} - -#[generate_trait] -pub impl ModelWithShortStringNamespaceEntityStoreImpl of ModelWithShortStringNamespaceEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithShortStringNamespaceEntity { - ModelWithShortStringNamespaceModelEntityImpl::get(world, entity_id) - } - - fn update(self: @ModelWithShortStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @ModelWithShortStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithShortStringNamespace::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @ModelWithShortStringNamespaceEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl ModelWithShortStringNamespaceStoreImpl of ModelWithShortStringNamespaceStore { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> ModelWithShortStringNamespace { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `ModelWithShortStringNamespace`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> ModelWithShortStringNamespace { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @ModelWithShortStringNamespace, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @ModelWithShortStringNamespace, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithShortStringNamespace::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @ModelWithShortStringNamespace, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -pub impl ModelWithShortStringNamespaceModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @ModelWithShortStringNamespaceEntity) -> felt252 { - *self.__id - } - - fn values(self: @ModelWithShortStringNamespaceEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> ModelWithShortStringNamespaceEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `ModelWithShortStringNamespaceEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithShortStringNamespaceEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @ModelWithShortStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @ModelWithShortStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @ModelWithShortStringNamespaceEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl ModelWithShortStringNamespaceModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithShortStringNamespace { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - ModelWithShortStringNamespaceStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @ModelWithShortStringNamespace, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @ModelWithShortStringNamespace, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @ModelWithShortStringNamespace, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "ModelWithShortStringNamespace" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-ModelWithShortStringNamespace" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 3563011140946869267852628778244415212055246902495528859686589254859279333005 - } - - #[inline(always)] - fn instance_selector(self: @ModelWithShortStringNamespace) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 4646597166239297873853881466258165424425132957303541470648153031188639878 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @ModelWithShortStringNamespace) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @ModelWithShortStringNamespace) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @ModelWithShortStringNamespace) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @ModelWithShortStringNamespace) -> dojo::meta::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::meta::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Imodel_with_short_string_namespace { - fn ensure_abi(self: @T, model: ModelWithShortStringNamespace); -} - -#[starknet::contract] -pub mod model_with_short_string_namespace { - use super::ModelWithShortStringNamespace; - use super::Imodel_with_short_string_namespace; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl model_with_short_string_namespaceImpl of Imodel_with_short_string_namespace{ - fn ensure_abi(self: @ContractState, model: ModelWithShortStringNamespace) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__model_with_short_string_namespaceImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - model_with_short_string_namespaceImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__model_with_short_string_namespaceImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} - -impl ModelWithStringNamespaceIntrospect<> of dojo::meta::introspect::Introspect> { - #[inline(always)] - fn size() -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn layout() -> dojo::meta::Layout { - dojo::meta::Layout::Struct( - array![ - dojo::meta::FieldLayout { - selector: 578691550836206188651404750433984985630363913126316857592149308417275000080, - layout: dojo::meta::introspect::Introspect::::layout() - } - ].span() - ) - } - - #[inline(always)] - fn ty() -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Ty::Struct( - dojo::meta::introspect::Struct { - name: 'ModelWithStringNamespace', - attrs: array![].span(), - children: array![ - dojo::meta::introspect::Member { - name: 'id', - attrs: array!['key'].span(), - ty: dojo::meta::introspect::Introspect::::ty() - }, -dojo::meta::introspect::Member { - name: 'v', - attrs: array![].span(), - ty: dojo::meta::introspect::Introspect::::ty() - } - - ].span() - } - ) - } -} - -#[derive(Drop, Serde)] -pub struct ModelWithStringNamespaceEntity { - __id: felt252, // private field - pub v: Vec3, -<<<<<<< HEAD - -} - -#[generate_trait] -pub impl ModelWithStringNamespaceEntityStoreImpl of ModelWithStringNamespaceEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithStringNamespaceEntity { - ModelWithStringNamespaceModelEntityImpl::get(world, entity_id) - } - - fn update(self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithStringNamespace::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl ModelWithStringNamespaceStoreImpl of ModelWithStringNamespaceStore { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> ModelWithStringNamespace { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `ModelWithStringNamespace`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> ModelWithStringNamespace { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @ModelWithStringNamespace, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @ModelWithStringNamespace, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithStringNamespace::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @ModelWithStringNamespace, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -pub impl ModelWithStringNamespaceModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @ModelWithStringNamespaceEntity) -> felt252 { - *self.__id - } - - fn values(self: @ModelWithStringNamespaceEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> ModelWithStringNamespaceEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `ModelWithStringNamespaceEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithStringNamespaceEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @ModelWithStringNamespaceEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl ModelWithStringNamespaceModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithStringNamespace { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - ModelWithStringNamespaceStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @ModelWithStringNamespace, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @ModelWithStringNamespace, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @ModelWithStringNamespace, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "ModelWithStringNamespace" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-ModelWithStringNamespace" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 3428238780389029245974129676124052799610748885939447299287640410044966811336 - } - - #[inline(always)] - fn instance_selector(self: @ModelWithStringNamespace) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 36187013840655350498900857372670392628596870210415176261336407419317644423 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @ModelWithStringNamespace) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @ModelWithStringNamespace) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @ModelWithStringNamespace) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @ModelWithStringNamespace) -> dojo::model::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Imodel_with_string_namespace { - fn ensure_abi(self: @T, model: ModelWithStringNamespace); -} - -#[starknet::contract] -pub mod model_with_string_namespace { - use super::ModelWithStringNamespace; - use super::Imodel_with_string_namespace; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl model_with_string_namespaceImpl of Imodel_with_string_namespace{ - fn ensure_abi(self: @ContractState, model: ModelWithStringNamespace) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__model_with_string_namespaceImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - model_with_string_namespaceImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__model_with_string_namespaceImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) - -} - -#[generate_trait] -pub impl ModelWithStringNamespaceEntityStoreImpl of ModelWithStringNamespaceEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithStringNamespaceEntity { - ModelWithStringNamespaceModelEntityImpl::get(world, entity_id) - } - - fn update(self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithStringNamespace::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl ModelWithStringNamespaceStoreImpl of ModelWithStringNamespaceStore { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> ModelWithStringNamespace { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `ModelWithStringNamespace`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> ModelWithStringNamespace { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @ModelWithStringNamespace, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @ModelWithStringNamespace, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithStringNamespace::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @ModelWithStringNamespace, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -pub impl ModelWithStringNamespaceModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @ModelWithStringNamespaceEntity) -> felt252 { - *self.__id - } - - fn values(self: @ModelWithStringNamespaceEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> ModelWithStringNamespaceEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `ModelWithStringNamespaceEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithStringNamespaceEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @ModelWithStringNamespaceEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl ModelWithStringNamespaceModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithStringNamespace { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - ModelWithStringNamespaceStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @ModelWithStringNamespace, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @ModelWithStringNamespace, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @ModelWithStringNamespace, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "ModelWithStringNamespace" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-ModelWithStringNamespace" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 3428238780389029245974129676124052799610748885939447299287640410044966811336 - } - - #[inline(always)] - fn instance_selector(self: @ModelWithStringNamespace) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 36187013840655350498900857372670392628596870210415176261336407419317644423 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @ModelWithStringNamespace) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @ModelWithStringNamespace) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @ModelWithStringNamespace) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @ModelWithStringNamespace) -> dojo::meta::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::meta::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Imodel_with_string_namespace { - fn ensure_abi(self: @T, model: ModelWithStringNamespace); -} - -#[starknet::contract] -pub mod model_with_string_namespace { - use super::ModelWithStringNamespace; - use super::Imodel_with_string_namespace; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl model_with_string_namespaceImpl of Imodel_with_string_namespace{ - fn ensure_abi(self: @ContractState, model: ModelWithStringNamespace) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__model_with_string_namespaceImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - model_with_string_namespaceImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__model_with_string_namespaceImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} - -impl PositionIntrospect<> of dojo::meta::introspect::Introspect> { - #[inline(always)] - fn size() -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn layout() -> dojo::meta::Layout { - dojo::meta::Layout::Struct( - array![ - dojo::meta::FieldLayout { - selector: 578691550836206188651404750433984985630363913126316857592149308417275000080, - layout: dojo::meta::introspect::Introspect::::layout() - } - ].span() - ) - } - - #[inline(always)] - fn ty() -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Ty::Struct( - dojo::meta::introspect::Struct { - name: 'Position', - attrs: array![].span(), - children: array![ - dojo::meta::introspect::Member { - name: 'id', - attrs: array!['key'].span(), - ty: dojo::meta::introspect::Introspect::::ty() - }, -dojo::meta::introspect::Member { - name: 'v', - attrs: array![].span(), - ty: dojo::meta::introspect::Introspect::::ty() - } - - ].span() - } - ) - } -} - -#[derive(Drop, Serde)] -pub struct PositionEntity { - __id: felt252, // private field - pub v: Vec3, -<<<<<<< HEAD - -} - -#[generate_trait] -pub impl PositionEntityStoreImpl of PositionEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> PositionEntity { - PositionModelEntityImpl::get(world, entity_id) - } - - fn update(self: @PositionEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @PositionEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `Position::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @PositionEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl PositionStoreImpl of PositionStore { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> Position { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `Position`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> Position { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @Position, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @Position, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `Position::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @Position, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -pub impl PositionModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @PositionEntity) -> felt252 { - *self.__id - } - - fn values(self: @PositionEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> PositionEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `PositionEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> PositionEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @PositionEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @PositionEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @PositionEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl PositionModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> Position { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - PositionStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @Position, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @Position, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @Position, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "Position" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-Position" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 1782729361185285637005619480739442196364037716000358448825261820703351159758 - } - - #[inline(always)] - fn instance_selector(self: @Position) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 2899920299641094436341712346886623904698864491830316325765258522168980161362 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @Position) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @Position) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @Position) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @Position) -> dojo::model::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Iposition { - fn ensure_abi(self: @T, model: Position); -} - -#[starknet::contract] -pub mod position { - use super::Position; - use super::Iposition; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl positionImpl of Iposition{ - fn ensure_abi(self: @ContractState, model: Position) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__positionImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - positionImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__positionImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) - -} - -#[generate_trait] -pub impl PositionEntityStoreImpl of PositionEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> PositionEntity { - PositionModelEntityImpl::get(world, entity_id) - } - - fn update(self: @PositionEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @PositionEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `Position::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @PositionEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl PositionStoreImpl of PositionStore { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> Position { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `Position`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> Position { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @Position, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @Position, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 578691550836206188651404750433984985630363913126316857592149308417275000080 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `Position::v`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_v(self: @Position, world: dojo::world::IWorldDispatcher, value: Vec3) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 578691550836206188651404750433984985630363913126316857592149308417275000080, - serialized.span() - ); - } - -} - -pub impl PositionModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @PositionEntity) -> felt252 { - *self.__id - } - - fn values(self: @PositionEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> PositionEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `PositionEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> PositionEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @PositionEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @PositionEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @PositionEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl PositionModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> Position { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - PositionStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @Position, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @Position, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @Position, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "Position" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-Position" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 1782729361185285637005619480739442196364037716000358448825261820703351159758 - } - - #[inline(always)] - fn instance_selector(self: @Position) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 2899920299641094436341712346886623904698864491830316325765258522168980161362 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @Position) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @Position) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @Position) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.v, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @Position) -> dojo::meta::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::meta::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Iposition { - fn ensure_abi(self: @T, model: Position); -} - -#[starknet::contract] -pub mod position { - use super::Position; - use super::Iposition; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl positionImpl of Iposition{ - fn ensure_abi(self: @ContractState, model: Position) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__positionImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - positionImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__positionImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} - -impl RolesIntrospect<> of dojo::meta::introspect::Introspect> { - #[inline(always)] - fn size() -> Option { - Option::None - } - - fn layout() -> dojo::meta::Layout { - dojo::meta::Layout::Struct( - array![ - dojo::meta::FieldLayout { - selector: 387776731289756409274549987067854286905927440612427426920343953432870065647, - layout: dojo::meta::introspect::Introspect:: ->::layout() - } - ].span() - ) - } - - #[inline(always)] - fn ty() -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Ty::Struct( - dojo::meta::introspect::Struct { - name: 'Roles', - attrs: array![].span(), - children: array![ - dojo::meta::introspect::Member { - name: 'role_ids', - attrs: array![].span(), - ty: dojo::meta::introspect::Ty::Array( - array![ - dojo::meta::introspect::Introspect::::ty() - ].span() - ) - } - - ].span() - } - ) - } -} - -#[derive(Drop, Serde)] -pub struct RolesEntity { - __id: felt252, // private field - pub role_ids: Array, -<<<<<<< HEAD - -} - -#[generate_trait] -pub impl RolesEntityStoreImpl of RolesEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> RolesEntity { - RolesModelEntityImpl::get(world, entity_id) - } - - fn update(self: @RolesEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @RolesEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_role_ids(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Array { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 387776731289756409274549987067854286905927440612427426920343953432870065647 - ); - let field_value = core::serde::Serde::>::deserialize(ref values); - - if core::option::OptionTrait::>::is_none(@field_value) { - panic!( - "Field `Roles::role_ids`: deserialization failed." - ); - } - - core::option::OptionTrait::>::unwrap(field_value) - } - - fn set_role_ids(self: @RolesEntity, world: dojo::world::IWorldDispatcher, value: Array) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 387776731289756409274549987067854286905927440612427426920343953432870065647, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl RolesStoreImpl of RolesStore { - fn entity_id_from_keys() -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> Roles { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `Roles`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, ) -> Roles { - let mut serialized = core::array::ArrayTrait::new(); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @Roles, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @Roles, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_role_ids(world: dojo::world::IWorldDispatcher, ) -> Array { - let mut serialized = core::array::ArrayTrait::new(); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 387776731289756409274549987067854286905927440612427426920343953432870065647 - ); - - let field_value = core::serde::Serde::>::deserialize(ref values); - - if core::option::OptionTrait::>::is_none(@field_value) { - panic!( - "Field `Roles::role_ids`: deserialization failed." - ); - } - - core::option::OptionTrait::>::unwrap(field_value) - } - - fn set_role_ids(self: @Roles, world: dojo::world::IWorldDispatcher, value: Array) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 387776731289756409274549987067854286905927440612427426920343953432870065647, - serialized.span() - ); - } - -} - -pub impl RolesModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @RolesEntity) -> felt252 { - *self.__id - } - - fn values(self: @RolesEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.role_ids, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> RolesEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `RolesEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> RolesEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @RolesEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @RolesEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @RolesEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl RolesModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> Roles { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - RolesStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @Roles, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @Roles, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @Roles, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "Roles" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-Roles" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 3584099896964965841643389141246184155284218827427504603233100831001054183182 - } - - #[inline(always)] - fn instance_selector(self: @Roles) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 2030971736961612564423689930729061756599290850089001157163423482274886199516 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @Roles) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @Roles) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @Roles) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.role_ids, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @Roles) -> dojo::model::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Iroles { - fn ensure_abi(self: @T, model: Roles); -} - -#[starknet::contract] -pub mod roles { - use super::Roles; - use super::Iroles; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl rolesImpl of Iroles{ - fn ensure_abi(self: @ContractState, model: Roles) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__rolesImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - rolesImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__rolesImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) - -} - -#[generate_trait] -pub impl RolesEntityStoreImpl of RolesEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> RolesEntity { - RolesModelEntityImpl::get(world, entity_id) - } - - fn update(self: @RolesEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @RolesEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - - fn get_role_ids(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Array { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 387776731289756409274549987067854286905927440612427426920343953432870065647 - ); - let field_value = core::serde::Serde::>::deserialize(ref values); - - if core::option::OptionTrait::>::is_none(@field_value) { - panic!( - "Field `Roles::role_ids`: deserialization failed." - ); - } - - core::option::OptionTrait::>::unwrap(field_value) - } - - fn set_role_ids(self: @RolesEntity, world: dojo::world::IWorldDispatcher, value: Array) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 387776731289756409274549987067854286905927440612427426920343953432870065647, - serialized.span() - ); - } - -} - -#[generate_trait] -pub impl RolesStoreImpl of RolesStore { - fn entity_id_from_keys() -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> Roles { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `Roles`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, ) -> Roles { - let mut serialized = core::array::ArrayTrait::new(); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @Roles, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @Roles, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - - fn get_role_ids(world: dojo::world::IWorldDispatcher, ) -> Array { - let mut serialized = core::array::ArrayTrait::new(); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 387776731289756409274549987067854286905927440612427426920343953432870065647 - ); - - let field_value = core::serde::Serde::>::deserialize(ref values); - - if core::option::OptionTrait::>::is_none(@field_value) { - panic!( - "Field `Roles::role_ids`: deserialization failed." - ); - } - - core::option::OptionTrait::>::unwrap(field_value) - } - - fn set_role_ids(self: @Roles, world: dojo::world::IWorldDispatcher, value: Array) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 387776731289756409274549987067854286905927440612427426920343953432870065647, - serialized.span() - ); - } - -} - -pub impl RolesModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @RolesEntity) -> felt252 { - *self.__id - } - - fn values(self: @RolesEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.role_ids, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> RolesEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `RolesEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> RolesEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @RolesEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @RolesEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @RolesEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl RolesModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> Roles { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - RolesStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @Roles, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @Roles, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @Roles, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "Roles" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-Roles" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 3584099896964965841643389141246184155284218827427504603233100831001054183182 - } - - #[inline(always)] - fn instance_selector(self: @Roles) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 2030971736961612564423689930729061756599290850089001157163423482274886199516 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @Roles) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @Roles) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @Roles) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.role_ids, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @Roles) -> dojo::meta::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::meta::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Iroles { - fn ensure_abi(self: @T, model: Roles); -} - -#[starknet::contract] -pub mod roles { - use super::Roles; - use super::Iroles; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl rolesImpl of Iroles{ - fn ensure_abi(self: @ContractState, model: Roles) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__rolesImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - rolesImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__rolesImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} - -impl OnlyKeyModelIntrospect<> of dojo::meta::introspect::Introspect> { - #[inline(always)] - fn size() -> Option { - Option::None - } - - fn layout() -> dojo::meta::Layout { - dojo::meta::Layout::Struct( - array![ - - ].span() - ) - } - - #[inline(always)] - fn ty() -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Ty::Struct( - dojo::meta::introspect::Struct { - name: 'OnlyKeyModel', - attrs: array![].span(), - children: array![ - dojo::meta::introspect::Member { - name: 'id', - attrs: array!['key'].span(), - ty: dojo::meta::introspect::Introspect::::ty() - } - - ].span() - } - ) - } -} - -#[derive(Drop, Serde)] -pub struct OnlyKeyModelEntity { - __id: felt252, // private field - -} -<<<<<<< HEAD - -#[generate_trait] -pub impl OnlyKeyModelEntityStoreImpl of OnlyKeyModelEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> OnlyKeyModelEntity { - OnlyKeyModelModelEntityImpl::get(world, entity_id) - } - - fn update(self: @OnlyKeyModelEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @OnlyKeyModelEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - -} - -#[generate_trait] -pub impl OnlyKeyModelStoreImpl of OnlyKeyModelStore { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> OnlyKeyModel { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `OnlyKeyModel`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> OnlyKeyModel { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @OnlyKeyModel, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @OnlyKeyModel, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - -} - -pub impl OnlyKeyModelModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @OnlyKeyModelEntity) -> felt252 { - *self.__id - } - - fn values(self: @OnlyKeyModelEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> OnlyKeyModelEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `OnlyKeyModelEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> OnlyKeyModelEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @OnlyKeyModelEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @OnlyKeyModelEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @OnlyKeyModelEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl OnlyKeyModelModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> OnlyKeyModel { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - OnlyKeyModelStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @OnlyKeyModel, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @OnlyKeyModel, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @OnlyKeyModel, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "OnlyKeyModel" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-OnlyKeyModel" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 2309092000941816896446401231215693966290521919639503466118437426986900396853 - } - - #[inline(always)] - fn instance_selector(self: @OnlyKeyModel) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 1001826121797570811408809643478760373535949956555931325019299477987282578617 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @OnlyKeyModel) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @OnlyKeyModel) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @OnlyKeyModel) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @OnlyKeyModel) -> dojo::model::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Ionly_key_model { - fn ensure_abi(self: @T, model: OnlyKeyModel); -} - -#[starknet::contract] -pub mod only_key_model { - use super::OnlyKeyModel; - use super::Ionly_key_model; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl only_key_modelImpl of Ionly_key_model{ - fn ensure_abi(self: @ContractState, model: OnlyKeyModel) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__only_key_modelImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - only_key_modelImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__only_key_modelImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) - -#[generate_trait] -pub impl OnlyKeyModelEntityStoreImpl of OnlyKeyModelEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> OnlyKeyModelEntity { - OnlyKeyModelModelEntityImpl::get(world, entity_id) - } - - fn update(self: @OnlyKeyModelEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @OnlyKeyModelEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - -} - -#[generate_trait] -pub impl OnlyKeyModelStoreImpl of OnlyKeyModelStore { - fn entity_id_from_keys(id: felt252) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> OnlyKeyModel { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `OnlyKeyModel`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> OnlyKeyModel { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, id); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @OnlyKeyModel, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @OnlyKeyModel, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - -} - -pub impl OnlyKeyModelModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @OnlyKeyModelEntity) -> felt252 { - *self.__id - } - - fn values(self: @OnlyKeyModelEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> OnlyKeyModelEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `OnlyKeyModelEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> OnlyKeyModelEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @OnlyKeyModelEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @OnlyKeyModelEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @OnlyKeyModelEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl OnlyKeyModelModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> OnlyKeyModel { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - OnlyKeyModelStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @OnlyKeyModel, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @OnlyKeyModel, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @OnlyKeyModel, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "OnlyKeyModel" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-OnlyKeyModel" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 2309092000941816896446401231215693966290521919639503466118437426986900396853 - } - - #[inline(always)] - fn instance_selector(self: @OnlyKeyModel) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 1001826121797570811408809643478760373535949956555931325019299477987282578617 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @OnlyKeyModel) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @OnlyKeyModel) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.id); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @OnlyKeyModel) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @OnlyKeyModel) -> dojo::meta::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::meta::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Ionly_key_model { - fn ensure_abi(self: @T, model: OnlyKeyModel); -} - -#[starknet::contract] -pub mod only_key_model { - use super::OnlyKeyModel; - use super::Ionly_key_model; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl only_key_modelImpl of Ionly_key_model{ - fn ensure_abi(self: @ContractState, model: OnlyKeyModel) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__only_key_modelImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - only_key_modelImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__only_key_modelImpl__ensure_abi as ensure_abi; -} -pub mod __l1_handler { -} -pub mod __constructor { -} - impl ContractStateEventEmitter of starknet::event::EventEmitter< - ContractState, Event - > { - fn emit>( - ref self: ContractState, event: S - ) { - let event: Event = core::traits::Into::into(event); - let mut keys = Default::::default(); - let mut data = Default::::default(); - starknet::Event::append_keys_and_data(@event, ref keys, ref data); - starknet::SyscallResultTrait::unwrap_syscall( - starknet::syscalls::emit_event_syscall( - core::array::ArrayTrait::span(@keys), - core::array::ArrayTrait::span(@data), - ) - ) - } - } -impl EventDrop of core::traits::Drop::; -impl EventIsEvent of starknet::Event { - fn append_keys_and_data( - self: @Event, ref keys: Array, ref data: Array - ) { - match self { - } - } - fn deserialize( - ref keys: Span, ref data: Span, - ) -> Option { - let __selector__ = *core::array::SpanTrait::pop_front(ref keys)?; - Option::None - } -} -impl StorageStorageBaseDrop of core::traits::Drop::; -impl StorageStorageBaseCopy of core::traits::Copy::; -impl StorageStorageBaseMutDrop of core::traits::Drop::; -impl StorageStorageBaseMutCopy of core::traits::Copy::; -} - -impl U256KeyModelIntrospect<> of dojo::meta::introspect::Introspect> { - #[inline(always)] - fn size() -> Option { - Option::None - } - - fn layout() -> dojo::meta::Layout { - dojo::meta::Layout::Struct( - array![ - - ].span() - ) - } - - #[inline(always)] - fn ty() -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Ty::Struct( - dojo::meta::introspect::Struct { - name: 'U256KeyModel', - attrs: array![].span(), - children: array![ - dojo::meta::introspect::Member { - name: 'id', - attrs: array!['key'].span(), - ty: dojo::meta::introspect::Introspect::::ty() - } - - ].span() - } - ) - } -} - -#[derive(Drop, Serde)] -pub struct U256KeyModelEntity { - __id: felt252, // private field - -} -<<<<<<< HEAD - -#[generate_trait] -pub impl U256KeyModelEntityStoreImpl of U256KeyModelEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> U256KeyModelEntity { - U256KeyModelModelEntityImpl::get(world, entity_id) - } - - fn update(self: @U256KeyModelEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); - } - - fn delete(self: @U256KeyModelEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } - - -} - -#[generate_trait] -pub impl U256KeyModelStoreImpl of U256KeyModelStore { - fn entity_id_from_keys(id: u256) -> felt252 { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@id, ref serialized); - - core::poseidon::poseidon_hash_span(serialized.span()) - } - - fn from_values(ref keys: Span, ref values: Span) -> U256KeyModel { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `U256KeyModel`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - - core::option::OptionTrait::::unwrap(entity) - } - - fn get(world: dojo::world::IWorldDispatcher, id: u256) -> U256KeyModel { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@id, ref serialized); - - - dojo::model::Model::::get(world, serialized.span()) - } - - fn set(self: @U256KeyModel, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); - } - - fn delete(self: @U256KeyModel, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); - } - - -} - -pub impl U256KeyModelModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @U256KeyModelEntity) -> felt252 { - *self.__id - } - - fn values(self: @U256KeyModelEntity) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - - core::array::ArrayTrait::span(@serialized) - } - - fn from_values(entity_id: felt252, ref values: Span) -> U256KeyModelEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `U256KeyModelEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) - } - - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> U256KeyModelEntity { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() - ); - Self::from_values(entity_id, ref values) - } - - fn update_entity(self: @U256KeyModelEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - self.values(), - dojo::model::Model::::layout() - ); - } - - fn delete_entity(self: @U256KeyModelEntity, world: dojo::world::IWorldDispatcher) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - entity_id: felt252, - member_id: felt252, - ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @U256KeyModelEntity, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span, - ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - dojo::model::Model::::selector(), - dojo::model::ModelIndex::MemberId((self.id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } -} - -pub impl U256KeyModelModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> U256KeyModel { - let mut values = dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(keys), - Self::layout() - ); - let mut _keys = keys; - - U256KeyModelStore::from_values(ref _keys, ref values) - } - - fn set_model( - self: @U256KeyModel, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::values(self), - Self::layout() - ); - } - - fn delete_model( - self: @U256KeyModel, - world: dojo::world::IWorldDispatcher - ) { - dojo::world::IWorldDispatcherTrait::delete_entity( - world, - Self::selector(), - dojo::model::ModelIndex::Keys(Self::keys(self)), - Self::layout() - ); - } - - fn get_member( - world: dojo::world::IWorldDispatcher, - keys: Span, - member_id: felt252 - ) -> Span { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - let entity_id = dojo::utils::entity_id_from_keys(keys); - dojo::world::IWorldDispatcherTrait::entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((entity_id, member_id)), - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - fn set_member( - self: @U256KeyModel, - world: dojo::world::IWorldDispatcher, - member_id: felt252, - values: Span - ) { - match dojo::utils::find_model_field_layout(Self::layout(), member_id) { - Option::Some(field_layout) => { - dojo::world::IWorldDispatcherTrait::set_entity( - world, - Self::selector(), - dojo::model::ModelIndex::MemberId((self.entity_id(), member_id)), - values, - field_layout - ) - }, - Option::None => core::panic_with_felt252('bad member id') - } - } - - #[inline(always)] - fn name() -> ByteArray { - "U256KeyModel" - } - - #[inline(always)] - fn namespace() -> ByteArray { - "dojo_test" - } - - #[inline(always)] - fn tag() -> ByteArray { - "dojo_test-U256KeyModel" - } - - #[inline(always)] - fn version() -> u8 { - 1 - } - - #[inline(always)] - fn selector() -> felt252 { - 2221887666320363067192826725795502610968343119143207326025439486865385474790 - } - - #[inline(always)] - fn instance_selector(self: @U256KeyModel) -> felt252 { - Self::selector() - } - - #[inline(always)] - fn name_hash() -> felt252 { - 1848733002266458148515852001373055968326209639346734967305014900020806934517 - } - - #[inline(always)] - fn namespace_hash() -> felt252 { - 1452123528942907587532668415362544424816022573043154497385993678618948064048 - } - - #[inline(always)] - fn entity_id(self: @U256KeyModel) -> felt252 { - core::poseidon::poseidon_hash_span(self.keys()) - } - - #[inline(always)] - fn keys(self: @U256KeyModel) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.id, ref serialized); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn values(self: @U256KeyModel) -> Span { - let mut serialized = core::array::ArrayTrait::new(); - - core::array::ArrayTrait::span(@serialized) - } - - #[inline(always)] - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @U256KeyModel) -> dojo::model::Layout { - Self::layout() - } - - #[inline(always)] - fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) - } -} - -#[starknet::interface] -pub trait Iu_256_key_model { - fn ensure_abi(self: @T, model: U256KeyModel); -} - -#[starknet::contract] -pub mod u_256_key_model { - use super::U256KeyModel; - use super::Iu_256_key_model; - - #[abi(embed_v0)] - impl DojoModelImpl of dojo::model::IModel{ - fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() - } - - fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() - } - - fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() - } - - fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() - } - - fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() - } - - fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() - } - - fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() - } - - fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() - } - - fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() - } - - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() - } - } - - #[abi(embed_v0)] - impl u_256_key_modelImpl of Iu_256_key_model{ - fn ensure_abi(self: @ContractState, model: U256KeyModel) { - } - } -#[event] -#[derive(Drop, starknet::Event)] -pub enum Event {} - - -#[phantom] -pub struct Storage { -} - -#[derive(Drop, Copy)] -pub struct StorageStorageBase { -} -impl StorageStorageImpl of starknet::storage::StorageTrait { - type BaseType = StorageStorageBase; - fn storage(self: starknet::storage::FlattenedStorage) -> StorageStorageBase { - StorageStorageBase { - } - } -} -#[derive(Drop, Copy)] -pub struct StorageStorageBaseMut { -} -impl StorageStorageMutImpl of starknet::storage::StorageTraitMut { - type BaseType = StorageStorageBaseMut; - fn storage_mut(self: starknet::storage::FlattenedStorage>) -> StorageStorageBaseMut { - StorageStorageBaseMut { - } - } -} - -pub struct ContractState { -} - -impl ContractStateDrop of Drop {} - -impl ContractStateDeref of core::ops::SnapshotDeref { - type Target = starknet::storage::FlattenedStorage; - fn snapshot_deref(self: @ContractState) -> starknet::storage::FlattenedStorage { - starknet::storage::FlattenedStorage {} - } -} -impl ContractStateDerefMut of core::ops::DerefMut { - type Target = starknet::storage::FlattenedStorage> ; - fn deref_mut(ref self: ContractState) -> starknet::storage::FlattenedStorage> { - starknet::storage::FlattenedStorage {} - } -} -pub fn unsafe_new_contract_state() -> ContractState { - ContractState { - } -} - -// TODO(Gil): This generates duplicate diagnostics because of the plugin system, squash the duplicates into one. -#[deprecated( - feature: "deprecated_legacy_map", - note: "Use `starknet::storage::Map` instead." -)] -use starknet::storage::Map as LegacyMap; - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__tag(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::tag(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__version(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::version(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__selector(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::selector(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__name_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::name_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__namespace_hash(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::namespace_hash(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__unpacked_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::unpacked_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__packed_size(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::packed_size(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::>::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::layout(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - let res = DojoModelImpl::schema(@contract_state, ); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::serde::Serde::::serialize(@res, ref arr); - core::array::ArrayTrait::span(@arr) -} - -#[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__u_256_key_modelImpl__ensure_abi(mut data: Span::) -> Span:: { - core::internal::require_implicit::(); - core::internal::revoke_ap_tracking(); - core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); - let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), - 'Failed to deserialize param #1' - ); - assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); - core::option::OptionTraitImpl::expect( - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', - ); - let mut contract_state = unsafe_new_contract_state(); - u_256_key_modelImpl::ensure_abi(@contract_state, __arg_model); - let mut arr = ArrayTrait::new(); - // References. - // Result. - core::array::ArrayTrait::span(@arr) -} - - -pub mod __external { - pub use super::__wrapper__DojoModelImpl__name as name; - pub use super::__wrapper__DojoModelImpl__namespace as namespace; - pub use super::__wrapper__DojoModelImpl__tag as tag; - pub use super::__wrapper__DojoModelImpl__version as version; - pub use super::__wrapper__DojoModelImpl__selector as selector; - pub use super::__wrapper__DojoModelImpl__name_hash as name_hash; - pub use super::__wrapper__DojoModelImpl__namespace_hash as namespace_hash; - pub use super::__wrapper__DojoModelImpl__unpacked_size as unpacked_size; - pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; - pub use super::__wrapper__DojoModelImpl__layout as layout; - pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__u_256_key_modelImpl__ensure_abi as ensure_abi; + pub use super::__wrapper__model_with_bad_namespace_formatImpl__ensure_abi as ensure_abi; } pub mod __l1_handler { } @@ -21936,120 +7043,233 @@ impl StorageStorageBaseCopy of core::traits::Copy::; impl StorageStorageBaseMutDrop of core::traits::Drop::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) + +impl ModelWithShortStringNamespaceIntrospect<> of dojo::meta::introspect::Introspect> { + #[inline(always)] + fn size() -> Option { + dojo::meta::introspect::Introspect::::size() + } + + fn layout() -> dojo::meta::Layout { + dojo::meta::Layout::Struct( + array![ + dojo::meta::FieldLayout { + selector: 578691550836206188651404750433984985630363913126316857592149308417275000080, + layout: dojo::meta::introspect::Introspect::::layout() + } + ].span() + ) + } + + #[inline(always)] + fn ty() -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Ty::Struct( + dojo::meta::introspect::Struct { + name: 'ModelWithShortStringNamespace', + attrs: array![].span(), + children: array![ + dojo::meta::introspect::Member { + name: 'id', + attrs: array!['key'].span(), + ty: dojo::meta::introspect::Introspect::::ty() + }, +dojo::meta::introspect::Member { + name: 'v', + attrs: array![].span(), + ty: dojo::meta::introspect::Introspect::::ty() + } + + ].span() + } + ) + } +} + +#[derive(Drop, Serde)] +pub struct ModelWithShortStringNamespaceEntity { + __id: felt252, // private field + pub v: Vec3, + +} #[generate_trait] -pub impl U256KeyModelEntityStoreImpl of U256KeyModelEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> U256KeyModelEntity { - U256KeyModelModelEntityImpl::get(world, entity_id) +pub impl ModelWithShortStringNamespaceEntityStoreImpl of ModelWithShortStringNamespaceEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithShortStringNamespaceEntity { + ModelWithShortStringNamespaceModelEntityImpl::get(world, entity_id) } - fn update(self: @U256KeyModelEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn update(self: @ModelWithShortStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn delete(self: @U256KeyModelEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn delete(self: @ModelWithShortStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } + fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { + let mut values = dojo::model::ModelEntity::::get_member( + world, + entity_id, + 578691550836206188651404750433984985630363913126316857592149308417275000080 + ); + let field_value = core::serde::Serde::::deserialize(ref values); + + if core::option::OptionTrait::::is_none(@field_value) { + panic!( + "Field `ModelWithShortStringNamespace::v`: deserialization failed." + ); + } + + core::option::OptionTrait::::unwrap(field_value) + } + + fn set_v(self: @ModelWithShortStringNamespaceEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { + let mut serialized = core::array::ArrayTrait::new(); + core::serde::Serde::serialize(@value, ref serialized); + + self.set_member( + world, + 578691550836206188651404750433984985630363913126316857592149308417275000080, + serialized.span() + ); + } + } #[generate_trait] -pub impl U256KeyModelStoreImpl of U256KeyModelStore { - fn entity_id_from_keys() -> felt252 { +pub impl ModelWithShortStringNamespaceStoreImpl of ModelWithShortStringNamespaceStore { + fn entity_id_from_keys(id: felt252) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - + core::serde::Serde::serialize(@id, ref serialized); + core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> U256KeyModel { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let id = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let v = core::serde::Serde::::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `U256KeyModel`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + ModelWithShortStringNamespace { + id, + + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, ) -> U256KeyModel { + fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> ModelWithShortStringNamespace { let mut serialized = core::array::ArrayTrait::new(); - + core::serde::Serde::serialize(@id, ref serialized); - dojo::model::Model::::get(world, serialized.span()) + + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @U256KeyModel, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @ModelWithShortStringNamespace, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @U256KeyModel, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @ModelWithShortStringNamespace, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } + fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { + let mut serialized = core::array::ArrayTrait::new(); + core::serde::Serde::serialize(@id, ref serialized); + + + let mut values = dojo::model::Model::::get_member( + world, + serialized.span(), + 578691550836206188651404750433984985630363913126316857592149308417275000080 + ); + + let field_value = core::serde::Serde::::deserialize(ref values); + + if core::option::OptionTrait::::is_none(@field_value) { + panic!( + "Field `ModelWithShortStringNamespace::v`: deserialization failed." + ); + } + + core::option::OptionTrait::::unwrap(field_value) + } + + fn set_v(self: @ModelWithShortStringNamespace, world: dojo::world::IWorldDispatcher, value: Vec3) { + let mut serialized = core::array::ArrayTrait::new(); + core::serde::Serde::serialize(@value, ref serialized); + + self.set_member( + world, + 578691550836206188651404750433984985630363913126316857592149308417275000080, + serialized.span() + ); + } + } -pub impl U256KeyModelModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @U256KeyModelEntity) -> felt252 { +pub impl ModelWithShortStringNamespaceModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @ModelWithShortStringNamespaceEntity) -> felt252 { *self.__id } - fn values(self: @U256KeyModelEntity) -> Span { + fn values(self: @ModelWithShortStringNamespaceEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); - + core::serde::Serde::serialize(self.v, ref serialized); + core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> U256KeyModelEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let v = core::serde::Serde::::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `U256KeyModelEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + ModelWithShortStringNamespaceEntity { + __id: entity_id, + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> U256KeyModelEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithShortStringNamespaceEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `ModelWithShortStringNamespaceEntity`: deserialization failed.") + } + } } - fn update_entity(self: @U256KeyModelEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @ModelWithShortStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @U256KeyModelEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @ModelWithShortStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -22058,11 +7278,11 @@ pub impl U256KeyModelModelEntityImpl of dojo::model::ModelEntity Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -22072,16 +7292,16 @@ pub impl U256KeyModelModelEntityImpl of dojo::model::ModelEntity, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -22092,8 +7312,8 @@ pub impl U256KeyModelModelEntityImpl of dojo::model::ModelEntity { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> U256KeyModel { +pub impl ModelWithShortStringNamespaceModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithShortStringNamespace { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -22102,11 +7322,16 @@ pub impl U256KeyModelModelImpl of dojo::model::Model { ); let mut _keys = keys; - U256KeyModelStore::from_values(ref _keys, ref values) + match ModelWithShortStringNamespaceStore::from_values(ref _keys, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("Model `ModelWithShortStringNamespace`: deserialization failed.") + } + } } fn set_model( - self: @U256KeyModel, + self: @ModelWithShortStringNamespace, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -22119,7 +7344,7 @@ pub impl U256KeyModelModelImpl of dojo::model::Model { } fn delete_model( - self: @U256KeyModel, + self: @ModelWithShortStringNamespace, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::delete_entity( @@ -22150,7 +7375,7 @@ pub impl U256KeyModelModelImpl of dojo::model::Model { } fn set_member( - self: @U256KeyModel, + self: @ModelWithShortStringNamespace, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span @@ -22171,7 +7396,7 @@ pub impl U256KeyModelModelImpl of dojo::model::Model { #[inline(always)] fn name() -> ByteArray { - "U256KeyModel" + "ModelWithShortStringNamespace" } #[inline(always)] @@ -22181,7 +7406,7 @@ pub impl U256KeyModelModelImpl of dojo::model::Model { #[inline(always)] fn tag() -> ByteArray { - "dojo_test-U256KeyModel" + "dojo_test-ModelWithShortStringNamespace" } #[inline(always)] @@ -22191,17 +7416,17 @@ pub impl U256KeyModelModelImpl of dojo::model::Model { #[inline(always)] fn selector() -> felt252 { - 2221887666320363067192826725795502610968343119143207326025439486865385474790 + 3563011140946869267852628778244415212055246902495528859686589254859279333005 } #[inline(always)] - fn instance_selector(self: @U256KeyModel) -> felt252 { + fn instance_selector(self: @ModelWithShortStringNamespace) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 1848733002266458148515852001373055968326209639346734967305014900020806934517 + 4646597166239297873853881466258165424425132957303541470648153031188639878 } #[inline(always)] @@ -22210,31 +7435,33 @@ pub impl U256KeyModelModelImpl of dojo::model::Model { } #[inline(always)] - fn entity_id(self: @U256KeyModel) -> felt252 { + fn entity_id(self: @ModelWithShortStringNamespace) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @U256KeyModel) -> Span { + fn keys(self: @ModelWithShortStringNamespace) -> Span { let mut serialized = core::array::ArrayTrait::new(); - + core::serde::Serde::serialize(self.id, ref serialized); + core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn values(self: @U256KeyModel) -> Span { + fn values(self: @ModelWithShortStringNamespace) -> Span { let mut serialized = core::array::ArrayTrait::new(); - + core::serde::Serde::serialize(self.v, ref serialized); + core::array::ArrayTrait::span(@serialized) } #[inline(always)] fn layout() -> dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @U256KeyModel) -> dojo::meta::Layout { + fn instance_layout(self: @ModelWithShortStringNamespace) -> dojo::meta::Layout { Self::layout() } @@ -22245,65 +7472,65 @@ pub impl U256KeyModelModelImpl of dojo::model::Model { } #[starknet::interface] -pub trait Iu_256_key_model { - fn ensure_abi(self: @T, model: U256KeyModel); +pub trait Imodel_with_short_string_namespace { + fn ensure_abi(self: @T, model: ModelWithShortStringNamespace); } #[starknet::contract] -pub mod u_256_key_model { - use super::U256KeyModel; - use super::Iu_256_key_model; +pub mod model_with_short_string_namespace { + use super::ModelWithShortStringNamespace; + use super::Imodel_with_short_string_namespace; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() + dojo::model::Model::::layout() } fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl u_256_key_modelImpl of Iu_256_key_model{ - fn ensure_abi(self: @ContractState, model: U256KeyModel) { + impl model_with_short_string_namespaceImpl of Imodel_with_short_string_namespace{ + fn ensure_abi(self: @ContractState, model: ModelWithShortStringNamespace) { } } #[event] @@ -22575,12 +7802,12 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::) -> Span:: { +fn __wrapper__model_with_short_string_namespaceImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -22588,7 +7815,7 @@ fn __wrapper__u_256_key_modelImpl__ensure_abi(mut data: Span::) -> Span core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', ); let mut contract_state = unsafe_new_contract_state(); - u_256_key_modelImpl::ensure_abi(@contract_state, __arg_model); + model_with_short_string_namespaceImpl::ensure_abi(@contract_state, __arg_model); let mut arr = ArrayTrait::new(); // References. // Result. @@ -22608,7 +7835,7 @@ pub mod __external { pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; pub use super::__wrapper__DojoModelImpl__layout as layout; pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__u_256_key_modelImpl__ensure_abi as ensure_abi; + pub use super::__wrapper__model_with_short_string_namespaceImpl__ensure_abi as ensure_abi; } pub mod __l1_handler { } @@ -22653,18 +7880,18 @@ impl StorageStorageBaseMutDrop of core::traits::Drop::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -impl PlayerIntrospect<> of dojo::meta::introspect::Introspect> { +impl ModelWithStringNamespaceIntrospect<> of dojo::meta::introspect::Introspect> { #[inline(always)] fn size() -> Option { - Option::Some(1) + dojo::meta::introspect::Introspect::::size() } fn layout() -> dojo::meta::Layout { dojo::meta::Layout::Struct( array![ dojo::meta::FieldLayout { - selector: 1528802474226268325865027367859591458315299653151958663884057507666229546336, - layout: dojo::meta::introspect::Introspect::::layout() + selector: 578691550836206188651404750433984985630363913126316857592149308417275000080, + layout: dojo::meta::introspect::Introspect::::layout() } ].span() ) @@ -22674,23 +7901,18 @@ impl PlayerIntrospect<> of dojo::meta::introspect::Introspect> { fn ty() -> dojo::meta::introspect::Ty { dojo::meta::introspect::Ty::Struct( dojo::meta::introspect::Struct { - name: 'Player', + name: 'ModelWithStringNamespace', attrs: array![].span(), children: array![ dojo::meta::introspect::Member { - name: 'game', + name: 'id', attrs: array!['key'].span(), ty: dojo::meta::introspect::Introspect::::ty() }, dojo::meta::introspect::Member { - name: 'player', - attrs: array!['key'].span(), - ty: dojo::meta::introspect::Introspect::::ty() - }, -dojo::meta::introspect::Member { - name: 'name', + name: 'v', attrs: array![].span(), - ty: dojo::meta::introspect::Introspect::::ty() + ty: dojo::meta::introspect::Introspect::::ty() } ].span() @@ -22700,52 +7922,51 @@ dojo::meta::introspect::Member { } #[derive(Drop, Serde)] -pub struct PlayerEntity { +pub struct ModelWithStringNamespaceEntity { __id: felt252, // private field - pub name: felt252, -<<<<<<< HEAD + pub v: Vec3, } #[generate_trait] -pub impl PlayerEntityStoreImpl of PlayerEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> PlayerEntity { - PlayerModelEntityImpl::get(world, entity_id) +pub impl ModelWithStringNamespaceEntityStoreImpl of ModelWithStringNamespaceEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithStringNamespaceEntity { + ModelWithStringNamespaceModelEntityImpl::get(world, entity_id) } - fn update(self: @PlayerEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn update(self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn delete(self: @PlayerEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn delete(self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } - fn get_name(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> felt252 { - let mut values = dojo::model::ModelEntity::::get_member( + fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, - 1528802474226268325865027367859591458315299653151958663884057507666229546336 + 578691550836206188651404750433984985630363913126316857592149308417275000080 ); - let field_value = core::serde::Serde::::deserialize(ref values); + let field_value = core::serde::Serde::::deserialize(ref values); - if core::option::OptionTrait::::is_none(@field_value) { + if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `Player::name`: deserialization failed." + "Field `ModelWithStringNamespace::v`: deserialization failed." ); } - core::option::OptionTrait::::unwrap(field_value) + core::option::OptionTrait::::unwrap(field_value) } - fn set_name(self: @PlayerEntity, world: dojo::world::IWorldDispatcher, value: felt252) { + fn set_v(self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); self.set_member( world, - 1528802474226268325865027367859591458315299653151958663884057507666229546336, + 578691550836206188651404750433984985630363913126316857592149308417275000080, serialized.span() ); } @@ -22753,138 +7974,138 @@ pub impl PlayerEntityStoreImpl of PlayerEntityStore { } #[generate_trait] -pub impl PlayerStoreImpl of PlayerStore { - fn entity_id_from_keys(game: felt252, player: ContractAddress) -> felt252 { +pub impl ModelWithStringNamespaceStoreImpl of ModelWithStringNamespaceStore { + fn entity_id_from_keys(id: felt252) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, game); -core::serde::Serde::serialize(@player, ref serialized); + core::serde::Serde::serialize(@id, ref serialized); core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> Player { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let id = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let v = core::serde::Serde::::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `Player`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + ModelWithStringNamespace { + id, + + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, game: felt252, player: ContractAddress) -> Player { + fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> ModelWithStringNamespace { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, game); -core::serde::Serde::serialize(@player, ref serialized); + core::serde::Serde::serialize(@id, ref serialized); - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @Player, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @ModelWithStringNamespace, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @Player, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @ModelWithStringNamespace, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } - fn get_name(world: dojo::world::IWorldDispatcher, game: felt252, player: ContractAddress) -> felt252 { + fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, game); -core::serde::Serde::serialize(@player, ref serialized); + core::serde::Serde::serialize(@id, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), - 1528802474226268325865027367859591458315299653151958663884057507666229546336 + 578691550836206188651404750433984985630363913126316857592149308417275000080 ); - let field_value = core::serde::Serde::::deserialize(ref values); + let field_value = core::serde::Serde::::deserialize(ref values); - if core::option::OptionTrait::::is_none(@field_value) { + if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `Player::name`: deserialization failed." + "Field `ModelWithStringNamespace::v`: deserialization failed." ); } - core::option::OptionTrait::::unwrap(field_value) + core::option::OptionTrait::::unwrap(field_value) } - fn set_name(self: @Player, world: dojo::world::IWorldDispatcher, value: felt252) { + fn set_v(self: @ModelWithStringNamespace, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); self.set_member( world, - 1528802474226268325865027367859591458315299653151958663884057507666229546336, + 578691550836206188651404750433984985630363913126316857592149308417275000080, serialized.span() ); } } -pub impl PlayerModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @PlayerEntity) -> felt252 { +pub impl ModelWithStringNamespaceModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @ModelWithStringNamespaceEntity) -> felt252 { *self.__id } - fn values(self: @PlayerEntity) -> Span { + fn values(self: @ModelWithStringNamespaceEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.name); + core::serde::Serde::serialize(self.v, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> PlayerEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let v = core::serde::Serde::::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `PlayerEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + ModelWithStringNamespaceEntity { + __id: entity_id, + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> PlayerEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithStringNamespaceEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `ModelWithStringNamespaceEntity`: deserialization failed.") + } + } } - fn update_entity(self: @PlayerEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @PlayerEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -22893,11 +8114,11 @@ pub impl PlayerModelEntityImpl of dojo::model::ModelEntity { entity_id: felt252, member_id: felt252, ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -22907,16 +8128,16 @@ pub impl PlayerModelEntityImpl of dojo::model::ModelEntity { } fn set_member( - self: @PlayerEntity, + self: @ModelWithStringNamespaceEntity, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -22927,8 +8148,8 @@ pub impl PlayerModelEntityImpl of dojo::model::ModelEntity { } } -pub impl PlayerModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> Player { +pub impl ModelWithStringNamespaceModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithStringNamespace { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -22937,11 +8158,16 @@ pub impl PlayerModelImpl of dojo::model::Model { ); let mut _keys = keys; - PlayerStore::from_values(ref _keys, ref values) + match ModelWithStringNamespaceStore::from_values(ref _keys, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("Model `ModelWithStringNamespace`: deserialization failed.") + } + } } fn set_model( - self: @Player, + self: @ModelWithStringNamespace, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -22954,7 +8180,7 @@ pub impl PlayerModelImpl of dojo::model::Model { } fn delete_model( - self: @Player, + self: @ModelWithStringNamespace, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::delete_entity( @@ -22985,7 +8211,7 @@ pub impl PlayerModelImpl of dojo::model::Model { } fn set_member( - self: @Player, + self: @ModelWithStringNamespace, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span @@ -23006,7 +8232,7 @@ pub impl PlayerModelImpl of dojo::model::Model { #[inline(always)] fn name() -> ByteArray { - "Player" + "ModelWithStringNamespace" } #[inline(always)] @@ -23016,7 +8242,7 @@ pub impl PlayerModelImpl of dojo::model::Model { #[inline(always)] fn tag() -> ByteArray { - "dojo_test-Player" + "dojo_test-ModelWithStringNamespace" } #[inline(always)] @@ -23026,17 +8252,17 @@ pub impl PlayerModelImpl of dojo::model::Model { #[inline(always)] fn selector() -> felt252 { - 32472305970791489884889070587064570056671760620943135506258424375410423946 + 3428238780389029245974129676124052799610748885939447299287640410044966811336 } #[inline(always)] - fn instance_selector(self: @Player) -> felt252 { + fn instance_selector(self: @ModelWithStringNamespace) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 1073075359926275415180704315933677548333097210683379121732618306925003101845 + 36187013840655350498900857372670392628596870210415176261336407419317644423 } #[inline(always)] @@ -23045,103 +8271,102 @@ pub impl PlayerModelImpl of dojo::model::Model { } #[inline(always)] - fn entity_id(self: @Player) -> felt252 { + fn entity_id(self: @ModelWithStringNamespace) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @Player) -> Span { + fn keys(self: @ModelWithStringNamespace) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.game); -core::serde::Serde::serialize(self.player, ref serialized); + core::serde::Serde::serialize(self.id, ref serialized); core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn values(self: @Player) -> Span { + fn values(self: @ModelWithStringNamespace) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.name); + core::serde::Serde::serialize(self.v, ref serialized); core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() + fn layout() -> dojo::meta::Layout { + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @Player) -> dojo::model::Layout { + fn instance_layout(self: @ModelWithStringNamespace) -> dojo::meta::Layout { Self::layout() } #[inline(always)] fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) + dojo::meta::layout::compute_packed_size(Self::layout()) } } #[starknet::interface] -pub trait Iplayer { - fn ensure_abi(self: @T, model: Player); +pub trait Imodel_with_string_namespace { + fn ensure_abi(self: @T, model: ModelWithStringNamespace); } #[starknet::contract] -pub mod player { - use super::Player; - use super::Iplayer; +pub mod model_with_string_namespace { + use super::ModelWithStringNamespace; + use super::Imodel_with_string_namespace; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() + fn layout(self: @ContractState) -> dojo::meta::Layout { + dojo::model::Model::::layout() } - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() + fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl playerImpl of Iplayer{ - fn ensure_abi(self: @ContractState, model: Player) { + impl model_with_string_namespaceImpl of Imodel_with_string_namespace{ + fn ensure_abi(self: @ContractState, model: ModelWithStringNamespace) { } } #[event] @@ -23389,7 +8614,7 @@ fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } @@ -23408,17 +8633,17 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } #[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__playerImpl__ensure_abi(mut data: Span::) -> Span:: { +fn __wrapper__model_with_string_namespaceImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -23426,7 +8651,7 @@ fn __wrapper__playerImpl__ensure_abi(mut data: Span::) -> Span::; impl StorageStorageBaseMutDrop of core::traits::Drop::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) + +impl PositionIntrospect<> of dojo::meta::introspect::Introspect> { + #[inline(always)] + fn size() -> Option { + dojo::meta::introspect::Introspect::::size() + } + + fn layout() -> dojo::meta::Layout { + dojo::meta::Layout::Struct( + array![ + dojo::meta::FieldLayout { + selector: 578691550836206188651404750433984985630363913126316857592149308417275000080, + layout: dojo::meta::introspect::Introspect::::layout() + } + ].span() + ) + } + + #[inline(always)] + fn ty() -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Ty::Struct( + dojo::meta::introspect::Struct { + name: 'Position', + attrs: array![].span(), + children: array![ + dojo::meta::introspect::Member { + name: 'id', + attrs: array!['key'].span(), + ty: dojo::meta::introspect::Introspect::::ty() + }, +dojo::meta::introspect::Member { + name: 'v', + attrs: array![].span(), + ty: dojo::meta::introspect::Introspect::::ty() + } + + ].span() + } + ) + } +} + +#[derive(Drop, Serde)] +pub struct PositionEntity { + __id: felt252, // private field + pub v: Vec3, } #[generate_trait] -pub impl PlayerEntityStoreImpl of PlayerEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> PlayerEntity { - PlayerModelEntityImpl::get(world, entity_id) +pub impl PositionEntityStoreImpl of PositionEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> PositionEntity { + PositionModelEntityImpl::get(world, entity_id) } - fn update(self: @PlayerEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn update(self: @PositionEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn delete(self: @PlayerEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn delete(self: @PositionEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } - fn get_name(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> felt252 { - let mut values = dojo::model::ModelEntity::::get_member( + fn get_v(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Vec3 { + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, - 1528802474226268325865027367859591458315299653151958663884057507666229546336 + 578691550836206188651404750433984985630363913126316857592149308417275000080 ); - let field_value = core::serde::Serde::::deserialize(ref values); + let field_value = core::serde::Serde::::deserialize(ref values); - if core::option::OptionTrait::::is_none(@field_value) { + if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `Player::name`: deserialization failed." + "Field `Position::v`: deserialization failed." ); } - core::option::OptionTrait::::unwrap(field_value) + core::option::OptionTrait::::unwrap(field_value) } - fn set_name(self: @PlayerEntity, world: dojo::world::IWorldDispatcher, value: felt252) { + fn set_v(self: @PositionEntity, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); self.set_member( world, - 1528802474226268325865027367859591458315299653151958663884057507666229546336, + 578691550836206188651404750433984985630363913126316857592149308417275000080, serialized.span() ); } @@ -23541,138 +8810,138 @@ pub impl PlayerEntityStoreImpl of PlayerEntityStore { } #[generate_trait] -pub impl PlayerStoreImpl of PlayerStore { - fn entity_id_from_keys(game: felt252, player: ContractAddress) -> felt252 { +pub impl PositionStoreImpl of PositionStore { + fn entity_id_from_keys(id: felt252) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, game); -core::serde::Serde::serialize(@player, ref serialized); + core::serde::Serde::serialize(@id, ref serialized); core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> Player { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let id = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let v = core::serde::Serde::::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `Player`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + Position { + id, + + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, game: felt252, player: ContractAddress) -> Player { + fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> Position { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, game); -core::serde::Serde::serialize(@player, ref serialized); + core::serde::Serde::serialize(@id, ref serialized); - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @Player, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @Position, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @Player, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @Position, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } - fn get_name(world: dojo::world::IWorldDispatcher, game: felt252, player: ContractAddress) -> felt252 { + fn get_v(world: dojo::world::IWorldDispatcher, id: felt252) -> Vec3 { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, game); -core::serde::Serde::serialize(@player, ref serialized); + core::serde::Serde::serialize(@id, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), - 1528802474226268325865027367859591458315299653151958663884057507666229546336 + 578691550836206188651404750433984985630363913126316857592149308417275000080 ); - let field_value = core::serde::Serde::::deserialize(ref values); + let field_value = core::serde::Serde::::deserialize(ref values); - if core::option::OptionTrait::::is_none(@field_value) { + if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `Player::name`: deserialization failed." + "Field `Position::v`: deserialization failed." ); } - core::option::OptionTrait::::unwrap(field_value) + core::option::OptionTrait::::unwrap(field_value) } - fn set_name(self: @Player, world: dojo::world::IWorldDispatcher, value: felt252) { + fn set_v(self: @Position, world: dojo::world::IWorldDispatcher, value: Vec3) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); self.set_member( world, - 1528802474226268325865027367859591458315299653151958663884057507666229546336, + 578691550836206188651404750433984985630363913126316857592149308417275000080, serialized.span() ); } } -pub impl PlayerModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @PlayerEntity) -> felt252 { +pub impl PositionModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @PositionEntity) -> felt252 { *self.__id } - fn values(self: @PlayerEntity) -> Span { + fn values(self: @PositionEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.name); + core::serde::Serde::serialize(self.v, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> PlayerEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let v = core::serde::Serde::::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `PlayerEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + PositionEntity { + __id: entity_id, + v, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> PlayerEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> PositionEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `PositionEntity`: deserialization failed.") + } + } } - fn update_entity(self: @PlayerEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @PositionEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @PlayerEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @PositionEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -23681,11 +8950,11 @@ pub impl PlayerModelEntityImpl of dojo::model::ModelEntity { entity_id: felt252, member_id: felt252, ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -23695,16 +8964,16 @@ pub impl PlayerModelEntityImpl of dojo::model::ModelEntity { } fn set_member( - self: @PlayerEntity, + self: @PositionEntity, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -23715,8 +8984,8 @@ pub impl PlayerModelEntityImpl of dojo::model::ModelEntity { } } -pub impl PlayerModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> Player { +pub impl PositionModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> Position { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -23725,11 +8994,16 @@ pub impl PlayerModelImpl of dojo::model::Model { ); let mut _keys = keys; - PlayerStore::from_values(ref _keys, ref values) + match PositionStore::from_values(ref _keys, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("Model `Position`: deserialization failed.") + } + } } fn set_model( - self: @Player, + self: @Position, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -23742,7 +9016,7 @@ pub impl PlayerModelImpl of dojo::model::Model { } fn delete_model( - self: @Player, + self: @Position, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::delete_entity( @@ -23773,7 +9047,7 @@ pub impl PlayerModelImpl of dojo::model::Model { } fn set_member( - self: @Player, + self: @Position, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span @@ -23794,7 +9068,7 @@ pub impl PlayerModelImpl of dojo::model::Model { #[inline(always)] fn name() -> ByteArray { - "Player" + "Position" } #[inline(always)] @@ -23804,7 +9078,7 @@ pub impl PlayerModelImpl of dojo::model::Model { #[inline(always)] fn tag() -> ByteArray { - "dojo_test-Player" + "dojo_test-Position" } #[inline(always)] @@ -23814,17 +9088,17 @@ pub impl PlayerModelImpl of dojo::model::Model { #[inline(always)] fn selector() -> felt252 { - 32472305970791489884889070587064570056671760620943135506258424375410423946 + 1782729361185285637005619480739442196364037716000358448825261820703351159758 } #[inline(always)] - fn instance_selector(self: @Player) -> felt252 { + fn instance_selector(self: @Position) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 1073075359926275415180704315933677548333097210683379121732618306925003101845 + 2899920299641094436341712346886623904698864491830316325765258522168980161362 } #[inline(always)] @@ -23833,34 +9107,33 @@ pub impl PlayerModelImpl of dojo::model::Model { } #[inline(always)] - fn entity_id(self: @Player) -> felt252 { + fn entity_id(self: @Position) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @Player) -> Span { + fn keys(self: @Position) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.game); -core::serde::Serde::serialize(self.player, ref serialized); + core::serde::Serde::serialize(self.id, ref serialized); core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn values(self: @Player) -> Span { + fn values(self: @Position) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::array::ArrayTrait::append(ref serialized, *self.name); + core::serde::Serde::serialize(self.v, ref serialized); core::array::ArrayTrait::span(@serialized) } #[inline(always)] fn layout() -> dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @Player) -> dojo::meta::Layout { + fn instance_layout(self: @Position) -> dojo::meta::Layout { Self::layout() } @@ -23871,65 +9144,65 @@ core::serde::Serde::serialize(self.player, ref serialized); } #[starknet::interface] -pub trait Iplayer { - fn ensure_abi(self: @T, model: Player); +pub trait Iposition { + fn ensure_abi(self: @T, model: Position); } #[starknet::contract] -pub mod player { - use super::Player; - use super::Iplayer; +pub mod position { + use super::Position; + use super::Iposition; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() + dojo::model::Model::::layout() } fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl playerImpl of Iplayer{ - fn ensure_abi(self: @ContractState, model: Player) { + impl positionImpl of Iposition{ + fn ensure_abi(self: @ContractState, model: Position) { } } #[event] @@ -24201,12 +9474,12 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::) -> Span:: { +fn __wrapper__positionImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -24214,7 +9487,7 @@ fn __wrapper__playerImpl__ensure_abi(mut data: Span::) -> Span::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -impl ModelWithSimpleArrayIntrospect<> of dojo::meta::introspect::Introspect> { +impl RolesIntrospect<> of dojo::meta::introspect::Introspect> { #[inline(always)] fn size() -> Option { Option::None @@ -24289,11 +9562,7 @@ impl ModelWithSimpleArrayIntrospect<> of dojo::meta::introspect::Introspect::layout() - }, -dojo::meta::FieldLayout { - selector: 1591024729085637502504777720563487898377940395575083379770417352976841400819, + selector: 387776731289756409274549987067854286905927440612427426920343953432870065647, layout: dojo::meta::introspect::Introspect:: >::layout() } @@ -24305,21 +9574,11 @@ dojo::meta::FieldLayout { fn ty() -> dojo::meta::introspect::Ty { dojo::meta::introspect::Ty::Struct( dojo::meta::introspect::Struct { - name: 'ModelWithSimpleArray', + name: 'Roles', attrs: array![].span(), children: array![ dojo::meta::introspect::Member { - name: 'player', - attrs: array!['key'].span(), - ty: dojo::meta::introspect::Introspect::::ty() - }, -dojo::meta::introspect::Member { - name: 'x', - attrs: array![].span(), - ty: dojo::meta::introspect::Introspect::::ty() - }, -dojo::meta::introspect::Member { - name: 'y', + name: 'role_ids', attrs: array![].span(), ty: dojo::meta::introspect::Ty::Array( array![ @@ -24335,81 +9594,51 @@ dojo::meta::introspect::Member { } #[derive(Drop, Serde)] -pub struct ModelWithSimpleArrayEntity { +pub struct RolesEntity { __id: felt252, // private field - pub x: u16, -pub y: Array, -<<<<<<< HEAD + pub role_ids: Array, } #[generate_trait] -pub impl ModelWithSimpleArrayEntityStoreImpl of ModelWithSimpleArrayEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithSimpleArrayEntity { - ModelWithSimpleArrayModelEntityImpl::get(world, entity_id) +pub impl RolesEntityStoreImpl of RolesEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> RolesEntity { + RolesModelEntityImpl::get(world, entity_id) } - fn update(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn update(self: @RolesEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn delete(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn delete(self: @RolesEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } - fn get_x(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> u16 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 512066735765477566404754172672287371265995314501343422459174036873487219331 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithSimpleArray::x`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_x(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher, value: u16) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 512066735765477566404754172672287371265995314501343422459174036873487219331, - serialized.span() - ); - } - - fn get_y(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Array { - let mut values = dojo::model::ModelEntity::::get_member( + fn get_role_ids(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Array { + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, - 1591024729085637502504777720563487898377940395575083379770417352976841400819 + 387776731289756409274549987067854286905927440612427426920343953432870065647 ); let field_value = core::serde::Serde::>::deserialize(ref values); if core::option::OptionTrait::>::is_none(@field_value) { panic!( - "Field `ModelWithSimpleArray::y`: deserialization failed." + "Field `Roles::role_ids`: deserialization failed." ); } core::option::OptionTrait::>::unwrap(field_value) } - fn set_y(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher, value: Array) { + fn set_role_ids(self: @RolesEntity, world: dojo::world::IWorldDispatcher, value: Array) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); self.set_member( world, - 1591024729085637502504777720563487898377940395575083379770417352976841400819, + 387776731289756409274549987067854286905927440612427426920343953432870065647, serialized.span() ); } @@ -24417,169 +9646,133 @@ pub impl ModelWithSimpleArrayEntityStoreImpl of ModelWithSimpleArrayEntityStore } #[generate_trait] -pub impl ModelWithSimpleArrayStoreImpl of ModelWithSimpleArrayStore { - fn entity_id_from_keys(player: ContractAddress) -> felt252 { +pub impl RolesStoreImpl of RolesStore { + fn entity_id_from_keys() -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); - + core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> ModelWithSimpleArray { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + + let role_ids = core::serde::Serde::>::deserialize(ref values)?; - let entity = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `ModelWithSimpleArray`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } + Option::Some( + Roles { + + role_ids, - core::option::OptionTrait::::unwrap(entity) + } + ) } - fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithSimpleArray { + fn get(world: dojo::world::IWorldDispatcher, ) -> Roles { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); - + - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @ModelWithSimpleArray, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @Roles, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @ModelWithSimpleArray, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @Roles, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } - fn get_x(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> u16 { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 512066735765477566404754172672287371265995314501343422459174036873487219331 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithSimpleArray::x`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_x(self: @ModelWithSimpleArray, world: dojo::world::IWorldDispatcher, value: u16) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 512066735765477566404754172672287371265995314501343422459174036873487219331, - serialized.span() - ); - } - - fn get_y(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> Array { + fn get_role_ids(world: dojo::world::IWorldDispatcher, ) -> Array { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); - + - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), - 1591024729085637502504777720563487898377940395575083379770417352976841400819 + 387776731289756409274549987067854286905927440612427426920343953432870065647 ); let field_value = core::serde::Serde::>::deserialize(ref values); if core::option::OptionTrait::>::is_none(@field_value) { panic!( - "Field `ModelWithSimpleArray::y`: deserialization failed." + "Field `Roles::role_ids`: deserialization failed." ); } core::option::OptionTrait::>::unwrap(field_value) } - fn set_y(self: @ModelWithSimpleArray, world: dojo::world::IWorldDispatcher, value: Array) { + fn set_role_ids(self: @Roles, world: dojo::world::IWorldDispatcher, value: Array) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); self.set_member( world, - 1591024729085637502504777720563487898377940395575083379770417352976841400819, + 387776731289756409274549987067854286905927440612427426920343953432870065647, serialized.span() ); } } -pub impl ModelWithSimpleArrayModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @ModelWithSimpleArrayEntity) -> felt252 { +pub impl RolesModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @RolesEntity) -> felt252 { *self.__id } - fn values(self: @ModelWithSimpleArrayEntity) -> Span { + fn values(self: @RolesEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.x, ref serialized); -core::serde::Serde::serialize(self.y, ref serialized); + core::serde::Serde::serialize(self.role_ids, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> ModelWithSimpleArrayEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let role_ids = core::serde::Serde::>::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `ModelWithSimpleArrayEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + RolesEntity { + __id: entity_id, + role_ids, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithSimpleArrayEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> RolesEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `RolesEntity`: deserialization failed.") + } + } } - fn update_entity(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @RolesEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @RolesEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -24588,11 +9781,11 @@ core::serde::Serde::serialize(self.y, ref serialized); entity_id: felt252, member_id: felt252, ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -24602,16 +9795,16 @@ core::serde::Serde::serialize(self.y, ref serialized); } fn set_member( - self: @ModelWithSimpleArrayEntity, + self: @RolesEntity, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -24622,8 +9815,8 @@ core::serde::Serde::serialize(self.y, ref serialized); } } -pub impl ModelWithSimpleArrayModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithSimpleArray { +pub impl RolesModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> Roles { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -24632,11 +9825,16 @@ pub impl ModelWithSimpleArrayModelImpl of dojo::model::Model x, + Option::None => { + panic!("Model `Roles`: deserialization failed.") + } + } } fn set_model( - self: @ModelWithSimpleArray, + self: @Roles, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -24649,7 +9847,7 @@ pub impl ModelWithSimpleArrayModelImpl of dojo::model::Model @@ -24701,7 +9899,7 @@ pub impl ModelWithSimpleArrayModelImpl of dojo::model::Model ByteArray { - "ModelWithSimpleArray" + "Roles" } #[inline(always)] @@ -24711,7 +9909,7 @@ pub impl ModelWithSimpleArrayModelImpl of dojo::model::Model ByteArray { - "dojo_test-ModelWithSimpleArray" + "dojo_test-Roles" } #[inline(always)] @@ -24721,17 +9919,17 @@ pub impl ModelWithSimpleArrayModelImpl of dojo::model::Model felt252 { - 2155888289741706273257207428305937938996511115291276975807216945184181752777 + 3584099896964965841643389141246184155284218827427504603233100831001054183182 } #[inline(always)] - fn instance_selector(self: @ModelWithSimpleArray) -> felt252 { + fn instance_selector(self: @Roles) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 173141902001925402715103859951360389436088950156916962046507357841237663931 + 2030971736961612564423689930729061756599290850089001157163423482274886199516 } #[inline(always)] @@ -24740,103 +9938,101 @@ pub impl ModelWithSimpleArrayModelImpl of dojo::model::Model felt252 { + fn entity_id(self: @Roles) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @ModelWithSimpleArray) -> Span { + fn keys(self: @Roles) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.player, ref serialized); - + core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn values(self: @ModelWithSimpleArray) -> Span { + fn values(self: @Roles) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.x, ref serialized); -core::serde::Serde::serialize(self.y, ref serialized); + core::serde::Serde::serialize(self.role_ids, ref serialized); core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() + fn layout() -> dojo::meta::Layout { + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @ModelWithSimpleArray) -> dojo::model::Layout { + fn instance_layout(self: @Roles) -> dojo::meta::Layout { Self::layout() } #[inline(always)] fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) + dojo::meta::layout::compute_packed_size(Self::layout()) } } #[starknet::interface] -pub trait Imodel_with_simple_array { - fn ensure_abi(self: @T, model: ModelWithSimpleArray); +pub trait Iroles { + fn ensure_abi(self: @T, model: Roles); } #[starknet::contract] -pub mod model_with_simple_array { - use super::ModelWithSimpleArray; - use super::Imodel_with_simple_array; +pub mod roles { + use super::Roles; + use super::Iroles; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() + fn layout(self: @ContractState) -> dojo::meta::Layout { + dojo::model::Model::::layout() } - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() + fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl model_with_simple_arrayImpl of Imodel_with_simple_array{ - fn ensure_abi(self: @ContractState, model: ModelWithSimpleArray) { + impl rolesImpl of Iroles{ + fn ensure_abi(self: @ContractState, model: Roles) { } } #[event] @@ -25084,7 +10280,7 @@ fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } @@ -25103,17 +10299,17 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } #[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__model_with_simple_arrayImpl__ensure_abi(mut data: Span::) -> Span:: { +fn __wrapper__rolesImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -25121,7 +10317,7 @@ fn __wrapper__model_with_simple_arrayImpl__ensure_abi(mut data: Span::) core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', ); let mut contract_state = unsafe_new_contract_state(); - model_with_simple_arrayImpl::ensure_abi(@contract_state, __arg_model); + rolesImpl::ensure_abi(@contract_state, __arg_model); let mut arr = ArrayTrait::new(); // References. // Result. @@ -25141,7 +10337,7 @@ pub mod __external { pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; pub use super::__wrapper__DojoModelImpl__layout as layout; pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__model_with_simple_arrayImpl__ensure_abi as ensure_abi; + pub use super::__wrapper__rolesImpl__ensure_abi as ensure_abi; } pub mod __l1_handler { } @@ -25185,248 +10381,158 @@ impl StorageStorageBaseCopy of core::traits::Copy::; impl StorageStorageBaseMutDrop of core::traits::Drop::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) -} - -#[generate_trait] -pub impl ModelWithSimpleArrayEntityStoreImpl of ModelWithSimpleArrayEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithSimpleArrayEntity { - ModelWithSimpleArrayModelEntityImpl::get(world, entity_id) - } - - fn update(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); +impl OnlyKeyModelIntrospect<> of dojo::meta::introspect::Introspect> { + #[inline(always)] + fn size() -> Option { + Option::None } - fn delete(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn layout() -> dojo::meta::Layout { + dojo::meta::Layout::Struct( + array![ + + ].span() + ) } - - fn get_x(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> u16 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 512066735765477566404754172672287371265995314501343422459174036873487219331 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithSimpleArray::x`: deserialization failed." - ); + #[inline(always)] + fn ty() -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Ty::Struct( + dojo::meta::introspect::Struct { + name: 'OnlyKeyModel', + attrs: array![].span(), + children: array![ + dojo::meta::introspect::Member { + name: 'id', + attrs: array!['key'].span(), + ty: dojo::meta::introspect::Introspect::::ty() } - core::option::OptionTrait::::unwrap(field_value) + ].span() + } + ) } +} + +#[derive(Drop, Serde)] +pub struct OnlyKeyModelEntity { + __id: felt252, // private field + +} - fn set_x(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher, value: u16) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 512066735765477566404754172672287371265995314501343422459174036873487219331, - serialized.span() - ); +#[generate_trait] +pub impl OnlyKeyModelEntityStoreImpl of OnlyKeyModelEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> OnlyKeyModelEntity { + OnlyKeyModelModelEntityImpl::get(world, entity_id) } - fn get_y(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Array { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 1591024729085637502504777720563487898377940395575083379770417352976841400819 - ); - let field_value = core::serde::Serde::>::deserialize(ref values); - - if core::option::OptionTrait::>::is_none(@field_value) { - panic!( - "Field `ModelWithSimpleArray::y`: deserialization failed." - ); - } - - core::option::OptionTrait::>::unwrap(field_value) + fn update(self: @OnlyKeyModelEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn set_y(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher, value: Array) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 1591024729085637502504777720563487898377940395575083379770417352976841400819, - serialized.span() - ); + fn delete(self: @OnlyKeyModelEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } + } #[generate_trait] -pub impl ModelWithSimpleArrayStoreImpl of ModelWithSimpleArrayStore { - fn entity_id_from_keys(player: ContractAddress) -> felt252 { +pub impl OnlyKeyModelStoreImpl of OnlyKeyModelStore { + fn entity_id_from_keys(id: felt252) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); + core::serde::Serde::serialize(@id, ref serialized); core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> ModelWithSimpleArray { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let id = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `ModelWithSimpleArray`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } + Option::Some( + OnlyKeyModel { + id, - core::option::OptionTrait::::unwrap(entity) + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithSimpleArray { + fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> OnlyKeyModel { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); + core::serde::Serde::serialize(@id, ref serialized); - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @ModelWithSimpleArray, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @OnlyKeyModel, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @ModelWithSimpleArray, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @OnlyKeyModel, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } - fn get_x(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> u16 { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 512066735765477566404754172672287371265995314501343422459174036873487219331 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithSimpleArray::x`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_x(self: @ModelWithSimpleArray, world: dojo::world::IWorldDispatcher, value: u16) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 512066735765477566404754172672287371265995314501343422459174036873487219331, - serialized.span() - ); - } - - fn get_y(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> Array { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 1591024729085637502504777720563487898377940395575083379770417352976841400819 - ); - - let field_value = core::serde::Serde::>::deserialize(ref values); - - if core::option::OptionTrait::>::is_none(@field_value) { - panic!( - "Field `ModelWithSimpleArray::y`: deserialization failed." - ); - } - - core::option::OptionTrait::>::unwrap(field_value) - } - - fn set_y(self: @ModelWithSimpleArray, world: dojo::world::IWorldDispatcher, value: Array) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 1591024729085637502504777720563487898377940395575083379770417352976841400819, - serialized.span() - ); - } - } -pub impl ModelWithSimpleArrayModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @ModelWithSimpleArrayEntity) -> felt252 { +pub impl OnlyKeyModelModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @OnlyKeyModelEntity) -> felt252 { *self.__id } - fn values(self: @ModelWithSimpleArrayEntity) -> Span { + fn values(self: @OnlyKeyModelEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.x, ref serialized); -core::serde::Serde::serialize(self.y, ref serialized); - + core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> ModelWithSimpleArrayEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `ModelWithSimpleArrayEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + Option::Some( + OnlyKeyModelEntity { + __id: entity_id, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithSimpleArrayEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> OnlyKeyModelEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `OnlyKeyModelEntity`: deserialization failed.") + } + } } - fn update_entity(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @OnlyKeyModelEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @OnlyKeyModelEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -25435,11 +10541,11 @@ core::serde::Serde::serialize(self.y, ref serialized); entity_id: felt252, member_id: felt252, ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -25449,16 +10555,16 @@ core::serde::Serde::serialize(self.y, ref serialized); } fn set_member( - self: @ModelWithSimpleArrayEntity, + self: @OnlyKeyModelEntity, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -25469,8 +10575,8 @@ core::serde::Serde::serialize(self.y, ref serialized); } } -pub impl ModelWithSimpleArrayModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithSimpleArray { +pub impl OnlyKeyModelModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> OnlyKeyModel { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -25479,11 +10585,16 @@ pub impl ModelWithSimpleArrayModelImpl of dojo::model::Model x, + Option::None => { + panic!("Model `OnlyKeyModel`: deserialization failed.") + } + } } fn set_model( - self: @ModelWithSimpleArray, + self: @OnlyKeyModel, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -25496,7 +10607,7 @@ pub impl ModelWithSimpleArrayModelImpl of dojo::model::Model @@ -25548,7 +10659,7 @@ pub impl ModelWithSimpleArrayModelImpl of dojo::model::Model ByteArray { - "ModelWithSimpleArray" + "OnlyKeyModel" } #[inline(always)] @@ -25558,7 +10669,7 @@ pub impl ModelWithSimpleArrayModelImpl of dojo::model::Model ByteArray { - "dojo_test-ModelWithSimpleArray" + "dojo_test-OnlyKeyModel" } #[inline(always)] @@ -25568,17 +10679,17 @@ pub impl ModelWithSimpleArrayModelImpl of dojo::model::Model felt252 { - 2155888289741706273257207428305937938996511115291276975807216945184181752777 + 2309092000941816896446401231215693966290521919639503466118437426986900396853 } #[inline(always)] - fn instance_selector(self: @ModelWithSimpleArray) -> felt252 { + fn instance_selector(self: @OnlyKeyModel) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 173141902001925402715103859951360389436088950156916962046507357841237663931 + 1001826121797570811408809643478760373535949956555931325019299477987282578617 } #[inline(always)] @@ -25587,34 +10698,32 @@ pub impl ModelWithSimpleArrayModelImpl of dojo::model::Model felt252 { + fn entity_id(self: @OnlyKeyModel) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @ModelWithSimpleArray) -> Span { + fn keys(self: @OnlyKeyModel) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.player, ref serialized); + core::serde::Serde::serialize(self.id, ref serialized); core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn values(self: @ModelWithSimpleArray) -> Span { + fn values(self: @OnlyKeyModel) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.x, ref serialized); -core::serde::Serde::serialize(self.y, ref serialized); - + core::array::ArrayTrait::span(@serialized) } #[inline(always)] fn layout() -> dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @ModelWithSimpleArray) -> dojo::meta::Layout { + fn instance_layout(self: @OnlyKeyModel) -> dojo::meta::Layout { Self::layout() } @@ -25625,65 +10734,65 @@ core::serde::Serde::serialize(self.y, ref serialized); } #[starknet::interface] -pub trait Imodel_with_simple_array { - fn ensure_abi(self: @T, model: ModelWithSimpleArray); +pub trait Ionly_key_model { + fn ensure_abi(self: @T, model: OnlyKeyModel); } #[starknet::contract] -pub mod model_with_simple_array { - use super::ModelWithSimpleArray; - use super::Imodel_with_simple_array; +pub mod only_key_model { + use super::OnlyKeyModel; + use super::Ionly_key_model; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() + dojo::model::Model::::layout() } fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl model_with_simple_arrayImpl of Imodel_with_simple_array{ - fn ensure_abi(self: @ContractState, model: ModelWithSimpleArray) { + impl only_key_modelImpl of Ionly_key_model{ + fn ensure_abi(self: @ContractState, model: OnlyKeyModel) { } } #[event] @@ -25955,12 +11064,12 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::) -> Span:: { +fn __wrapper__only_key_modelImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -25968,7 +11077,7 @@ fn __wrapper__model_with_simple_arrayImpl__ensure_abi(mut data: Span::) core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', ); let mut contract_state = unsafe_new_contract_state(); - model_with_simple_arrayImpl::ensure_abi(@contract_state, __arg_model); + only_key_modelImpl::ensure_abi(@contract_state, __arg_model); let mut arr = ArrayTrait::new(); // References. // Result. @@ -25988,7 +11097,7 @@ pub mod __external { pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; pub use super::__wrapper__DojoModelImpl__layout as layout; pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__model_with_simple_arrayImpl__ensure_abi as ensure_abi; + pub use super::__wrapper__only_key_modelImpl__ensure_abi as ensure_abi; } pub mod __l1_handler { } @@ -26033,7 +11142,7 @@ impl StorageStorageBaseMutDrop of core::traits::Drop::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -impl ModelWithByteArrayIntrospect<> of dojo::meta::introspect::Introspect> { +impl U256KeyModelIntrospect<> of dojo::meta::introspect::Introspect> { #[inline(always)] fn size() -> Option { Option::None @@ -26042,15 +11151,7 @@ impl ModelWithByteArrayIntrospect<> of dojo::meta::introspect::Introspect dojo::meta::Layout { dojo::meta::Layout::Struct( array![ - dojo::meta::FieldLayout { - selector: 512066735765477566404754172672287371265995314501343422459174036873487219331, - layout: dojo::meta::introspect::Introspect::::layout() - }, -dojo::meta::FieldLayout { - selector: 1591024729085637502504777720563487898377940395575083379770417352976841400819, - layout: dojo::meta::introspect::Introspect::::layout() - } + ].span() ) } @@ -26059,23 +11160,13 @@ dojo::meta::FieldLayout { fn ty() -> dojo::meta::introspect::Ty { dojo::meta::introspect::Ty::Struct( dojo::meta::introspect::Struct { - name: 'ModelWithByteArray', + name: 'U256KeyModel', attrs: array![].span(), children: array![ dojo::meta::introspect::Member { - name: 'player', + name: 'id', attrs: array!['key'].span(), - ty: dojo::meta::introspect::Introspect::::ty() - }, -dojo::meta::introspect::Member { - name: 'x', - attrs: array![].span(), - ty: dojo::meta::introspect::Introspect::::ty() - }, -dojo::meta::introspect::Member { - name: 'y', - attrs: array![].span(), - ty: dojo::meta::introspect::Ty::ByteArray + ty: dojo::meta::introspect::Introspect::::ty() } ].span() @@ -26085,251 +11176,119 @@ dojo::meta::introspect::Member { } #[derive(Drop, Serde)] -pub struct ModelWithByteArrayEntity { +pub struct U256KeyModelEntity { __id: felt252, // private field - pub x: u16, -pub y: ByteArray, -<<<<<<< HEAD - + } #[generate_trait] -pub impl ModelWithByteArrayEntityStoreImpl of ModelWithByteArrayEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithByteArrayEntity { - ModelWithByteArrayModelEntityImpl::get(world, entity_id) +pub impl U256KeyModelEntityStoreImpl of U256KeyModelEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> U256KeyModelEntity { + U256KeyModelModelEntityImpl::get(world, entity_id) } - fn update(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn update(self: @U256KeyModelEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn delete(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn delete(self: @U256KeyModelEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } - fn get_x(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> u16 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 512066735765477566404754172672287371265995314501343422459174036873487219331 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithByteArray::x`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_x(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher, value: u16) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 512066735765477566404754172672287371265995314501343422459174036873487219331, - serialized.span() - ); - } - - fn get_y(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ByteArray { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 1591024729085637502504777720563487898377940395575083379770417352976841400819 - ); - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithByteArray::y`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_y(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher, value: ByteArray) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 1591024729085637502504777720563487898377940395575083379770417352976841400819, - serialized.span() - ); - } - } #[generate_trait] -pub impl ModelWithByteArrayStoreImpl of ModelWithByteArrayStore { - fn entity_id_from_keys(player: ContractAddress) -> felt252 { +pub impl U256KeyModelStoreImpl of U256KeyModelStore { + fn entity_id_from_keys() -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); - + core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> ModelWithByteArray { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); - - let entity = core::serde::Serde::::deserialize(ref serialized); - - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `ModelWithByteArray`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } + fn from_values(ref keys: Span, ref values: Span) -> Option { + + - core::option::OptionTrait::::unwrap(entity) + Option::Some( + U256KeyModel { + + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithByteArray { + fn get(world: dojo::world::IWorldDispatcher, ) -> U256KeyModel { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); - + - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @ModelWithByteArray, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @U256KeyModel, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @ModelWithByteArray, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @U256KeyModel, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } - fn get_x(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> u16 { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 512066735765477566404754172672287371265995314501343422459174036873487219331 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithByteArray::x`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_x(self: @ModelWithByteArray, world: dojo::world::IWorldDispatcher, value: u16) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 512066735765477566404754172672287371265995314501343422459174036873487219331, - serialized.span() - ); - } - - fn get_y(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ByteArray { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 1591024729085637502504777720563487898377940395575083379770417352976841400819 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithByteArray::y`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_y(self: @ModelWithByteArray, world: dojo::world::IWorldDispatcher, value: ByteArray) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 1591024729085637502504777720563487898377940395575083379770417352976841400819, - serialized.span() - ); - } - } -pub impl ModelWithByteArrayModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @ModelWithByteArrayEntity) -> felt252 { +pub impl U256KeyModelModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @U256KeyModelEntity) -> felt252 { *self.__id } - fn values(self: @ModelWithByteArrayEntity) -> Span { + fn values(self: @U256KeyModelEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.x, ref serialized); -core::serde::Serde::serialize(self.y, ref serialized); - + core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> ModelWithByteArrayEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `ModelWithByteArrayEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + Option::Some( + U256KeyModelEntity { + __id: entity_id, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithByteArrayEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> U256KeyModelEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `U256KeyModelEntity`: deserialization failed.") + } + } } - fn update_entity(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @U256KeyModelEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @U256KeyModelEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -26338,11 +11297,11 @@ core::serde::Serde::serialize(self.y, ref serialized); entity_id: felt252, member_id: felt252, ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -26352,16 +11311,16 @@ core::serde::Serde::serialize(self.y, ref serialized); } fn set_member( - self: @ModelWithByteArrayEntity, + self: @U256KeyModelEntity, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -26372,8 +11331,8 @@ core::serde::Serde::serialize(self.y, ref serialized); } } -pub impl ModelWithByteArrayModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithByteArray { +pub impl U256KeyModelModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> U256KeyModel { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -26382,11 +11341,16 @@ pub impl ModelWithByteArrayModelImpl of dojo::model::Model { ); let mut _keys = keys; - ModelWithByteArrayStore::from_values(ref _keys, ref values) + match U256KeyModelStore::from_values(ref _keys, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("Model `U256KeyModel`: deserialization failed.") + } + } } fn set_model( - self: @ModelWithByteArray, + self: @U256KeyModel, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -26399,7 +11363,7 @@ pub impl ModelWithByteArrayModelImpl of dojo::model::Model { } fn delete_model( - self: @ModelWithByteArray, + self: @U256KeyModel, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::delete_entity( @@ -26430,7 +11394,7 @@ pub impl ModelWithByteArrayModelImpl of dojo::model::Model { } fn set_member( - self: @ModelWithByteArray, + self: @U256KeyModel, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span @@ -26451,7 +11415,7 @@ pub impl ModelWithByteArrayModelImpl of dojo::model::Model { #[inline(always)] fn name() -> ByteArray { - "ModelWithByteArray" + "U256KeyModel" } #[inline(always)] @@ -26461,7 +11425,7 @@ pub impl ModelWithByteArrayModelImpl of dojo::model::Model { #[inline(always)] fn tag() -> ByteArray { - "dojo_test-ModelWithByteArray" + "dojo_test-U256KeyModel" } #[inline(always)] @@ -26471,17 +11435,17 @@ pub impl ModelWithByteArrayModelImpl of dojo::model::Model { #[inline(always)] fn selector() -> felt252 { - 2309493726682581230048608406375650493303358263694405202817326852234706548038 + 2221887666320363067192826725795502610968343119143207326025439486865385474790 } #[inline(always)] - fn instance_selector(self: @ModelWithByteArray) -> felt252 { + fn instance_selector(self: @U256KeyModel) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 2176409715042145900636260236501596599545103472111273072320531220776338338674 + 1848733002266458148515852001373055968326209639346734967305014900020806934517 } #[inline(always)] @@ -26490,103 +11454,100 @@ pub impl ModelWithByteArrayModelImpl of dojo::model::Model { } #[inline(always)] - fn entity_id(self: @ModelWithByteArray) -> felt252 { + fn entity_id(self: @U256KeyModel) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @ModelWithByteArray) -> Span { + fn keys(self: @U256KeyModel) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.player, ref serialized); - + core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn values(self: @ModelWithByteArray) -> Span { + fn values(self: @U256KeyModel) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.x, ref serialized); -core::serde::Serde::serialize(self.y, ref serialized); - + core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() + fn layout() -> dojo::meta::Layout { + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @ModelWithByteArray) -> dojo::model::Layout { + fn instance_layout(self: @U256KeyModel) -> dojo::meta::Layout { Self::layout() } #[inline(always)] fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) + dojo::meta::layout::compute_packed_size(Self::layout()) } } #[starknet::interface] -pub trait Imodel_with_byte_array { - fn ensure_abi(self: @T, model: ModelWithByteArray); +pub trait Iu_256_key_model { + fn ensure_abi(self: @T, model: U256KeyModel); } #[starknet::contract] -pub mod model_with_byte_array { - use super::ModelWithByteArray; - use super::Imodel_with_byte_array; +pub mod u_256_key_model { + use super::U256KeyModel; + use super::Iu_256_key_model; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() + fn layout(self: @ContractState) -> dojo::meta::Layout { + dojo::model::Model::::layout() } - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() + fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl model_with_byte_arrayImpl of Imodel_with_byte_array{ - fn ensure_abi(self: @ContractState, model: ModelWithByteArray) { + impl u_256_key_modelImpl of Iu_256_key_model{ + fn ensure_abi(self: @ContractState, model: U256KeyModel) { } } #[event] @@ -26834,7 +11795,7 @@ fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } @@ -26853,17 +11814,17 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } #[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__model_with_byte_arrayImpl__ensure_abi(mut data: Span::) -> Span:: { +fn __wrapper__u_256_key_modelImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -26871,7 +11832,7 @@ fn __wrapper__model_with_byte_arrayImpl__ensure_abi(mut data: Span::) - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', ); let mut contract_state = unsafe_new_contract_state(); - model_with_byte_arrayImpl::ensure_abi(@contract_state, __arg_model); + u_256_key_modelImpl::ensure_abi(@contract_state, __arg_model); let mut arr = ArrayTrait::new(); // References. // Result. @@ -26891,7 +11852,7 @@ pub mod __external { pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; pub use super::__wrapper__DojoModelImpl__layout as layout; pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__model_with_byte_arrayImpl__ensure_abi as ensure_abi; + pub use super::__wrapper__u_256_key_modelImpl__ensure_abi as ensure_abi; } pub mod __l1_handler { } @@ -26935,78 +11896,99 @@ impl StorageStorageBaseCopy of core::traits::Copy::; impl StorageStorageBaseMutDrop of core::traits::Drop::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) -} - -#[generate_trait] -pub impl ModelWithByteArrayEntityStoreImpl of ModelWithByteArrayEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithByteArrayEntity { - ModelWithByteArrayModelEntityImpl::get(world, entity_id) +impl PlayerIntrospect<> of dojo::meta::introspect::Introspect> { + #[inline(always)] + fn size() -> Option { + Option::Some(1) } - fn update(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn layout() -> dojo::meta::Layout { + dojo::meta::Layout::Struct( + array![ + dojo::meta::FieldLayout { + selector: 1528802474226268325865027367859591458315299653151958663884057507666229546336, + layout: dojo::meta::introspect::Introspect::::layout() + } + ].span() + ) } - fn delete(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); - } + #[inline(always)] + fn ty() -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Ty::Struct( + dojo::meta::introspect::Struct { + name: 'Player', + attrs: array![].span(), + children: array![ + dojo::meta::introspect::Member { + name: 'game', + attrs: array!['key'].span(), + ty: dojo::meta::introspect::Introspect::::ty() + }, +dojo::meta::introspect::Member { + name: 'player', + attrs: array!['key'].span(), + ty: dojo::meta::introspect::Introspect::::ty() + }, +dojo::meta::introspect::Member { + name: 'name', + attrs: array![].span(), + ty: dojo::meta::introspect::Introspect::::ty() + } - - fn get_x(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> u16 { - let mut values = dojo::model::ModelEntity::::get_member( - world, - entity_id, - 512066735765477566404754172672287371265995314501343422459174036873487219331 - ); - let field_value = core::serde::Serde::::deserialize(ref values); + ].span() + } + ) + } +} + +#[derive(Drop, Serde)] +pub struct PlayerEntity { + __id: felt252, // private field + pub name: felt252, - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithByteArray::x`: deserialization failed." - ); - } +} - core::option::OptionTrait::::unwrap(field_value) +#[generate_trait] +pub impl PlayerEntityStoreImpl of PlayerEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> PlayerEntity { + PlayerModelEntityImpl::get(world, entity_id) } - fn set_x(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher, value: u16) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); + fn update(self: @PlayerEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); + } - self.set_member( - world, - 512066735765477566404754172672287371265995314501343422459174036873487219331, - serialized.span() - ); + fn delete(self: @PlayerEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } - fn get_y(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ByteArray { - let mut values = dojo::model::ModelEntity::::get_member( + + fn get_name(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> felt252 { + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, - 1591024729085637502504777720563487898377940395575083379770417352976841400819 + 1528802474226268325865027367859591458315299653151958663884057507666229546336 ); - let field_value = core::serde::Serde::::deserialize(ref values); + let field_value = core::serde::Serde::::deserialize(ref values); - if core::option::OptionTrait::::is_none(@field_value) { + if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `ModelWithByteArray::y`: deserialization failed." + "Field `Player::name`: deserialization failed." ); } - core::option::OptionTrait::::unwrap(field_value) + core::option::OptionTrait::::unwrap(field_value) } - fn set_y(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher, value: ByteArray) { + fn set_name(self: @PlayerEntity, world: dojo::world::IWorldDispatcher, value: felt252) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); self.set_member( world, - 1591024729085637502504777720563487898377940395575083379770417352976841400819, + 1528802474226268325865027367859591458315299653151958663884057507666229546336, serialized.span() ); } @@ -27014,169 +11996,143 @@ pub impl ModelWithByteArrayEntityStoreImpl of ModelWithByteArrayEntityStore { } #[generate_trait] -pub impl ModelWithByteArrayStoreImpl of ModelWithByteArrayStore { - fn entity_id_from_keys(player: ContractAddress) -> felt252 { +pub impl PlayerStoreImpl of PlayerStore { + fn entity_id_from_keys(game: felt252, player: ContractAddress) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); + core::serde::Serde::serialize(@game, ref serialized); +core::serde::Serde::serialize(@player, ref serialized); core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> ModelWithByteArray { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let game = core::serde::Serde::::deserialize(ref keys)?; +let player = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let name = core::serde::Serde::::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `ModelWithByteArray`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + Player { + game, +player, + + name, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithByteArray { + fn get(world: dojo::world::IWorldDispatcher, game: felt252, player: ContractAddress) -> Player { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); + core::serde::Serde::serialize(@game, ref serialized); +core::serde::Serde::serialize(@player, ref serialized); - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @ModelWithByteArray, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @Player, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @ModelWithByteArray, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @Player, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } - fn get_x(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> u16 { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); - - - let mut values = dojo::model::Model::::get_member( - world, - serialized.span(), - 512066735765477566404754172672287371265995314501343422459174036873487219331 - ); - - let field_value = core::serde::Serde::::deserialize(ref values); - - if core::option::OptionTrait::::is_none(@field_value) { - panic!( - "Field `ModelWithByteArray::x`: deserialization failed." - ); - } - - core::option::OptionTrait::::unwrap(field_value) - } - - fn set_x(self: @ModelWithByteArray, world: dojo::world::IWorldDispatcher, value: u16) { - let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@value, ref serialized); - - self.set_member( - world, - 512066735765477566404754172672287371265995314501343422459174036873487219331, - serialized.span() - ); - } - - fn get_y(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ByteArray { + fn get_name(world: dojo::world::IWorldDispatcher, game: felt252, player: ContractAddress) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(@player, ref serialized); + core::serde::Serde::serialize(@game, ref serialized); +core::serde::Serde::serialize(@player, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), - 1591024729085637502504777720563487898377940395575083379770417352976841400819 + 1528802474226268325865027367859591458315299653151958663884057507666229546336 ); - let field_value = core::serde::Serde::::deserialize(ref values); + let field_value = core::serde::Serde::::deserialize(ref values); - if core::option::OptionTrait::::is_none(@field_value) { + if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `ModelWithByteArray::y`: deserialization failed." + "Field `Player::name`: deserialization failed." ); } - core::option::OptionTrait::::unwrap(field_value) + core::option::OptionTrait::::unwrap(field_value) } - fn set_y(self: @ModelWithByteArray, world: dojo::world::IWorldDispatcher, value: ByteArray) { + fn set_name(self: @Player, world: dojo::world::IWorldDispatcher, value: felt252) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); self.set_member( world, - 1591024729085637502504777720563487898377940395575083379770417352976841400819, + 1528802474226268325865027367859591458315299653151958663884057507666229546336, serialized.span() ); } } -pub impl ModelWithByteArrayModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @ModelWithByteArrayEntity) -> felt252 { +pub impl PlayerModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @PlayerEntity) -> felt252 { *self.__id } - fn values(self: @ModelWithByteArrayEntity) -> Span { + fn values(self: @PlayerEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.x, ref serialized); -core::serde::Serde::serialize(self.y, ref serialized); + core::serde::Serde::serialize(self.name, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> ModelWithByteArrayEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let name = core::serde::Serde::::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `ModelWithByteArrayEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + PlayerEntity { + __id: entity_id, + name, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithByteArrayEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> PlayerEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `PlayerEntity`: deserialization failed.") + } + } } - fn update_entity(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @PlayerEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @PlayerEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -27185,11 +12141,11 @@ core::serde::Serde::serialize(self.y, ref serialized); entity_id: felt252, member_id: felt252, ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -27199,16 +12155,16 @@ core::serde::Serde::serialize(self.y, ref serialized); } fn set_member( - self: @ModelWithByteArrayEntity, + self: @PlayerEntity, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -27219,8 +12175,8 @@ core::serde::Serde::serialize(self.y, ref serialized); } } -pub impl ModelWithByteArrayModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithByteArray { +pub impl PlayerModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> Player { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -27229,11 +12185,16 @@ pub impl ModelWithByteArrayModelImpl of dojo::model::Model { ); let mut _keys = keys; - ModelWithByteArrayStore::from_values(ref _keys, ref values) + match PlayerStore::from_values(ref _keys, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("Model `Player`: deserialization failed.") + } + } } fn set_model( - self: @ModelWithByteArray, + self: @Player, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -27246,7 +12207,7 @@ pub impl ModelWithByteArrayModelImpl of dojo::model::Model { } fn delete_model( - self: @ModelWithByteArray, + self: @Player, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::delete_entity( @@ -27277,7 +12238,7 @@ pub impl ModelWithByteArrayModelImpl of dojo::model::Model { } fn set_member( - self: @ModelWithByteArray, + self: @Player, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span @@ -27298,7 +12259,7 @@ pub impl ModelWithByteArrayModelImpl of dojo::model::Model { #[inline(always)] fn name() -> ByteArray { - "ModelWithByteArray" + "Player" } #[inline(always)] @@ -27308,7 +12269,7 @@ pub impl ModelWithByteArrayModelImpl of dojo::model::Model { #[inline(always)] fn tag() -> ByteArray { - "dojo_test-ModelWithByteArray" + "dojo_test-Player" } #[inline(always)] @@ -27318,17 +12279,17 @@ pub impl ModelWithByteArrayModelImpl of dojo::model::Model { #[inline(always)] fn selector() -> felt252 { - 2309493726682581230048608406375650493303358263694405202817326852234706548038 + 32472305970791489884889070587064570056671760620943135506258424375410423946 } #[inline(always)] - fn instance_selector(self: @ModelWithByteArray) -> felt252 { + fn instance_selector(self: @Player) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 2176409715042145900636260236501596599545103472111273072320531220776338338674 + 1073075359926275415180704315933677548333097210683379121732618306925003101845 } #[inline(always)] @@ -27337,34 +12298,34 @@ pub impl ModelWithByteArrayModelImpl of dojo::model::Model { } #[inline(always)] - fn entity_id(self: @ModelWithByteArray) -> felt252 { + fn entity_id(self: @Player) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @ModelWithByteArray) -> Span { + fn keys(self: @Player) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.player, ref serialized); + core::serde::Serde::serialize(self.game, ref serialized); +core::serde::Serde::serialize(self.player, ref serialized); core::array::ArrayTrait::span(@serialized) } #[inline(always)] - fn values(self: @ModelWithByteArray) -> Span { + fn values(self: @Player) -> Span { let mut serialized = core::array::ArrayTrait::new(); - core::serde::Serde::serialize(self.x, ref serialized); -core::serde::Serde::serialize(self.y, ref serialized); + core::serde::Serde::serialize(self.name, ref serialized); core::array::ArrayTrait::span(@serialized) } #[inline(always)] fn layout() -> dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @ModelWithByteArray) -> dojo::meta::Layout { + fn instance_layout(self: @Player) -> dojo::meta::Layout { Self::layout() } @@ -27375,65 +12336,65 @@ core::serde::Serde::serialize(self.y, ref serialized); } #[starknet::interface] -pub trait Imodel_with_byte_array { - fn ensure_abi(self: @T, model: ModelWithByteArray); +pub trait Iplayer { + fn ensure_abi(self: @T, model: Player); } #[starknet::contract] -pub mod model_with_byte_array { - use super::ModelWithByteArray; - use super::Imodel_with_byte_array; +pub mod player { + use super::Player; + use super::Iplayer; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() + dojo::model::Model::::layout() } fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl model_with_byte_arrayImpl of Imodel_with_byte_array{ - fn ensure_abi(self: @ContractState, model: ModelWithByteArray) { + impl playerImpl of Iplayer{ + fn ensure_abi(self: @ContractState, model: Player) { } } #[event] @@ -27705,12 +12666,12 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::) -> Span:: { +fn __wrapper__playerImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -27718,7 +12679,7 @@ fn __wrapper__model_with_byte_arrayImpl__ensure_abi(mut data: Span::) - core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', ); let mut contract_state = unsafe_new_contract_state(); - model_with_byte_arrayImpl::ensure_abi(@contract_state, __arg_model); + playerImpl::ensure_abi(@contract_state, __arg_model); let mut arr = ArrayTrait::new(); // References. // Result. @@ -27738,7 +12699,7 @@ pub mod __external { pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; pub use super::__wrapper__DojoModelImpl__layout as layout; pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__model_with_byte_arrayImpl__ensure_abi as ensure_abi; + pub use super::__wrapper__playerImpl__ensure_abi as ensure_abi; } pub mod __l1_handler { } @@ -27783,7 +12744,7 @@ impl StorageStorageBaseMutDrop of core::traits::Drop::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -impl ModelWithComplexArrayIntrospect<> of dojo::meta::introspect::Introspect> { +impl ModelWithSimpleArrayIntrospect<> of dojo::meta::introspect::Introspect> { #[inline(always)] fn size() -> Option { Option::None @@ -27798,7 +12759,7 @@ impl ModelWithComplexArrayIntrospect<> of dojo::meta::introspect::Introspect + layout: dojo::meta::introspect::Introspect:: >::layout() } ].span() @@ -27809,7 +12770,7 @@ dojo::meta::FieldLayout { fn ty() -> dojo::meta::introspect::Ty { dojo::meta::introspect::Ty::Struct( dojo::meta::introspect::Struct { - name: 'ModelWithComplexArray', + name: 'ModelWithSimpleArray', attrs: array![].span(), children: array![ dojo::meta::introspect::Member { @@ -27827,7 +12788,7 @@ dojo::meta::introspect::Member { attrs: array![].span(), ty: dojo::meta::introspect::Ty::Array( array![ - dojo::meta::introspect::Introspect::::ty() + dojo::meta::introspect::Introspect::::ty() ].span() ) } @@ -27839,31 +12800,30 @@ dojo::meta::introspect::Member { } #[derive(Drop, Serde)] -pub struct ModelWithComplexArrayEntity { +pub struct ModelWithSimpleArrayEntity { __id: felt252, // private field pub x: u16, -pub y: Array, -<<<<<<< HEAD +pub y: Array, } #[generate_trait] -pub impl ModelWithComplexArrayEntityStoreImpl of ModelWithComplexArrayEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithComplexArrayEntity { - ModelWithComplexArrayModelEntityImpl::get(world, entity_id) +pub impl ModelWithSimpleArrayEntityStoreImpl of ModelWithSimpleArrayEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithSimpleArrayEntity { + ModelWithSimpleArrayModelEntityImpl::get(world, entity_id) } - fn update(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn update(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn delete(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn delete(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } fn get_x(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> u16 { - let mut values = dojo::model::ModelEntity::::get_member( + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, 512066735765477566404754172672287371265995314501343422459174036873487219331 @@ -27872,14 +12832,14 @@ pub impl ModelWithComplexArrayEntityStoreImpl of ModelWithComplexArrayEntityStor if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `ModelWithComplexArray::x`: deserialization failed." + "Field `ModelWithSimpleArray::x`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_x(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher, value: u16) { + fn set_x(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher, value: u16) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -27890,24 +12850,24 @@ pub impl ModelWithComplexArrayEntityStoreImpl of ModelWithComplexArrayEntityStor ); } - fn get_y(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Array { - let mut values = dojo::model::ModelEntity::::get_member( + fn get_y(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Array { + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, 1591024729085637502504777720563487898377940395575083379770417352976841400819 ); - let field_value = core::serde::Serde::>::deserialize(ref values); + let field_value = core::serde::Serde::>::deserialize(ref values); - if core::option::OptionTrait::>::is_none(@field_value) { + if core::option::OptionTrait::>::is_none(@field_value) { panic!( - "Field `ModelWithComplexArray::y`: deserialization failed." + "Field `ModelWithSimpleArray::y`: deserialization failed." ); } - core::option::OptionTrait::>::unwrap(field_value) + core::option::OptionTrait::>::unwrap(field_value) } - fn set_y(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher, value: Array) { + fn set_y(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher, value: Array) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -27921,7 +12881,7 @@ pub impl ModelWithComplexArrayEntityStoreImpl of ModelWithComplexArrayEntityStor } #[generate_trait] -pub impl ModelWithComplexArrayStoreImpl of ModelWithComplexArrayStore { +pub impl ModelWithSimpleArrayStoreImpl of ModelWithSimpleArrayStore { fn entity_id_from_keys(player: ContractAddress) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@player, ref serialized); @@ -27929,37 +12889,38 @@ pub impl ModelWithComplexArrayStoreImpl of ModelWithComplexArrayStore { core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> ModelWithComplexArray { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let player = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let x = core::serde::Serde::::deserialize(ref values)?; +let y = core::serde::Serde::>::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `ModelWithComplexArray`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + ModelWithSimpleArray { + player, + + x, +y, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithComplexArray { + fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithSimpleArray { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@player, ref serialized); - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @ModelWithComplexArray, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @ModelWithSimpleArray, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @ModelWithComplexArray, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @ModelWithSimpleArray, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } @@ -27968,7 +12929,7 @@ pub impl ModelWithComplexArrayStoreImpl of ModelWithComplexArrayStore { core::serde::Serde::serialize(@player, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), 512066735765477566404754172672287371265995314501343422459174036873487219331 @@ -27978,14 +12939,14 @@ pub impl ModelWithComplexArrayStoreImpl of ModelWithComplexArrayStore { if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `ModelWithComplexArray::x`: deserialization failed." + "Field `ModelWithSimpleArray::x`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_x(self: @ModelWithComplexArray, world: dojo::world::IWorldDispatcher, value: u16) { + fn set_x(self: @ModelWithSimpleArray, world: dojo::world::IWorldDispatcher, value: u16) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -27996,29 +12957,29 @@ pub impl ModelWithComplexArrayStoreImpl of ModelWithComplexArrayStore { ); } - fn get_y(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> Array { + fn get_y(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> Array { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@player, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), 1591024729085637502504777720563487898377940395575083379770417352976841400819 ); - let field_value = core::serde::Serde::>::deserialize(ref values); + let field_value = core::serde::Serde::>::deserialize(ref values); - if core::option::OptionTrait::>::is_none(@field_value) { + if core::option::OptionTrait::>::is_none(@field_value) { panic!( - "Field `ModelWithComplexArray::y`: deserialization failed." + "Field `ModelWithSimpleArray::y`: deserialization failed." ); } - core::option::OptionTrait::>::unwrap(field_value) + core::option::OptionTrait::>::unwrap(field_value) } - fn set_y(self: @ModelWithComplexArray, world: dojo::world::IWorldDispatcher, value: Array) { + fn set_y(self: @ModelWithSimpleArray, world: dojo::world::IWorldDispatcher, value: Array) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -28031,12 +12992,12 @@ pub impl ModelWithComplexArrayStoreImpl of ModelWithComplexArrayStore { } -pub impl ModelWithComplexArrayModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @ModelWithComplexArrayEntity) -> felt252 { +pub impl ModelWithSimpleArrayModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @ModelWithSimpleArrayEntity) -> felt252 { *self.__id } - fn values(self: @ModelWithComplexArrayEntity) -> Span { + fn values(self: @ModelWithSimpleArrayEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.x, ref serialized); core::serde::Serde::serialize(self.y, ref serialized); @@ -28044,46 +13005,52 @@ core::serde::Serde::serialize(self.y, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> ModelWithComplexArrayEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let x = core::serde::Serde::::deserialize(ref values)?; +let y = core::serde::Serde::>::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `ModelWithComplexArrayEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + ModelWithSimpleArrayEntity { + __id: entity_id, + x, +y, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithComplexArrayEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithSimpleArrayEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `ModelWithSimpleArrayEntity`: deserialization failed.") + } + } } - fn update_entity(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -28092,11 +13059,11 @@ core::serde::Serde::serialize(self.y, ref serialized); entity_id: felt252, member_id: felt252, ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -28106,16 +13073,16 @@ core::serde::Serde::serialize(self.y, ref serialized); } fn set_member( - self: @ModelWithComplexArrayEntity, + self: @ModelWithSimpleArrayEntity, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -28126,8 +13093,8 @@ core::serde::Serde::serialize(self.y, ref serialized); } } -pub impl ModelWithComplexArrayModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithComplexArray { +pub impl ModelWithSimpleArrayModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithSimpleArray { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -28136,11 +13103,16 @@ pub impl ModelWithComplexArrayModelImpl of dojo::model::Model x, + Option::None => { + panic!("Model `ModelWithSimpleArray`: deserialization failed.") + } + } } fn set_model( - self: @ModelWithComplexArray, + self: @ModelWithSimpleArray, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -28153,7 +13125,7 @@ pub impl ModelWithComplexArrayModelImpl of dojo::model::Model @@ -28205,7 +13177,7 @@ pub impl ModelWithComplexArrayModelImpl of dojo::model::Model ByteArray { - "ModelWithComplexArray" + "ModelWithSimpleArray" } #[inline(always)] @@ -28215,7 +13187,7 @@ pub impl ModelWithComplexArrayModelImpl of dojo::model::Model ByteArray { - "dojo_test-ModelWithComplexArray" + "dojo_test-ModelWithSimpleArray" } #[inline(always)] @@ -28225,17 +13197,17 @@ pub impl ModelWithComplexArrayModelImpl of dojo::model::Model felt252 { - 1293570145807126672811046976011709110822800800255162893130594439459909679461 + 2155888289741706273257207428305937938996511115291276975807216945184181752777 } #[inline(always)] - fn instance_selector(self: @ModelWithComplexArray) -> felt252 { + fn instance_selector(self: @ModelWithSimpleArray) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 2866472224509756243720005045848892642397514372569303051745174230372637769655 + 173141902001925402715103859951360389436088950156916962046507357841237663931 } #[inline(always)] @@ -28244,12 +13216,12 @@ pub impl ModelWithComplexArrayModelImpl of dojo::model::Model felt252 { + fn entity_id(self: @ModelWithSimpleArray) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @ModelWithComplexArray) -> Span { + fn keys(self: @ModelWithSimpleArray) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.player, ref serialized); @@ -28257,7 +13229,7 @@ pub impl ModelWithComplexArrayModelImpl of dojo::model::Model Span { + fn values(self: @ModelWithSimpleArray) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.x, ref serialized); core::serde::Serde::serialize(self.y, ref serialized); @@ -28266,81 +13238,81 @@ core::serde::Serde::serialize(self.y, ref serialized); } #[inline(always)] - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() + fn layout() -> dojo::meta::Layout { + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @ModelWithComplexArray) -> dojo::model::Layout { + fn instance_layout(self: @ModelWithSimpleArray) -> dojo::meta::Layout { Self::layout() } #[inline(always)] fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) + dojo::meta::layout::compute_packed_size(Self::layout()) } } #[starknet::interface] -pub trait Imodel_with_complex_array { - fn ensure_abi(self: @T, model: ModelWithComplexArray); +pub trait Imodel_with_simple_array { + fn ensure_abi(self: @T, model: ModelWithSimpleArray); } #[starknet::contract] -pub mod model_with_complex_array { - use super::ModelWithComplexArray; - use super::Imodel_with_complex_array; +pub mod model_with_simple_array { + use super::ModelWithSimpleArray; + use super::Imodel_with_simple_array; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() + fn layout(self: @ContractState) -> dojo::meta::Layout { + dojo::model::Model::::layout() } - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() + fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl model_with_complex_arrayImpl of Imodel_with_complex_array{ - fn ensure_abi(self: @ContractState, model: ModelWithComplexArray) { + impl model_with_simple_arrayImpl of Imodel_with_simple_array{ + fn ensure_abi(self: @ContractState, model: ModelWithSimpleArray) { } } #[event] @@ -28588,7 +13560,7 @@ fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } @@ -28607,17 +13579,17 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } #[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__model_with_complex_arrayImpl__ensure_abi(mut data: Span::) -> Span:: { +fn __wrapper__model_with_simple_arrayImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -28625,7 +13597,7 @@ fn __wrapper__model_with_complex_arrayImpl__ensure_abi(mut data: Span:: core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', ); let mut contract_state = unsafe_new_contract_state(); - model_with_complex_arrayImpl::ensure_abi(@contract_state, __arg_model); + model_with_simple_arrayImpl::ensure_abi(@contract_state, __arg_model); let mut arr = ArrayTrait::new(); // References. // Result. @@ -28645,7 +13617,7 @@ pub mod __external { pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; pub use super::__wrapper__DojoModelImpl__layout as layout; pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__model_with_complex_arrayImpl__ensure_abi as ensure_abi; + pub use super::__wrapper__model_with_simple_arrayImpl__ensure_abi as ensure_abi; } pub mod __l1_handler { } @@ -28689,28 +13661,83 @@ impl StorageStorageBaseCopy of core::traits::Copy::; impl StorageStorageBaseMutDrop of core::traits::Drop::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) + +impl ModelWithByteArrayIntrospect<> of dojo::meta::introspect::Introspect> { + #[inline(always)] + fn size() -> Option { + Option::None + } + + fn layout() -> dojo::meta::Layout { + dojo::meta::Layout::Struct( + array![ + dojo::meta::FieldLayout { + selector: 512066735765477566404754172672287371265995314501343422459174036873487219331, + layout: dojo::meta::introspect::Introspect::::layout() + }, +dojo::meta::FieldLayout { + selector: 1591024729085637502504777720563487898377940395575083379770417352976841400819, + layout: dojo::meta::introspect::Introspect::::layout() + } + ].span() + ) + } + + #[inline(always)] + fn ty() -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Ty::Struct( + dojo::meta::introspect::Struct { + name: 'ModelWithByteArray', + attrs: array![].span(), + children: array![ + dojo::meta::introspect::Member { + name: 'player', + attrs: array!['key'].span(), + ty: dojo::meta::introspect::Introspect::::ty() + }, +dojo::meta::introspect::Member { + name: 'x', + attrs: array![].span(), + ty: dojo::meta::introspect::Introspect::::ty() + }, +dojo::meta::introspect::Member { + name: 'y', + attrs: array![].span(), + ty: dojo::meta::introspect::Ty::ByteArray + } + + ].span() + } + ) + } +} + +#[derive(Drop, Serde)] +pub struct ModelWithByteArrayEntity { + __id: felt252, // private field + pub x: u16, +pub y: ByteArray, } #[generate_trait] -pub impl ModelWithComplexArrayEntityStoreImpl of ModelWithComplexArrayEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithComplexArrayEntity { - ModelWithComplexArrayModelEntityImpl::get(world, entity_id) +pub impl ModelWithByteArrayEntityStoreImpl of ModelWithByteArrayEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithByteArrayEntity { + ModelWithByteArrayModelEntityImpl::get(world, entity_id) } - fn update(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn update(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn delete(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn delete(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } fn get_x(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> u16 { - let mut values = dojo::model::ModelEntity::::get_member( + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, 512066735765477566404754172672287371265995314501343422459174036873487219331 @@ -28719,14 +13746,14 @@ pub impl ModelWithComplexArrayEntityStoreImpl of ModelWithComplexArrayEntityStor if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `ModelWithComplexArray::x`: deserialization failed." + "Field `ModelWithByteArray::x`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_x(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher, value: u16) { + fn set_x(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher, value: u16) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -28737,24 +13764,24 @@ pub impl ModelWithComplexArrayEntityStoreImpl of ModelWithComplexArrayEntityStor ); } - fn get_y(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Array { - let mut values = dojo::model::ModelEntity::::get_member( + fn get_y(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ByteArray { + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, 1591024729085637502504777720563487898377940395575083379770417352976841400819 ); - let field_value = core::serde::Serde::>::deserialize(ref values); + let field_value = core::serde::Serde::::deserialize(ref values); - if core::option::OptionTrait::>::is_none(@field_value) { + if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `ModelWithComplexArray::y`: deserialization failed." + "Field `ModelWithByteArray::y`: deserialization failed." ); } - core::option::OptionTrait::>::unwrap(field_value) + core::option::OptionTrait::::unwrap(field_value) } - fn set_y(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher, value: Array) { + fn set_y(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher, value: ByteArray) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -28768,7 +13795,7 @@ pub impl ModelWithComplexArrayEntityStoreImpl of ModelWithComplexArrayEntityStor } #[generate_trait] -pub impl ModelWithComplexArrayStoreImpl of ModelWithComplexArrayStore { +pub impl ModelWithByteArrayStoreImpl of ModelWithByteArrayStore { fn entity_id_from_keys(player: ContractAddress) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@player, ref serialized); @@ -28776,37 +13803,38 @@ pub impl ModelWithComplexArrayStoreImpl of ModelWithComplexArrayStore { core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> ModelWithComplexArray { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let player = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let x = core::serde::Serde::::deserialize(ref values)?; +let y = core::serde::Serde::::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `ModelWithComplexArray`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + ModelWithByteArray { + player, + + x, +y, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithComplexArray { + fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithByteArray { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@player, ref serialized); - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @ModelWithComplexArray, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @ModelWithByteArray, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @ModelWithComplexArray, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @ModelWithByteArray, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } @@ -28815,7 +13843,7 @@ pub impl ModelWithComplexArrayStoreImpl of ModelWithComplexArrayStore { core::serde::Serde::serialize(@player, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), 512066735765477566404754172672287371265995314501343422459174036873487219331 @@ -28825,14 +13853,14 @@ pub impl ModelWithComplexArrayStoreImpl of ModelWithComplexArrayStore { if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `ModelWithComplexArray::x`: deserialization failed." + "Field `ModelWithByteArray::x`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_x(self: @ModelWithComplexArray, world: dojo::world::IWorldDispatcher, value: u16) { + fn set_x(self: @ModelWithByteArray, world: dojo::world::IWorldDispatcher, value: u16) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -28843,29 +13871,29 @@ pub impl ModelWithComplexArrayStoreImpl of ModelWithComplexArrayStore { ); } - fn get_y(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> Array { + fn get_y(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ByteArray { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@player, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), 1591024729085637502504777720563487898377940395575083379770417352976841400819 ); - let field_value = core::serde::Serde::>::deserialize(ref values); + let field_value = core::serde::Serde::::deserialize(ref values); - if core::option::OptionTrait::>::is_none(@field_value) { + if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `ModelWithComplexArray::y`: deserialization failed." + "Field `ModelWithByteArray::y`: deserialization failed." ); } - core::option::OptionTrait::>::unwrap(field_value) + core::option::OptionTrait::::unwrap(field_value) } - fn set_y(self: @ModelWithComplexArray, world: dojo::world::IWorldDispatcher, value: Array) { + fn set_y(self: @ModelWithByteArray, world: dojo::world::IWorldDispatcher, value: ByteArray) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -28878,12 +13906,12 @@ pub impl ModelWithComplexArrayStoreImpl of ModelWithComplexArrayStore { } -pub impl ModelWithComplexArrayModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @ModelWithComplexArrayEntity) -> felt252 { +pub impl ModelWithByteArrayModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @ModelWithByteArrayEntity) -> felt252 { *self.__id } - fn values(self: @ModelWithComplexArrayEntity) -> Span { + fn values(self: @ModelWithByteArrayEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.x, ref serialized); core::serde::Serde::serialize(self.y, ref serialized); @@ -28891,46 +13919,52 @@ core::serde::Serde::serialize(self.y, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> ModelWithComplexArrayEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let x = core::serde::Serde::::deserialize(ref values)?; +let y = core::serde::Serde::::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `ModelWithComplexArrayEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + ModelWithByteArrayEntity { + __id: entity_id, + x, +y, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithComplexArrayEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithByteArrayEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `ModelWithByteArrayEntity`: deserialization failed.") + } + } } - fn update_entity(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -28939,11 +13973,11 @@ core::serde::Serde::serialize(self.y, ref serialized); entity_id: felt252, member_id: felt252, ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -28953,16 +13987,16 @@ core::serde::Serde::serialize(self.y, ref serialized); } fn set_member( - self: @ModelWithComplexArrayEntity, + self: @ModelWithByteArrayEntity, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -28973,8 +14007,8 @@ core::serde::Serde::serialize(self.y, ref serialized); } } -pub impl ModelWithComplexArrayModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithComplexArray { +pub impl ModelWithByteArrayModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithByteArray { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -28983,11 +14017,16 @@ pub impl ModelWithComplexArrayModelImpl of dojo::model::Model x, + Option::None => { + panic!("Model `ModelWithByteArray`: deserialization failed.") + } + } } fn set_model( - self: @ModelWithComplexArray, + self: @ModelWithByteArray, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -29000,7 +14039,7 @@ pub impl ModelWithComplexArrayModelImpl of dojo::model::Model @@ -29052,7 +14091,7 @@ pub impl ModelWithComplexArrayModelImpl of dojo::model::Model ByteArray { - "ModelWithComplexArray" + "ModelWithByteArray" } #[inline(always)] @@ -29062,7 +14101,7 @@ pub impl ModelWithComplexArrayModelImpl of dojo::model::Model ByteArray { - "dojo_test-ModelWithComplexArray" + "dojo_test-ModelWithByteArray" } #[inline(always)] @@ -29072,17 +14111,17 @@ pub impl ModelWithComplexArrayModelImpl of dojo::model::Model felt252 { - 1293570145807126672811046976011709110822800800255162893130594439459909679461 + 2309493726682581230048608406375650493303358263694405202817326852234706548038 } #[inline(always)] - fn instance_selector(self: @ModelWithComplexArray) -> felt252 { + fn instance_selector(self: @ModelWithByteArray) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 2866472224509756243720005045848892642397514372569303051745174230372637769655 + 2176409715042145900636260236501596599545103472111273072320531220776338338674 } #[inline(always)] @@ -29091,12 +14130,12 @@ pub impl ModelWithComplexArrayModelImpl of dojo::model::Model felt252 { + fn entity_id(self: @ModelWithByteArray) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @ModelWithComplexArray) -> Span { + fn keys(self: @ModelWithByteArray) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.player, ref serialized); @@ -29104,7 +14143,7 @@ pub impl ModelWithComplexArrayModelImpl of dojo::model::Model Span { + fn values(self: @ModelWithByteArray) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.x, ref serialized); core::serde::Serde::serialize(self.y, ref serialized); @@ -29114,11 +14153,11 @@ core::serde::Serde::serialize(self.y, ref serialized); #[inline(always)] fn layout() -> dojo::meta::Layout { - dojo::meta::introspect::Introspect::::layout() + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @ModelWithComplexArray) -> dojo::meta::Layout { + fn instance_layout(self: @ModelWithByteArray) -> dojo::meta::Layout { Self::layout() } @@ -29129,65 +14168,65 @@ core::serde::Serde::serialize(self.y, ref serialized); } #[starknet::interface] -pub trait Imodel_with_complex_array { - fn ensure_abi(self: @T, model: ModelWithComplexArray); +pub trait Imodel_with_byte_array { + fn ensure_abi(self: @T, model: ModelWithByteArray); } #[starknet::contract] -pub mod model_with_complex_array { - use super::ModelWithComplexArray; - use super::Imodel_with_complex_array; +pub mod model_with_byte_array { + use super::ModelWithByteArray; + use super::Imodel_with_byte_array; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::meta::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } fn layout(self: @ContractState) -> dojo::meta::Layout { - dojo::model::Model::::layout() + dojo::model::Model::::layout() } fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { - dojo::meta::introspect::Introspect::::ty() + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl model_with_complex_arrayImpl of Imodel_with_complex_array{ - fn ensure_abi(self: @ContractState, model: ModelWithComplexArray) { + impl model_with_byte_arrayImpl of Imodel_with_byte_array{ + fn ensure_abi(self: @ContractState, model: ModelWithByteArray) { } } #[event] @@ -29459,12 +14498,12 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::) -> Span:: { +fn __wrapper__model_with_byte_arrayImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -29472,7 +14511,7 @@ fn __wrapper__model_with_complex_arrayImpl__ensure_abi(mut data: Span:: core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', ); let mut contract_state = unsafe_new_contract_state(); - model_with_complex_arrayImpl::ensure_abi(@contract_state, __arg_model); + model_with_byte_arrayImpl::ensure_abi(@contract_state, __arg_model); let mut arr = ArrayTrait::new(); // References. // Result. @@ -29492,7 +14531,7 @@ pub mod __external { pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; pub use super::__wrapper__DojoModelImpl__layout as layout; pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__model_with_complex_arrayImpl__ensure_abi as ensure_abi; + pub use super::__wrapper__model_with_byte_arrayImpl__ensure_abi as ensure_abi; } pub mod __l1_handler { } @@ -29537,10 +14576,10 @@ impl StorageStorageBaseMutDrop of core::traits::Drop::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -impl ModelWithTupleIntrospect<> of dojo::meta::introspect::Introspect> { +impl ModelWithComplexArrayIntrospect<> of dojo::meta::introspect::Introspect> { #[inline(always)] fn size() -> Option { - Option::Some(4) + Option::None } fn layout() -> dojo::meta::Layout { @@ -29552,13 +14591,8 @@ impl ModelWithTupleIntrospect<> of dojo::meta::introspect::Introspect::layout(), -dojo::meta::introspect::Introspect::::layout(), -dojo::meta::introspect::Introspect::::layout() - ].span() - ) + layout: dojo::meta::introspect::Introspect:: +>::layout() } ].span() ) @@ -29568,7 +14602,7 @@ dojo::meta::introspect::Introspect::::layout() fn ty() -> dojo::meta::introspect::Ty { dojo::meta::introspect::Ty::Struct( dojo::meta::introspect::Struct { - name: 'ModelWithTuple', + name: 'ModelWithComplexArray', attrs: array![].span(), children: array![ dojo::meta::introspect::Member { @@ -29584,13 +14618,11 @@ dojo::meta::introspect::Member { dojo::meta::introspect::Member { name: 'y', attrs: array![].span(), - ty: dojo::meta::introspect::Ty::Tuple( - array![ - dojo::meta::introspect::Introspect::::ty(), -dojo::meta::introspect::Introspect::::ty(), -dojo::meta::introspect::Introspect::::ty() - ].span() - ) + ty: dojo::meta::introspect::Ty::Array( + array![ + dojo::meta::introspect::Introspect::::ty() + ].span() + ) } ].span() @@ -29600,31 +14632,30 @@ dojo::meta::introspect::Introspect::::ty() } #[derive(Drop, Serde)] -pub struct ModelWithTupleEntity { +pub struct ModelWithComplexArrayEntity { __id: felt252, // private field pub x: u16, -pub y: (u8, u16, u32), -<<<<<<< HEAD +pub y: Array, } #[generate_trait] -pub impl ModelWithTupleEntityStoreImpl of ModelWithTupleEntityStore { - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithTupleEntity { - ModelWithTupleModelEntityImpl::get(world, entity_id) +pub impl ModelWithComplexArrayEntityStoreImpl of ModelWithComplexArrayEntityStore { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithComplexArrayEntity { + ModelWithComplexArrayModelEntityImpl::get(world, entity_id) } - fn update(self: @ModelWithTupleEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::update_entity(self, world); + fn update(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::update_entity(self, world); } - fn delete(self: @ModelWithTupleEntity, world: dojo::world::IWorldDispatcher) { - dojo::model::ModelEntity::::delete_entity(self, world); + fn delete(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher) { + dojo::model::ModelEntity::::delete_entity(self, world); } fn get_x(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> u16 { - let mut values = dojo::model::ModelEntity::::get_member( + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, 512066735765477566404754172672287371265995314501343422459174036873487219331 @@ -29633,14 +14664,14 @@ pub impl ModelWithTupleEntityStoreImpl of ModelWithTupleEntityStore { if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `ModelWithTuple::x`: deserialization failed." + "Field `ModelWithComplexArray::x`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_x(self: @ModelWithTupleEntity, world: dojo::world::IWorldDispatcher, value: u16) { + fn set_x(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher, value: u16) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -29651,24 +14682,24 @@ pub impl ModelWithTupleEntityStoreImpl of ModelWithTupleEntityStore { ); } - fn get_y(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> (u8, u16, u32) { - let mut values = dojo::model::ModelEntity::::get_member( + fn get_y(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> Array { + let mut values = dojo::model::ModelEntity::::get_member( world, entity_id, 1591024729085637502504777720563487898377940395575083379770417352976841400819 ); - let field_value = core::serde::Serde::<(u8, u16, u32)>::deserialize(ref values); + let field_value = core::serde::Serde::>::deserialize(ref values); - if core::option::OptionTrait::<(u8, u16, u32)>::is_none(@field_value) { + if core::option::OptionTrait::>::is_none(@field_value) { panic!( - "Field `ModelWithTuple::y`: deserialization failed." + "Field `ModelWithComplexArray::y`: deserialization failed." ); } - core::option::OptionTrait::<(u8, u16, u32)>::unwrap(field_value) + core::option::OptionTrait::>::unwrap(field_value) } - fn set_y(self: @ModelWithTupleEntity, world: dojo::world::IWorldDispatcher, value: (u8, u16, u32)) { + fn set_y(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher, value: Array) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -29682,7 +14713,7 @@ pub impl ModelWithTupleEntityStoreImpl of ModelWithTupleEntityStore { } #[generate_trait] -pub impl ModelWithTupleStoreImpl of ModelWithTupleStore { +pub impl ModelWithComplexArrayStoreImpl of ModelWithComplexArrayStore { fn entity_id_from_keys(player: ContractAddress) -> felt252 { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@player, ref serialized); @@ -29690,37 +14721,38 @@ pub impl ModelWithTupleStoreImpl of ModelWithTupleStore { core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> ModelWithTuple { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let player = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let x = core::serde::Serde::::deserialize(ref values)?; +let y = core::serde::Serde::>::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `ModelWithTuple`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + ModelWithComplexArray { + player, + + x, +y, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithTuple { + fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithComplexArray { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@player, ref serialized); - dojo::model::Model::::get(world, serialized.span()) + dojo::model::Model::::get(world, serialized.span()) } - fn set(self: @ModelWithTuple, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::set_model(self, world); + fn set(self: @ModelWithComplexArray, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::set_model(self, world); } - fn delete(self: @ModelWithTuple, world: dojo::world::IWorldDispatcher) { - dojo::model::Model::::delete_model(self, world); + fn delete(self: @ModelWithComplexArray, world: dojo::world::IWorldDispatcher) { + dojo::model::Model::::delete_model(self, world); } @@ -29729,7 +14761,7 @@ pub impl ModelWithTupleStoreImpl of ModelWithTupleStore { core::serde::Serde::serialize(@player, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), 512066735765477566404754172672287371265995314501343422459174036873487219331 @@ -29739,14 +14771,14 @@ pub impl ModelWithTupleStoreImpl of ModelWithTupleStore { if core::option::OptionTrait::::is_none(@field_value) { panic!( - "Field `ModelWithTuple::x`: deserialization failed." + "Field `ModelWithComplexArray::x`: deserialization failed." ); } core::option::OptionTrait::::unwrap(field_value) } - fn set_x(self: @ModelWithTuple, world: dojo::world::IWorldDispatcher, value: u16) { + fn set_x(self: @ModelWithComplexArray, world: dojo::world::IWorldDispatcher, value: u16) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -29757,29 +14789,29 @@ pub impl ModelWithTupleStoreImpl of ModelWithTupleStore { ); } - fn get_y(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> (u8, u16, u32) { + fn get_y(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> Array { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@player, ref serialized); - let mut values = dojo::model::Model::::get_member( + let mut values = dojo::model::Model::::get_member( world, serialized.span(), 1591024729085637502504777720563487898377940395575083379770417352976841400819 ); - let field_value = core::serde::Serde::<(u8, u16, u32)>::deserialize(ref values); + let field_value = core::serde::Serde::>::deserialize(ref values); - if core::option::OptionTrait::<(u8, u16, u32)>::is_none(@field_value) { + if core::option::OptionTrait::>::is_none(@field_value) { panic!( - "Field `ModelWithTuple::y`: deserialization failed." + "Field `ModelWithComplexArray::y`: deserialization failed." ); } - core::option::OptionTrait::<(u8, u16, u32)>::unwrap(field_value) + core::option::OptionTrait::>::unwrap(field_value) } - fn set_y(self: @ModelWithTuple, world: dojo::world::IWorldDispatcher, value: (u8, u16, u32)) { + fn set_y(self: @ModelWithComplexArray, world: dojo::world::IWorldDispatcher, value: Array) { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(@value, ref serialized); @@ -29792,12 +14824,12 @@ pub impl ModelWithTupleStoreImpl of ModelWithTupleStore { } -pub impl ModelWithTupleModelEntityImpl of dojo::model::ModelEntity { - fn id(self: @ModelWithTupleEntity) -> felt252 { +pub impl ModelWithComplexArrayModelEntityImpl of dojo::model::ModelEntity { + fn id(self: @ModelWithComplexArrayEntity) -> felt252 { *self.__id } - fn values(self: @ModelWithTupleEntity) -> Span { + fn values(self: @ModelWithComplexArrayEntity) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.x, ref serialized); core::serde::Serde::serialize(self.y, ref serialized); @@ -29805,46 +14837,52 @@ core::serde::Serde::serialize(self.y, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> ModelWithTupleEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let x = core::serde::Serde::::deserialize(ref values)?; +let y = core::serde::Serde::>::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `ModelWithTupleEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + ModelWithComplexArrayEntity { + __id: entity_id, + x, +y, + + } + ) } - fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithTupleEntity { + fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithComplexArrayEntity { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(entity_id), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `ModelWithComplexArrayEntity`: deserialization failed.") + } + } } - fn update_entity(self: @ModelWithTupleEntity, world: dojo::world::IWorldDispatcher) { + fn update_entity(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), self.values(), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } - fn delete_entity(self: @ModelWithTupleEntity, world: dojo::world::IWorldDispatcher) { + fn delete_entity(self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher) { dojo::world::IWorldDispatcherTrait::delete_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::Id(self.id()), - dojo::model::Model::::layout() + dojo::model::Model::::layout() ); } @@ -29853,11 +14891,11 @@ core::serde::Serde::serialize(self.y, ref serialized); entity_id: felt252, member_id: felt252, ) -> Span { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((entity_id, member_id)), field_layout ) @@ -29867,16 +14905,16 @@ core::serde::Serde::serialize(self.y, ref serialized); } fn set_member( - self: @ModelWithTupleEntity, + self: @ModelWithComplexArrayEntity, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span, ) { - match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { + match dojo::utils::find_model_field_layout(dojo::model::Model::::layout(), member_id) { Option::Some(field_layout) => { dojo::world::IWorldDispatcherTrait::set_entity( world, - dojo::model::Model::::selector(), + dojo::model::Model::::selector(), dojo::model::ModelIndex::MemberId((self.id(), member_id)), values, field_layout @@ -29887,8 +14925,8 @@ core::serde::Serde::serialize(self.y, ref serialized); } } -pub impl ModelWithTupleModelImpl of dojo::model::Model { - fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithTuple { +pub impl ModelWithComplexArrayModelImpl of dojo::model::Model { + fn get(world: dojo::world::IWorldDispatcher, keys: Span) -> ModelWithComplexArray { let mut values = dojo::world::IWorldDispatcherTrait::entity( world, Self::selector(), @@ -29897,11 +14935,16 @@ pub impl ModelWithTupleModelImpl of dojo::model::Model { ); let mut _keys = keys; - ModelWithTupleStore::from_values(ref _keys, ref values) + match ModelWithComplexArrayStore::from_values(ref _keys, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("Model `ModelWithComplexArray`: deserialization failed.") + } + } } fn set_model( - self: @ModelWithTuple, + self: @ModelWithComplexArray, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::set_entity( @@ -29914,7 +14957,7 @@ pub impl ModelWithTupleModelImpl of dojo::model::Model { } fn delete_model( - self: @ModelWithTuple, + self: @ModelWithComplexArray, world: dojo::world::IWorldDispatcher ) { dojo::world::IWorldDispatcherTrait::delete_entity( @@ -29945,7 +14988,7 @@ pub impl ModelWithTupleModelImpl of dojo::model::Model { } fn set_member( - self: @ModelWithTuple, + self: @ModelWithComplexArray, world: dojo::world::IWorldDispatcher, member_id: felt252, values: Span @@ -29966,7 +15009,7 @@ pub impl ModelWithTupleModelImpl of dojo::model::Model { #[inline(always)] fn name() -> ByteArray { - "ModelWithTuple" + "ModelWithComplexArray" } #[inline(always)] @@ -29976,7 +15019,7 @@ pub impl ModelWithTupleModelImpl of dojo::model::Model { #[inline(always)] fn tag() -> ByteArray { - "dojo_test-ModelWithTuple" + "dojo_test-ModelWithComplexArray" } #[inline(always)] @@ -29986,17 +15029,17 @@ pub impl ModelWithTupleModelImpl of dojo::model::Model { #[inline(always)] fn selector() -> felt252 { - 2556860780543194947392385177981405629628409496147617432088261544126553394590 + 1293570145807126672811046976011709110822800800255162893130594439459909679461 } #[inline(always)] - fn instance_selector(self: @ModelWithTuple) -> felt252 { + fn instance_selector(self: @ModelWithComplexArray) -> felt252 { Self::selector() } #[inline(always)] fn name_hash() -> felt252 { - 3222351670132870101782632958288197874250493316621507272653773018669253981260 + 2866472224509756243720005045848892642397514372569303051745174230372637769655 } #[inline(always)] @@ -30005,12 +15048,12 @@ pub impl ModelWithTupleModelImpl of dojo::model::Model { } #[inline(always)] - fn entity_id(self: @ModelWithTuple) -> felt252 { + fn entity_id(self: @ModelWithComplexArray) -> felt252 { core::poseidon::poseidon_hash_span(self.keys()) } #[inline(always)] - fn keys(self: @ModelWithTuple) -> Span { + fn keys(self: @ModelWithComplexArray) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.player, ref serialized); @@ -30018,7 +15061,7 @@ pub impl ModelWithTupleModelImpl of dojo::model::Model { } #[inline(always)] - fn values(self: @ModelWithTuple) -> Span { + fn values(self: @ModelWithComplexArray) -> Span { let mut serialized = core::array::ArrayTrait::new(); core::serde::Serde::serialize(self.x, ref serialized); core::serde::Serde::serialize(self.y, ref serialized); @@ -30027,81 +15070,81 @@ core::serde::Serde::serialize(self.y, ref serialized); } #[inline(always)] - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() + fn layout() -> dojo::meta::Layout { + dojo::meta::introspect::Introspect::::layout() } #[inline(always)] - fn instance_layout(self: @ModelWithTuple) -> dojo::model::Layout { + fn instance_layout(self: @ModelWithComplexArray) -> dojo::meta::Layout { Self::layout() } #[inline(always)] fn packed_size() -> Option { - dojo::model::layout::compute_packed_size(Self::layout()) + dojo::meta::layout::compute_packed_size(Self::layout()) } } #[starknet::interface] -pub trait Imodel_with_tuple { - fn ensure_abi(self: @T, model: ModelWithTuple); +pub trait Imodel_with_complex_array { + fn ensure_abi(self: @T, model: ModelWithComplexArray); } #[starknet::contract] -pub mod model_with_tuple { - use super::ModelWithTuple; - use super::Imodel_with_tuple; +pub mod model_with_complex_array { + use super::ModelWithComplexArray; + use super::Imodel_with_complex_array; #[abi(embed_v0)] impl DojoModelImpl of dojo::model::IModel{ fn name(self: @ContractState) -> ByteArray { - dojo::model::Model::::name() + dojo::model::Model::::name() } fn namespace(self: @ContractState) -> ByteArray { - dojo::model::Model::::namespace() + dojo::model::Model::::namespace() } fn tag(self: @ContractState) -> ByteArray { - dojo::model::Model::::tag() + dojo::model::Model::::tag() } fn version(self: @ContractState) -> u8 { - dojo::model::Model::::version() + dojo::model::Model::::version() } fn selector(self: @ContractState) -> felt252 { - dojo::model::Model::::selector() + dojo::model::Model::::selector() } fn name_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::name_hash() + dojo::model::Model::::name_hash() } fn namespace_hash(self: @ContractState) -> felt252 { - dojo::model::Model::::namespace_hash() + dojo::model::Model::::namespace_hash() } fn unpacked_size(self: @ContractState) -> Option { - dojo::model::introspect::Introspect::::size() + dojo::meta::introspect::Introspect::::size() } fn packed_size(self: @ContractState) -> Option { - dojo::model::Model::::packed_size() + dojo::model::Model::::packed_size() } - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() + fn layout(self: @ContractState) -> dojo::meta::Layout { + dojo::model::Model::::layout() } - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() + fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Introspect::::ty() } } #[abi(embed_v0)] - impl model_with_tupleImpl of Imodel_with_tuple{ - fn ensure_abi(self: @ContractState, model: ModelWithTuple) { + impl model_with_complex_arrayImpl of Imodel_with_complex_array{ + fn ensure_abi(self: @ContractState, model: ModelWithComplexArray) { } } #[event] @@ -30349,7 +15392,7 @@ fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } @@ -30368,17 +15411,17 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::::serialize(@res, ref arr); + core::serde::Serde::::serialize(@res, ref arr); core::array::ArrayTrait::span(@arr) } #[implicit_precedence(core::pedersen::Pedersen, core::RangeCheck, core::integer::Bitwise, core::ec::EcOp, core::poseidon::Poseidon, core::SegmentArena, core::circuit::RangeCheck96, core::circuit::AddMod, core::circuit::MulMod, core::gas::GasBuiltin, System)] -fn __wrapper__model_with_tupleImpl__ensure_abi(mut data: Span::) -> Span:: { +fn __wrapper__model_with_complex_arrayImpl__ensure_abi(mut data: Span::) -> Span:: { core::internal::require_implicit::(); core::internal::revoke_ap_tracking(); core::option::OptionTraitImpl::expect(core::gas::withdraw_gas(), 'Out of gas'); let __arg_model = core::option::OptionTraitImpl::expect( - core::serde::Serde::::deserialize(ref data), + core::serde::Serde::::deserialize(ref data), 'Failed to deserialize param #1' ); assert(core::array::SpanTrait::is_empty(data), 'Input too long for arguments'); @@ -30386,7 +15429,7 @@ fn __wrapper__model_with_tupleImpl__ensure_abi(mut data: Span::) -> Spa core::gas::withdraw_gas_all(core::gas::get_builtin_costs()), 'Out of gas', ); let mut contract_state = unsafe_new_contract_state(); - model_with_tupleImpl::ensure_abi(@contract_state, __arg_model); + model_with_complex_arrayImpl::ensure_abi(@contract_state, __arg_model); let mut arr = ArrayTrait::new(); // References. // Result. @@ -30406,7 +15449,7 @@ pub mod __external { pub use super::__wrapper__DojoModelImpl__packed_size as packed_size; pub use super::__wrapper__DojoModelImpl__layout as layout; pub use super::__wrapper__DojoModelImpl__schema as schema; - pub use super::__wrapper__model_with_tupleImpl__ensure_abi as ensure_abi; + pub use super::__wrapper__model_with_complex_arrayImpl__ensure_abi as ensure_abi; } pub mod __l1_handler { } @@ -30450,8 +15493,74 @@ impl StorageStorageBaseCopy of core::traits::Copy::; impl StorageStorageBaseMutDrop of core::traits::Drop::; impl StorageStorageBaseMutCopy of core::traits::Copy::; } -======= ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) + +impl ModelWithTupleIntrospect<> of dojo::meta::introspect::Introspect> { + #[inline(always)] + fn size() -> Option { + Option::Some(4) + } + + fn layout() -> dojo::meta::Layout { + dojo::meta::Layout::Struct( + array![ + dojo::meta::FieldLayout { + selector: 512066735765477566404754172672287371265995314501343422459174036873487219331, + layout: dojo::meta::introspect::Introspect::::layout() + }, +dojo::meta::FieldLayout { + selector: 1591024729085637502504777720563487898377940395575083379770417352976841400819, + layout: dojo::meta::Layout::Tuple( + array![ + dojo::meta::introspect::Introspect::::layout(), +dojo::meta::introspect::Introspect::::layout(), +dojo::meta::introspect::Introspect::::layout() + ].span() + ) + } + ].span() + ) + } + + #[inline(always)] + fn ty() -> dojo::meta::introspect::Ty { + dojo::meta::introspect::Ty::Struct( + dojo::meta::introspect::Struct { + name: 'ModelWithTuple', + attrs: array![].span(), + children: array![ + dojo::meta::introspect::Member { + name: 'player', + attrs: array!['key'].span(), + ty: dojo::meta::introspect::Introspect::::ty() + }, +dojo::meta::introspect::Member { + name: 'x', + attrs: array![].span(), + ty: dojo::meta::introspect::Introspect::::ty() + }, +dojo::meta::introspect::Member { + name: 'y', + attrs: array![].span(), + ty: dojo::meta::introspect::Ty::Tuple( + array![ + dojo::meta::introspect::Introspect::::ty(), +dojo::meta::introspect::Introspect::::ty(), +dojo::meta::introspect::Introspect::::ty() + ].span() + ) + } + + ].span() + } + ) + } +} + +#[derive(Drop, Serde)] +pub struct ModelWithTupleEntity { + __id: felt252, // private field + pub x: u16, +pub y: (u8, u16, u32), } @@ -30537,21 +15646,22 @@ pub impl ModelWithTupleStoreImpl of ModelWithTupleStore { core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> ModelWithTuple { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let player = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let x = core::serde::Serde::::deserialize(ref values)?; +let y = core::serde::Serde::<(u8, u16, u32)>::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `ModelWithTuple`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + ModelWithTuple { + player, + + x, +y, + + } + ) } fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithTuple { @@ -30652,18 +15762,19 @@ core::serde::Serde::serialize(self.y, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> ModelWithTupleEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let x = core::serde::Serde::::deserialize(ref values)?; +let y = core::serde::Serde::<(u8, u16, u32)>::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `ModelWithTupleEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + ModelWithTupleEntity { + __id: entity_id, + x, +y, + + } + ) } fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithTupleEntity { @@ -30673,7 +15784,12 @@ core::serde::Serde::serialize(self.y, ref serialized); dojo::model::ModelIndex::Id(entity_id), dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `ModelWithTupleEntity`: deserialization failed.") + } + } } fn update_entity(self: @ModelWithTupleEntity, world: dojo::world::IWorldDispatcher) { @@ -30744,7 +15860,12 @@ pub impl ModelWithTupleModelImpl of dojo::model::Model { ); let mut _keys = keys; - ModelWithTupleStore::from_values(ref _keys, ref values) + match ModelWithTupleStore::from_values(ref _keys, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("Model `ModelWithTuple`: deserialization failed.") + } + } } fn set_model( @@ -31459,21 +16580,22 @@ pub impl ModelWithTupleNoPrimitivesStoreImpl of ModelWithTupleNoPrimitivesStore core::poseidon::poseidon_hash_span(serialized.span()) } - fn from_values(ref keys: Span, ref values: Span) -> ModelWithTupleNoPrimitives { - let mut serialized = core::array::ArrayTrait::new(); - serialized.append_span(keys); - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(ref keys: Span, ref values: Span) -> Option { + let player = core::serde::Serde::::deserialize(ref keys)?; - let entity = core::serde::Serde::::deserialize(ref serialized); + let x = core::serde::Serde::::deserialize(ref values)?; +let y = core::serde::Serde::<(u8, Vec3, u32)>::deserialize(ref values)?; - if core::option::OptionTrait::::is_none(@entity) { - panic!( - "Model `ModelWithTupleNoPrimitives`: deserialization failed. Ensure the length of the keys tuple is matching the number of #[key] fields in the model struct." - ); - } - core::option::OptionTrait::::unwrap(entity) + Option::Some( + ModelWithTupleNoPrimitives { + player, + + x, +y, + + } + ) } fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithTupleNoPrimitives { @@ -31574,18 +16696,19 @@ core::serde::Serde::serialize(self.y, ref serialized); core::array::ArrayTrait::span(@serialized) } - fn from_values(entity_id: felt252, ref values: Span) -> ModelWithTupleNoPrimitivesEntity { - let mut serialized = array![entity_id]; - serialized.append_span(values); - let mut serialized = core::array::ArrayTrait::span(@serialized); + fn from_values(entity_id: felt252, ref values: Span) -> Option { + let x = core::serde::Serde::::deserialize(ref values)?; +let y = core::serde::Serde::<(u8, Vec3, u32)>::deserialize(ref values)?; - let entity_values = core::serde::Serde::::deserialize(ref serialized); - if core::option::OptionTrait::::is_none(@entity_values) { - panic!( - "ModelEntity `ModelWithTupleNoPrimitivesEntity`: deserialization failed." - ); - } - core::option::OptionTrait::::unwrap(entity_values) + + Option::Some( + ModelWithTupleNoPrimitivesEntity { + __id: entity_id, + x, +y, + + } + ) } fn get(world: dojo::world::IWorldDispatcher, entity_id: felt252) -> ModelWithTupleNoPrimitivesEntity { @@ -31595,7 +16718,12 @@ core::serde::Serde::serialize(self.y, ref serialized); dojo::model::ModelIndex::Id(entity_id), dojo::model::Model::::layout() ); - Self::from_values(entity_id, ref values) + match Self::from_values(entity_id, ref values) { + Option::Some(x) => x, + Option::None => { + panic!("ModelEntity `ModelWithTupleNoPrimitivesEntity`: deserialization failed.") + } + } } fn update_entity(self: @ModelWithTupleNoPrimitivesEntity, world: dojo::world::IWorldDispatcher) { @@ -31666,7 +16794,12 @@ pub impl ModelWithTupleNoPrimitivesModelImpl of dojo::model::Model x, + Option::None => { + panic!("Model `ModelWithTupleNoPrimitives`: deserialization failed.") + } + } } fn set_model( @@ -31796,31 +16929,18 @@ core::serde::Serde::serialize(self.y, ref serialized); } #[inline(always)] -<<<<<<< HEAD - fn layout() -> dojo::model::Layout { - dojo::model::introspect::Introspect::::layout() - } - - #[inline(always)] - fn instance_layout(self: @ModelWithTupleNoPrimitives) -> dojo::model::Layout { -======= fn layout() -> dojo::meta::Layout { dojo::meta::introspect::Introspect::::layout() } #[inline(always)] fn instance_layout(self: @ModelWithTupleNoPrimitives) -> dojo::meta::Layout { ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) Self::layout() } #[inline(always)] fn packed_size() -> Option { -<<<<<<< HEAD - dojo::model::layout::compute_packed_size(Self::layout()) -======= dojo::meta::layout::compute_packed_size(Self::layout()) ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) } } @@ -31865,32 +16985,19 @@ pub mod model_with_tuple_no_primitives { } fn unpacked_size(self: @ContractState) -> Option { -<<<<<<< HEAD - dojo::model::introspect::Introspect::::size() -======= dojo::meta::introspect::Introspect::::size() ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) } fn packed_size(self: @ContractState) -> Option { dojo::model::Model::::packed_size() } -<<<<<<< HEAD - fn layout(self: @ContractState) -> dojo::model::Layout { - dojo::model::Model::::layout() - } - - fn schema(self: @ContractState) -> dojo::model::introspect::Ty { - dojo::model::introspect::Introspect::::ty() -======= fn layout(self: @ContractState) -> dojo::meta::Layout { dojo::model::Model::::layout() } fn schema(self: @ContractState) -> dojo::meta::introspect::Ty { dojo::meta::introspect::Introspect::::ty() ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) } } @@ -32144,11 +17251,7 @@ fn __wrapper__DojoModelImpl__layout(mut data: Span::) -> Span::::serialize(@res, ref arr); -======= core::serde::Serde::::serialize(@res, ref arr); ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) core::array::ArrayTrait::span(@arr) } @@ -32167,11 +17270,7 @@ fn __wrapper__DojoModelImpl__schema(mut data: Span::) -> Span::::serialize(@res, ref arr); -======= core::serde::Serde::::serialize(@res, ref arr); ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) core::array::ArrayTrait::span(@arr) } @@ -32282,7 +17381,7 @@ pub trait BadModelMultipleVersionsEntityStore { pub trait BadModelMultipleVersionsStore { fn entity_id_from_keys(id: felt252) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> BadModelMultipleVersions; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelMultipleVersions; @@ -32418,7 +17517,7 @@ pub trait BadModelBadVersionTypeEntityStore { pub trait BadModelBadVersionTypeStore { fn entity_id_from_keys(id: felt252) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> BadModelBadVersionType; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelBadVersionType; @@ -32554,7 +17653,7 @@ pub trait BadModelNoVersionValueEntityStore { pub trait BadModelNoVersionValueStore { fn entity_id_from_keys(id: felt252) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> BadModelNoVersionValue; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelNoVersionValue; @@ -32690,7 +17789,7 @@ pub trait BadModelUnexpectedArgWithValueEntityStore { pub trait BadModelUnexpectedArgWithValueStore { fn entity_id_from_keys(id: felt252) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> BadModelUnexpectedArgWithValue; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelUnexpectedArgWithValue; @@ -32826,7 +17925,7 @@ pub trait BadModelUnexpectedArgEntityStore { pub trait BadModelUnexpectedArgStore { fn entity_id_from_keys(id: felt252) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> BadModelUnexpectedArg; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelUnexpectedArg; @@ -32962,7 +18061,7 @@ pub trait BadModelNotSupportedVersionEntityStore { pub trait BadModelNotSupportedVersionStore { fn entity_id_from_keys(id: felt252) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> BadModelNotSupportedVersion; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> BadModelNotSupportedVersion; @@ -33098,7 +18197,7 @@ pub trait Modelv0EntityStore { pub trait Modelv0Store { fn entity_id_from_keys(id: felt252) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> Modelv0; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> Modelv0; @@ -33234,7 +18333,7 @@ pub trait ModelWithBadNamespaceFormatEntityStore { pub trait ModelWithBadNamespaceFormatStore { fn entity_id_from_keys(id: felt252) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> ModelWithBadNamespaceFormat; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> ModelWithBadNamespaceFormat; @@ -33370,7 +18469,7 @@ pub trait ModelWithShortStringNamespaceEntityStore { pub trait ModelWithShortStringNamespaceStore { fn entity_id_from_keys(id: felt252) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> ModelWithShortStringNamespace; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> ModelWithShortStringNamespace; @@ -33506,7 +18605,7 @@ pub trait ModelWithStringNamespaceEntityStore { pub trait ModelWithStringNamespaceStore { fn entity_id_from_keys(id: felt252) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> ModelWithStringNamespace; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> ModelWithStringNamespace; @@ -33642,7 +18741,7 @@ pub trait PositionEntityStore { pub trait PositionStore { fn entity_id_from_keys(id: felt252) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> Position; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> Position; @@ -33778,7 +18877,7 @@ pub trait RolesEntityStore { pub trait RolesStore { fn entity_id_from_keys() -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> Roles; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, ) -> Roles; @@ -33908,7 +19007,7 @@ pub trait OnlyKeyModelEntityStore { pub trait OnlyKeyModelStore { fn entity_id_from_keys(id: felt252) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> OnlyKeyModel; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, id: felt252) -> OnlyKeyModel; @@ -34032,19 +19131,11 @@ pub trait U256KeyModelEntityStore { } pub trait U256KeyModelStore { -<<<<<<< HEAD - fn entity_id_from_keys(id: u256) -> felt252; - - fn from_values(ref keys: Span, ref values: Span) -> U256KeyModel; - - fn get(world: dojo::world::IWorldDispatcher, id: u256) -> U256KeyModel; -======= fn entity_id_from_keys() -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> U256KeyModel; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, ) -> U256KeyModel; ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) fn set(self: @U256KeyModel, world: dojo::world::IWorldDispatcher); @@ -34174,7 +19265,7 @@ pub trait PlayerEntityStore { pub trait PlayerStore { fn entity_id_from_keys(game: felt252, player: ContractAddress) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> Player; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, game: felt252, player: ContractAddress) -> Player; @@ -34316,7 +19407,7 @@ pub trait ModelWithSimpleArrayEntityStore { pub trait ModelWithSimpleArrayStore { fn entity_id_from_keys(player: ContractAddress) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> ModelWithSimpleArray; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithSimpleArray; @@ -34462,7 +19553,7 @@ pub trait ModelWithByteArrayEntityStore { pub trait ModelWithByteArrayStore { fn entity_id_from_keys(player: ContractAddress) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> ModelWithByteArray; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithByteArray; @@ -34608,7 +19699,7 @@ pub trait ModelWithComplexArrayEntityStore { pub trait ModelWithComplexArrayStore { fn entity_id_from_keys(player: ContractAddress) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> ModelWithComplexArray; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithComplexArray; @@ -34754,7 +19845,7 @@ pub trait ModelWithTupleEntityStore { pub trait ModelWithTupleStore { fn entity_id_from_keys(player: ContractAddress) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> ModelWithTuple; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithTuple; @@ -34900,7 +19991,7 @@ pub trait ModelWithTupleNoPrimitivesEntityStore { pub trait ModelWithTupleNoPrimitivesStore { fn entity_id_from_keys(player: ContractAddress) -> felt252; - fn from_values(ref keys: Span, ref values: Span) -> ModelWithTupleNoPrimitives; + fn from_values(ref keys: Span, ref values: Span) -> Option; fn get(world: dojo::world::IWorldDispatcher, player: ContractAddress) -> ModelWithTupleNoPrimitives; @@ -41783,12 +26874,6 @@ error: Key is only supported for core types that are 1 felt long once serialized id: u256 ^^ -<<<<<<< HEAD -error: Model must define at least one member that is not a key - --> /tmp/plugin_test/model/src/lib.cairo:98:8 -struct U256KeyModel { - ^**********^ -======= error: Model must define at least one #[key] attribute --> /tmp/plugin_test/model/src/lib.cairo:98:8 struct U256KeyModel { @@ -41798,4 +26883,3 @@ error: Model must define at least one member that is not a key --> /tmp/plugin_test/model/src/lib.cairo:98:8 struct U256KeyModel { ^**********^ ->>>>>>> f0d98278 (feat: generate contracts for Dojo events) diff --git a/examples/spawn-and-move/dojo_dev.toml b/examples/spawn-and-move/dojo_dev.toml index 1b54410ee7..633cdadeda 100644 --- a/examples/spawn-and-move/dojo_dev.toml +++ b/examples/spawn-and-move/dojo_dev.toml @@ -14,4 +14,4 @@ rpc_url = "http://localhost:5050/" # Default account for katana with seed = 0 account_address = "0x6162896d1d7ab204c7ccac6dd5f8e9e7c25ecd5ae4fcb4ad32e57786bb46e03" private_key = "0x1800000000300000180000000000030000000000003006001800006600" -world_address = "0x5a99a3579a2aef3f30f9e5bb342a8d05023fb65731fb3d1ad647f70578b9775" +world_address = "0x5e0bb8882b597a0e5da4e07d91e4c9a13d290d417c8c38ef7ce47be49932976" diff --git a/examples/spawn-and-move/dojo_release.toml b/examples/spawn-and-move/dojo_release.toml index 498b4a35e8..562a5bc2ca 100644 --- a/examples/spawn-and-move/dojo_release.toml +++ b/examples/spawn-and-move/dojo_release.toml @@ -14,7 +14,7 @@ rpc_url = "http://localhost:5050/" # Default account for katana with seed = 0 account_address = "0x6162896d1d7ab204c7ccac6dd5f8e9e7c25ecd5ae4fcb4ad32e57786bb46e03" private_key = "0x1800000000300000180000000000030000000000003006001800006600" -world_address = "0x5a99a3579a2aef3f30f9e5bb342a8d05023fb65731fb3d1ad647f70578b9775" +world_address = "0x5e0bb8882b597a0e5da4e07d91e4c9a13d290d417c8c38ef7ce47be49932976" [migration] skip_contracts = [ diff --git a/examples/spawn-and-move/manifests/dev/base/contracts/dojo_examples-actions-40b6994c.toml b/examples/spawn-and-move/manifests/dev/base/contracts/dojo_examples-actions-40b6994c.toml index 660cdc3b10..4106123619 100644 --- a/examples/spawn-and-move/manifests/dev/base/contracts/dojo_examples-actions-40b6994c.toml +++ b/examples/spawn-and-move/manifests/dev/base/contracts/dojo_examples-actions-40b6994c.toml @@ -1,6 +1,6 @@ kind = "DojoContract" -class_hash = "0x6c61826d5ba95a9dc16df5a8b41b96815b72f95e5f1777c21e4a474f70c3649" -original_class_hash = "0x6c61826d5ba95a9dc16df5a8b41b96815b72f95e5f1777c21e4a474f70c3649" +class_hash = "0x7a7c4d34805182e74e52282893955868334f16bf1aaf909ae822385ce414394" +original_class_hash = "0x7a7c4d34805182e74e52282893955868334f16bf1aaf909ae822385ce414394" base_class_hash = "0x0" abi = "manifests/dev/base/abis/contracts/dojo_examples-actions-40b6994c.json" reads = [] diff --git a/examples/spawn-and-move/manifests/dev/base/dojo-world.toml b/examples/spawn-and-move/manifests/dev/base/dojo-world.toml index 25c3956684..992555fe3d 100644 --- a/examples/spawn-and-move/manifests/dev/base/dojo-world.toml +++ b/examples/spawn-and-move/manifests/dev/base/dojo-world.toml @@ -1,6 +1,6 @@ kind = "Class" -class_hash = "0x190f42b1a811d9e39dee85ae2129db5a592b4117cb318e6df4737a6033d9dac" -original_class_hash = "0x190f42b1a811d9e39dee85ae2129db5a592b4117cb318e6df4737a6033d9dac" +class_hash = "0x4743bf5aabbbbb43f658bd540ae7a0a2bb7f7ccce057a6cbb74be1ca56e3f57" +original_class_hash = "0x4743bf5aabbbbb43f658bd540ae7a0a2bb7f7ccce057a6cbb74be1ca56e3f57" abi = "manifests/dev/base/abis/dojo-world.json" tag = "dojo-world" manifest_name = "dojo-world" diff --git a/examples/spawn-and-move/manifests/dev/deployment/manifest.json b/examples/spawn-and-move/manifests/dev/deployment/manifest.json index 097a1483bd..a556748bfb 100644 --- a/examples/spawn-and-move/manifests/dev/deployment/manifest.json +++ b/examples/spawn-and-move/manifests/dev/deployment/manifest.json @@ -1,8 +1,8 @@ { "world": { "kind": "WorldContract", - "class_hash": "0x190f42b1a811d9e39dee85ae2129db5a592b4117cb318e6df4737a6033d9dac", - "original_class_hash": "0x190f42b1a811d9e39dee85ae2129db5a592b4117cb318e6df4737a6033d9dac", + "class_hash": "0x4743bf5aabbbbb43f658bd540ae7a0a2bb7f7ccce057a6cbb74be1ca56e3f57", + "original_class_hash": "0x4743bf5aabbbbb43f658bd540ae7a0a2bb7f7ccce057a6cbb74be1ca56e3f57", "abi": [ { "type": "impl", @@ -1336,8 +1336,8 @@ ] } ], - "address": "0x5a99a3579a2aef3f30f9e5bb342a8d05023fb65731fb3d1ad647f70578b9775", - "transaction_hash": "0x24e96c30ec18e59bada732215d4f03204220f68b0159ac5beb3d4dddf5a027a", + "address": "0x5e0bb8882b597a0e5da4e07d91e4c9a13d290d417c8c38ef7ce47be49932976", + "transaction_hash": "0x23a1f8de4182e76456030bae0b882e3deb66905d9b8dd72b29ba5f7e961b4dc", "block_number": 3, "seed": "dojo_examples", "metadata": { @@ -1357,9 +1357,9 @@ "contracts": [ { "kind": "DojoContract", - "address": "0x3de955d31f0e207f3ca2ffaf586eefe1a330459aa6834ab9c0828e9f8aefb9c", - "class_hash": "0x6c61826d5ba95a9dc16df5a8b41b96815b72f95e5f1777c21e4a474f70c3649", - "original_class_hash": "0x6c61826d5ba95a9dc16df5a8b41b96815b72f95e5f1777c21e4a474f70c3649", + "address": "0x1f85a0310ca89910dc7bab4e4730470917f93b1b0aa168b0300d1e10cc21c2b", + "class_hash": "0x7a7c4d34805182e74e52282893955868334f16bf1aaf909ae822385ce414394", + "original_class_hash": "0x7a7c4d34805182e74e52282893955868334f16bf1aaf909ae822385ce414394", "base_class_hash": "0x2427dd10a58850ac9a5ca6ce04b7771b05330fd18f2e481831ad903b969e6b2", "abi": [ { @@ -1788,7 +1788,7 @@ }, { "kind": "DojoContract", - "address": "0x4bcdee9544d335ce1112d8efdf8bb0fb46c0b6650e2cabc834652273c99a9cf", + "address": "0x6046355c623e0321d351905244b313c8f15b87e001d5b99b0bbed93cccd749f", "class_hash": "0x4590a27e4ec7366358ba5f60323777f301435ebbdd113ab02c54b947717530d", "original_class_hash": "0x4590a27e4ec7366358ba5f60323777f301435ebbdd113ab02c54b947717530d", "base_class_hash": "0x2427dd10a58850ac9a5ca6ce04b7771b05330fd18f2e481831ad903b969e6b2", @@ -2027,7 +2027,7 @@ }, { "kind": "DojoContract", - "address": "0x7c45246140fe8d1b04d3f6ac3793bf770098396749b3a035b9150fa2c21394d", + "address": "0x55d27531dd3c6f2cf0d44f464281fc09c52a6cbb9fedd585f9b124784da16bd", "class_hash": "0x2ba2e52f9e1ffb31d0d5aa362565d1563d485e51c99613ed708393f862dded7", "original_class_hash": "0x2ba2e52f9e1ffb31d0d5aa362565d1563d485e51c99613ed708393f862dded7", "base_class_hash": "0x2427dd10a58850ac9a5ca6ce04b7771b05330fd18f2e481831ad903b969e6b2", @@ -2248,7 +2248,7 @@ }, { "kind": "DojoContract", - "address": "0x526568428322e914c9818d69bce777eea430aad73a4ad1b1fbee1d449aa76b5", + "address": "0xc2de4d6fef04f17db683201abfbd8d56b74dfc6feffec18e172a0ad94de946", "class_hash": "0x40e824b8814bafef18cce2cf68f5765e9c9a1c86f55a8491b0c2a4faebdcc87", "original_class_hash": "0x40e824b8814bafef18cce2cf68f5765e9c9a1c86f55a8491b0c2a4faebdcc87", "base_class_hash": "0x2427dd10a58850ac9a5ca6ce04b7771b05330fd18f2e481831ad903b969e6b2", diff --git a/examples/spawn-and-move/manifests/dev/deployment/manifest.toml b/examples/spawn-and-move/manifests/dev/deployment/manifest.toml index afb43ca567..ad84c682fc 100644 --- a/examples/spawn-and-move/manifests/dev/deployment/manifest.toml +++ b/examples/spawn-and-move/manifests/dev/deployment/manifest.toml @@ -1,10 +1,10 @@ [world] kind = "WorldContract" -class_hash = "0x190f42b1a811d9e39dee85ae2129db5a592b4117cb318e6df4737a6033d9dac" -original_class_hash = "0x190f42b1a811d9e39dee85ae2129db5a592b4117cb318e6df4737a6033d9dac" +class_hash = "0x4743bf5aabbbbb43f658bd540ae7a0a2bb7f7ccce057a6cbb74be1ca56e3f57" +original_class_hash = "0x4743bf5aabbbbb43f658bd540ae7a0a2bb7f7ccce057a6cbb74be1ca56e3f57" abi = "manifests/dev/deployment/abis/dojo-world.json" -address = "0x5a99a3579a2aef3f30f9e5bb342a8d05023fb65731fb3d1ad647f70578b9775" -transaction_hash = "0x24e96c30ec18e59bada732215d4f03204220f68b0159ac5beb3d4dddf5a027a" +address = "0x5e0bb8882b597a0e5da4e07d91e4c9a13d290d417c8c38ef7ce47be49932976" +transaction_hash = "0x23a1f8de4182e76456030bae0b882e3deb66905d9b8dd72b29ba5f7e961b4dc" block_number = 3 seed = "dojo_examples" manifest_name = "dojo-world" @@ -23,9 +23,9 @@ manifest_name = "dojo-base" [[contracts]] kind = "DojoContract" -address = "0x3de955d31f0e207f3ca2ffaf586eefe1a330459aa6834ab9c0828e9f8aefb9c" -class_hash = "0x6c61826d5ba95a9dc16df5a8b41b96815b72f95e5f1777c21e4a474f70c3649" -original_class_hash = "0x6c61826d5ba95a9dc16df5a8b41b96815b72f95e5f1777c21e4a474f70c3649" +address = "0x1f85a0310ca89910dc7bab4e4730470917f93b1b0aa168b0300d1e10cc21c2b" +class_hash = "0x7a7c4d34805182e74e52282893955868334f16bf1aaf909ae822385ce414394" +original_class_hash = "0x7a7c4d34805182e74e52282893955868334f16bf1aaf909ae822385ce414394" base_class_hash = "0x2427dd10a58850ac9a5ca6ce04b7771b05330fd18f2e481831ad903b969e6b2" abi = "manifests/dev/deployment/abis/contracts/dojo_examples-actions-40b6994c.json" reads = [] @@ -47,7 +47,7 @@ manifest_name = "dojo_examples-actions-40b6994c" [[contracts]] kind = "DojoContract" -address = "0x4bcdee9544d335ce1112d8efdf8bb0fb46c0b6650e2cabc834652273c99a9cf" +address = "0x6046355c623e0321d351905244b313c8f15b87e001d5b99b0bbed93cccd749f" class_hash = "0x4590a27e4ec7366358ba5f60323777f301435ebbdd113ab02c54b947717530d" original_class_hash = "0x4590a27e4ec7366358ba5f60323777f301435ebbdd113ab02c54b947717530d" base_class_hash = "0x2427dd10a58850ac9a5ca6ce04b7771b05330fd18f2e481831ad903b969e6b2" @@ -61,7 +61,7 @@ manifest_name = "dojo_examples-dungeon-6620e0e6" [[contracts]] kind = "DojoContract" -address = "0x7c45246140fe8d1b04d3f6ac3793bf770098396749b3a035b9150fa2c21394d" +address = "0x55d27531dd3c6f2cf0d44f464281fc09c52a6cbb9fedd585f9b124784da16bd" class_hash = "0x2ba2e52f9e1ffb31d0d5aa362565d1563d485e51c99613ed708393f862dded7" original_class_hash = "0x2ba2e52f9e1ffb31d0d5aa362565d1563d485e51c99613ed708393f862dded7" base_class_hash = "0x2427dd10a58850ac9a5ca6ce04b7771b05330fd18f2e481831ad903b969e6b2" @@ -75,7 +75,7 @@ manifest_name = "dojo_examples-mock_token-31599eb2" [[contracts]] kind = "DojoContract" -address = "0x526568428322e914c9818d69bce777eea430aad73a4ad1b1fbee1d449aa76b5" +address = "0xc2de4d6fef04f17db683201abfbd8d56b74dfc6feffec18e172a0ad94de946" class_hash = "0x40e824b8814bafef18cce2cf68f5765e9c9a1c86f55a8491b0c2a4faebdcc87" original_class_hash = "0x40e824b8814bafef18cce2cf68f5765e9c9a1c86f55a8491b0c2a4faebdcc87" base_class_hash = "0x2427dd10a58850ac9a5ca6ce04b7771b05330fd18f2e481831ad903b969e6b2" diff --git a/examples/spawn-and-move/manifests/release/base/contracts/dojo_examples-actions-40b6994c.toml b/examples/spawn-and-move/manifests/release/base/contracts/dojo_examples-actions-40b6994c.toml index 4641628661..2239b1363e 100644 --- a/examples/spawn-and-move/manifests/release/base/contracts/dojo_examples-actions-40b6994c.toml +++ b/examples/spawn-and-move/manifests/release/base/contracts/dojo_examples-actions-40b6994c.toml @@ -1,6 +1,6 @@ kind = "DojoContract" -class_hash = "0x6c61826d5ba95a9dc16df5a8b41b96815b72f95e5f1777c21e4a474f70c3649" -original_class_hash = "0x6c61826d5ba95a9dc16df5a8b41b96815b72f95e5f1777c21e4a474f70c3649" +class_hash = "0x7a7c4d34805182e74e52282893955868334f16bf1aaf909ae822385ce414394" +original_class_hash = "0x7a7c4d34805182e74e52282893955868334f16bf1aaf909ae822385ce414394" base_class_hash = "0x0" abi = "manifests/release/base/abis/contracts/dojo_examples-actions-40b6994c.json" reads = [] diff --git a/examples/spawn-and-move/manifests/release/base/dojo-world.toml b/examples/spawn-and-move/manifests/release/base/dojo-world.toml index 0777ede04e..de65aeb434 100644 --- a/examples/spawn-and-move/manifests/release/base/dojo-world.toml +++ b/examples/spawn-and-move/manifests/release/base/dojo-world.toml @@ -1,6 +1,6 @@ kind = "Class" -class_hash = "0x190f42b1a811d9e39dee85ae2129db5a592b4117cb318e6df4737a6033d9dac" -original_class_hash = "0x190f42b1a811d9e39dee85ae2129db5a592b4117cb318e6df4737a6033d9dac" +class_hash = "0x4743bf5aabbbbb43f658bd540ae7a0a2bb7f7ccce057a6cbb74be1ca56e3f57" +original_class_hash = "0x4743bf5aabbbbb43f658bd540ae7a0a2bb7f7ccce057a6cbb74be1ca56e3f57" abi = "manifests/release/base/abis/dojo-world.json" tag = "dojo-world" manifest_name = "dojo-world" diff --git a/spawn-and-move-db.tar.gz b/spawn-and-move-db.tar.gz index 10308c406c..18ac07a2d4 100644 Binary files a/spawn-and-move-db.tar.gz and b/spawn-and-move-db.tar.gz differ diff --git a/types-test-db.tar.gz b/types-test-db.tar.gz index 5504d86bb5..56344abda3 100644 Binary files a/types-test-db.tar.gz and b/types-test-db.tar.gz differ