Skip to content

Commit

Permalink
small improvement of model layout code generation
Browse files Browse the repository at this point in the history
  • Loading branch information
remybar committed Feb 26, 2025
1 parent 5c3543e commit a38bfff
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
11 changes: 11 additions & 0 deletions crates/dojo/lang/src/attribute_macros/model.rs
Original file line number Diff line number Diff line change
Expand Up @@ -228,12 +228,23 @@ impl DojoModel {
"dojo::storage::DojoStore".to_string()
};

let model_layout = if use_legacy_storage {
format!(
"dojo::meta::layout::build_legacy_layout(
dojo::meta::Introspect::<{model_type}>::layout()
)"
)
} else {
format!("dojo::meta::Introspect::<{model_type}>::layout()")
};

diagnostics.extend(derive_diagnostics);

let node = RewriteNode::interpolate_patched(
MODEL_CODE_PATCH,
&UnorderedHashMap::from([
("model_type".to_string(), RewriteNode::Text(model_type.clone())),
("model_layout".to_string(), RewriteNode::Text(model_layout.clone())),
("serialized_keys".to_string(), RewriteNode::new_modified(serialized_keys)),
("serialized_values".to_string(), RewriteNode::new_modified(serialized_values)),
("deserialized_values".to_string(), RewriteNode::new_modified(deserialized_values)),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,7 @@ pub mod m_$model_type$_definition {

#[inline(always)]
fn layout() -> dojo::meta::Layout {
if $use_legacy_storage$ {
dojo::meta::layout::build_legacy_layout(
dojo::meta::Introspect::<$model_type$>::layout()
)
}
else {
dojo::meta::Introspect::<$model_type$>::layout()
}
$model_layout$
}

#[inline(always)]
Expand Down

0 comments on commit a38bfff

Please sign in to comment.