Attribute Macro ruva_macro::aggregate

source ·
#[aggregate]
Expand description

Define Aggregate root

Example

#[aggregate]
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct TestAggregate {
   #[identifier]
    pub(crate) age: i64,
}

fn test_aggregate() {
let aggregate = TestAggregate::default().set_age(1);
assert_eq!(aggregate.version, 0);
assert!(!aggregate.is_existing);
assert_eq!(aggregate.events.len(), 0);
assert_eq!(aggregate.age, 1)

the following will cause an error with saying “identifier is specified only once!”

#[aggregate]
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct TestAggregate {
    #[identifier]
    pub(crate) age: i64,
     #[identifier]
    pub(crate) name: String,
}

Likewise, not specifying identifier will also error out

#[aggregate]
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct TestAggregate {
    pub(crate) age: i64,
    pub(crate) name: String,
}