Class DefaultSnapshotStore
java.lang.Object
io.fluxzero.sdk.persisting.eventsourcing.DefaultSnapshotStore
- All Implemented Interfaces:
SnapshotStore
Default implementation of the
SnapshotStore interface, responsible for managing snapshots of aggregate roots
in an event-sourced system.
This implementation uses a key-value store (KeyValueClient) to store snapshots, a Serializer to
handle serialization and deserialization of snapshots, and an EventStore for managing the associated event
data.
If deserialization fails, a warning is logged, the snapshot is deleted, and the aggregate is reconstructed from its event history.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondeleteSnapshot(Object aggregateId) Deletes the snapshot for the specified aggregate ID.getSnapshot(Object aggregateId) Retrieves the most recent snapshot for a given aggregate ID, if available.protected StringsnapshotKey(Object aggregateId) <T> CompletableFuture<Void> storeSnapshot(Entity<T> snapshot) Stores a new snapshot for the given aggregate entity.
-
Constructor Details
-
DefaultSnapshotStore
public DefaultSnapshotStore()
-
-
Method Details
-
storeSnapshot
Description copied from interface:SnapshotStoreStores a new snapshot for the given aggregate entity.The snapshot typically contains the latest known state and metadata such as the aggregate ID and sequence number. Storing a snapshot will overwrite any existing snapshot for the same aggregate ID.
- Specified by:
storeSnapshotin interfaceSnapshotStore- Type Parameters:
T- The aggregate root type.- Parameters:
snapshot- The aggregate entity to be stored as a snapshot.- Returns:
- A
CompletableFutureindicating whether the operation completed successfully.
-
getSnapshot
Description copied from interface:SnapshotStoreRetrieves the most recent snapshot for a given aggregate ID, if available.- Specified by:
getSnapshotin interfaceSnapshotStore- Type Parameters:
T- The expected type of the aggregate.- Parameters:
aggregateId- The ID of the aggregate for which to retrieve a snapshot.- Returns:
- An
Optionalcontaining the aggregate snapshot if present, otherwise empty.
-
deleteSnapshot
Description copied from interface:SnapshotStoreDeletes the snapshot for the specified aggregate ID.- Specified by:
deleteSnapshotin interfaceSnapshotStore- Parameters:
aggregateId- The ID of the aggregate whose snapshot should be deleted.- Returns:
- A
CompletableFutureindicating completion of the deletion operation.
-
snapshotKey
-