Interface AggregateSnapshotDeletionStrategy

    • Method Detail

      • keepALimitedNumberOfHistoricSnapshots

        static AggregateSnapshotDeletionStrategy keepALimitedNumberOfHistoricSnapshots​(long numberOfHistoricSnapshotsToKeep)
        Strategy that keeps a specific number historic aggregate snapshots
        Parameters:
        numberOfHistoricSnapshotsToKeep - the number of historic aggregate snapshots to keep
        Returns:
        Strategy that keeps all historic aggregate snapshot events
      • keepAllHistoricSnapshots

        static AggregateSnapshotDeletionStrategy keepAllHistoricSnapshots()
        Strategy that keeps all historic aggregate snapshots
        Returns:
        Strategy that keeps all historic aggregate snapshots
      • deleteAllHistoricSnapshots

        static AggregateSnapshotDeletionStrategy deleteAllHistoricSnapshots()
        Strategy that deletes any historic aggregate snapshots when a new aggregate snapshot is persisted
        Returns:
        Strategy that deletes any historic aggregate snapshots when a new aggregate snapshot is persisted
      • resolveSnapshotsToDelete

        <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 the AggregateSnapshot's that should be deleted
        This method is called just prior to adding a new AggregateSnapshot, so if the purpose it to keep 3 snapshots, and we already have 3 snapshots, then this method should return a Stream containing the oldest snapshot, which will then be deleted
        Type Parameters:
        ID - the id type for the aggregate
        AGGREGATE_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