Class AggregateSnapshotDeletionStrategy.DeleteAllHistoricSnapshots
java.lang.Object
dk.cloudcreate.essentials.components.eventsourced.aggregates.snapshot.AggregateSnapshotDeletionStrategy.DeleteAllHistoricSnapshots
- All Implemented Interfaces:
AggregateSnapshotDeletionStrategy
- Enclosing interface:
- AggregateSnapshotDeletionStrategy
public static class AggregateSnapshotDeletionStrategy.DeleteAllHistoricSnapshots
extends Object
implements AggregateSnapshotDeletionStrategy
Strategy that deletes any historic aggregate snapshots when a new snapshot is persisted
-
Nested Class Summary
Nested classes/interfaces inherited from interface dk.cloudcreate.essentials.components.eventsourced.aggregates.snapshot.AggregateSnapshotDeletionStrategy
AggregateSnapshotDeletionStrategy.DeleteAllHistoricSnapshots, AggregateSnapshotDeletionStrategy.KeepHistoricSnapshots -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanGuard method that determines if Aggregate Snapshot statistics are required in order to determine which Snapshots to delete<ID,AGGREGATE_IMPL_TYPE>
Stream<AggregateSnapshot<ID,AGGREGATE_IMPL_TYPE>> resolveSnapshotsToDelete(List<AggregateSnapshot<ID, AGGREGATE_IMPL_TYPE>> existingSnapshots) Out of all the existing snapshots (loaded without the snapshot payload), return theAggregateSnapshot's that should be deleted
This method is called just prior to adding a newAggregateSnapshot, so if the purpose it to keep 3 snapshots, and we already have 3 snapshots, then this method should return aStreamcontaining the oldest snapshot, which will then be deletedtoString()
-
Constructor Details
-
DeleteAllHistoricSnapshots
public DeleteAllHistoricSnapshots()
-
-
Method Details
-
toString
-
requiresExistingSnapshotDetailsToDetermineWhichAggregateSnapshotsToDelete
public boolean requiresExistingSnapshotDetailsToDetermineWhichAggregateSnapshotsToDelete()Description copied from interface:AggregateSnapshotDeletionStrategyGuard method that determines if Aggregate Snapshot statistics are required in order to determine which Snapshots to delete- Specified by:
requiresExistingSnapshotDetailsToDetermineWhichAggregateSnapshotsToDeletein interfaceAggregateSnapshotDeletionStrategy- Returns:
- true if
AggregateSnapshotRepository.aggregateUpdated(Object, AggregateEventStream)should fetch existingAggregateSnapshot's (without the payload) as input toAggregateSnapshotDeletionStrategy.resolveSnapshotsToDelete(List)or false if all existing snapshots can be deleted (solvesAggregateSnapshotDeletionStrategy.DeleteAllHistoricSnapshotswithout incurring additional DB queries)
-
resolveSnapshotsToDelete
public <ID,AGGREGATE_IMPL_TYPE> Stream<AggregateSnapshot<ID,AGGREGATE_IMPL_TYPE>> resolveSnapshotsToDelete(List<AggregateSnapshot<ID, AGGREGATE_IMPL_TYPE>> existingSnapshots) Description copied from interface:AggregateSnapshotDeletionStrategyOut of all the existing snapshots (loaded without the snapshot payload), return theAggregateSnapshot's that should be deleted
This method is called just prior to adding a newAggregateSnapshot, so if the purpose it to keep 3 snapshots, and we already have 3 snapshots, then this method should return aStreamcontaining the oldest snapshot, which will then be deleted- Specified by:
resolveSnapshotsToDeletein interfaceAggregateSnapshotDeletionStrategy- Type Parameters:
ID- the id type for the aggregateAGGREGATE_IMPL_TYPE- the aggregate type implementation type- Parameters:
existingSnapshots- all the existing snapshots pertaining to a given aggregate instance- Returns:
- all the
AggregateSnapshot's that should be deleted
-