pub struct StateStoredAggregate<C, S, E, Repository, Decider, Version, Error>where
Repository: StateRepository<C, S, Version, Error>,
Decider: StateComputation<C, S, E, Error>,{ /* private fields */ }
Expand description
State Stored Aggregate.
It is using a Decider
/ StateComputation to compute new state based on the current state and the command.
It is using a StateRepository to fetch the current state and to save the new state.
Generic parameters:
C
- CommandS
- StateE
- EventRepository
- State repositoryDecider
- State computationVersion
- VersionError
- Error
Implementations§
Source§impl<C, S, E, Repository, Decider, Version, Error> StateStoredAggregate<C, S, E, Repository, Decider, Version, Error>where
Repository: StateRepository<C, S, Version, Error> + Sync,
Decider: StateComputation<C, S, E, Error> + Sync,
C: Sync,
S: Sync,
E: Sync,
Version: Sync,
Error: Sync,
impl<C, S, E, Repository, Decider, Version, Error> StateStoredAggregate<C, S, E, Repository, Decider, Version, Error>where
Repository: StateRepository<C, S, Version, Error> + Sync,
Decider: StateComputation<C, S, E, Error> + Sync,
C: Sync,
S: Sync,
E: Sync,
Version: Sync,
Error: Sync,
Sourcepub fn new(repository: Repository, decider: Decider) -> Self
pub fn new(repository: Repository, decider: Decider) -> Self
Creates a new instance of StateStoredAggregate.
Sourcepub async fn handle(&self, command: &C) -> Result<(S, Version), Error>
pub async fn handle(&self, command: &C) -> Result<(S, Version), Error>
Handles the command by fetching the state from the repository, computing new state based on the current state and the command, and saving the new state to the repository.
Trait Implementations§
Source§impl<C, S, E, Repository, Decider, Version, Error> StateComputation<C, S, E, Error> for StateStoredAggregate<C, S, E, Repository, Decider, Version, Error>where
Repository: StateRepository<C, S, Version, Error>,
Decider: StateComputation<C, S, E, Error>,
impl<C, S, E, Repository, Decider, Version, Error> StateComputation<C, S, E, Error> for StateStoredAggregate<C, S, E, Repository, Decider, Version, Error>where
Repository: StateRepository<C, S, Version, Error>,
Decider: StateComputation<C, S, E, Error>,
Source§impl<C, S, E, Repository, Decider, Version, Error> StateRepository<C, S, Version, Error> for StateStoredAggregate<C, S, E, Repository, Decider, Version, Error>where
Repository: StateRepository<C, S, Version, Error> + Sync,
Decider: StateComputation<C, S, E, Error> + Sync,
C: Sync,
S: Sync,
E: Sync,
Version: Sync,
Error: Sync,
impl<C, S, E, Repository, Decider, Version, Error> StateRepository<C, S, Version, Error> for StateStoredAggregate<C, S, E, Repository, Decider, Version, Error>where
Repository: StateRepository<C, S, Version, Error> + Sync,
Decider: StateComputation<C, S, E, Error> + Sync,
C: Sync,
S: Sync,
E: Sync,
Version: Sync,
Error: Sync,
Source§async fn fetch_state(&self, command: &C) -> Result<Option<(S, Version)>, Error>
async fn fetch_state(&self, command: &C) -> Result<Option<(S, Version)>, Error>
Fetches current state, based on the command.
Auto Trait Implementations§
impl<C, S, E, Repository, Decider, Version, Error> Freeze for StateStoredAggregate<C, S, E, Repository, Decider, Version, Error>
impl<C, S, E, Repository, Decider, Version, Error> RefUnwindSafe for StateStoredAggregate<C, S, E, Repository, Decider, Version, Error>where
Repository: RefUnwindSafe,
Decider: RefUnwindSafe,
C: RefUnwindSafe,
S: RefUnwindSafe,
E: RefUnwindSafe,
Version: RefUnwindSafe,
Error: RefUnwindSafe,
impl<C, S, E, Repository, Decider, Version, Error> Send for StateStoredAggregate<C, S, E, Repository, Decider, Version, Error>
impl<C, S, E, Repository, Decider, Version, Error> Sync for StateStoredAggregate<C, S, E, Repository, Decider, Version, Error>
impl<C, S, E, Repository, Decider, Version, Error> Unpin for StateStoredAggregate<C, S, E, Repository, Decider, Version, Error>
impl<C, S, E, Repository, Decider, Version, Error> UnwindSafe for StateStoredAggregate<C, S, E, Repository, Decider, Version, Error>where
Repository: UnwindSafe,
Decider: UnwindSafe,
C: UnwindSafe,
S: UnwindSafe,
E: UnwindSafe,
Version: UnwindSafe,
Error: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more