1#[macro_export]
2macro_rules! modele {
3 (
4 $model_name:literal,
5 $model_label:literal
6 =>
7 $(
8 $field_name:literal: $field:ident $({
9 $($key: ident: $value: expr ),*$(,)?
10 })?
11 ),*
12 $(,interfaces: $($interfaces: literal),*)?
13 $(,)?
14 ) => {
15 {
16 let mut mdl: $crate::Model = $crate::Model::new(
17 String::from($model_name),
18 String::from($model_label),
19 );
20 $($(mdl.fields.insert(
21 String::from($field_name),
22 std::rc::Rc::new(std::cell::RefCell::new($field {
23 name: String::from($field_name),
24 $($key: $value,)*
25 ..Default::default()
26 }))
27 );)*)?
28 $($(mdl.interfaces.push(String::from($interfaces));),*)?
29 std::rc::Rc::new(mdl)
30 }
31 }
32}