#[macro_export]
macro_rules! mongo_entity {
($name:ident, { $($field_name:ident : $field_type:ty),* $(,)? }) => {
#[derive(Debug, Serialize, Deserialize, PartialEq)]
pub struct $name {
#[serde(rename = "_id", skip_serializing_if = "Option::is_none")]
pub id: Option<ObjectId>,
$(pub $field_name: $field_type,)*
}
impl $name {
pub fn new($($field_name: $field_type),*) -> Self {
Self {
id: None,
$($field_name),*
}
}
pub fn with_id(id: ObjectId, $($field_name: $field_type),*) -> Self {
Self {
id: Some(id),
$($field_name),*
}
}
}
};
}