Class PostgresqlAggregateSnapshotRepository

    • Field Detail

      • DEFAULT_AGGREGATE_SNAPSHOTS_TABLE_NAME

        public static final String DEFAULT_AGGREGATE_SNAPSHOTS_TABLE_NAME
        See Also:
        Constant Field Values
    • Method Detail

      • loadSnapshot

        public <ID,​AGGREGATE_IMPL_TYPE> Optional<AggregateSnapshot<ID,​AGGREGATE_IMPL_TYPE>> loadSnapshot​(AggregateType aggregateType,
                                                                                                                     ID aggregateId,
                                                                                                                     EventOrder withLastIncludedEventOrderLessThanOrEqualTo,
                                                                                                                     Class<AGGREGATE_IMPL_TYPE> aggregateImplType)
        Specified by:
        loadSnapshot in interface AggregateSnapshotRepository
        Type Parameters:
        ID - the aggregate ID type
        AGGREGATE_IMPL_TYPE - the concrete aggregate implementation type
        Parameters:
        aggregateType - the aggregate type (determining the aggregate's event stream name)
        aggregateId - the identifier for the aggregate instance
        withLastIncludedEventOrderLessThanOrEqualTo - the snapshot returned must have AggregateSnapshot.eventOrderOfLastIncludedEvent that is less than or equal to this value
        aggregateImplType - the concrete aggregate implementation type
        Returns:
        the aggregate snapshot wrapped in an Optional if a snapshot was found, otherwise Optional.empty()
      • aggregateUpdated

        public <ID,​AGGREGATE_IMPL_TYPE> void aggregateUpdated​(AGGREGATE_IMPL_TYPE aggregate,
                                                                    AggregateEventStream<ID> persistedEvents)
        Description copied from interface: AggregateSnapshotRepository
        Callback from an Aggregate Repository to notify that the aggregate has been updated
        Specified by:
        aggregateUpdated in interface AggregateSnapshotRepository
        Type Parameters:
        ID - the aggregate ID type
        AGGREGATE_IMPL_TYPE - the concrete aggregate implementation type
        Parameters:
        aggregate - the aggregate instance after the changes (in the form of events) has been marked as committed within the aggregate
        persistedEvents - the aggregate changes (in the form of events) after they've been persisted
      • findMostRecentLastIncludedEventOrderFor

        protected Optional<EventOrder> findMostRecentLastIncludedEventOrderFor​(String serializedAggregateId,
                                                                               String aggregateImplType,
                                                                               dk.cloudcreate.essentials.components.foundation.transaction.jdbi.HandleAwareUnitOfWork uow)
      • loadAllSnapshots

        protected <ID,​AGGREGATE_IMPL_TYPE> List<AggregateSnapshot<ID,​AGGREGATE_IMPL_TYPE>> loadAllSnapshots​(String serializedAggregateId,
                                                                                                                        String aggregateImplType,
                                                                                                                        boolean includeSnapshotPayload,
                                                                                                                        dk.cloudcreate.essentials.components.foundation.transaction.jdbi.HandleAwareUnitOfWork uow)
      • deleteAllSnapshots

        public <AGGREGATE_IMPL_TYPE> void deleteAllSnapshots​(Class<AGGREGATE_IMPL_TYPE> ofAggregateImplementationType)
        Description copied from interface: AggregateSnapshotRepository
        Delete all snapshots for the given aggregate implementation type
        Specified by:
        deleteAllSnapshots in interface AggregateSnapshotRepository
        Type Parameters:
        AGGREGATE_IMPL_TYPE - the concrete aggregate implementation type
        Parameters:
        ofAggregateImplementationType - the concrete aggregate implementation type that we want to delete all snapshots for
      • deleteSnapshots

        public <ID,​AGGREGATE_IMPL_TYPE> void deleteSnapshots​(AggregateType aggregateType,
                                                                   ID aggregateId,
                                                                   Class<AGGREGATE_IMPL_TYPE> withAggregateImplementationType)
        Description copied from interface: AggregateSnapshotRepository
        Delete all snapshots for the given aggregate instance with the given aggregate implementation type
        Specified by:
        deleteSnapshots in interface AggregateSnapshotRepository
        Type Parameters:
        ID - the aggregate ID type
        AGGREGATE_IMPL_TYPE - the concrete aggregate implementation type
        Parameters:
        aggregateType - the aggregate type (determining the aggregate's event stream name)
        aggregateId - the id of the aggregate that we want to delete all snapshots for
        withAggregateImplementationType - the concrete aggregate implementation type that we want to delete all snapshots for
      • deleteSnapshots

        public <ID,​AGGREGATE_IMPL_TYPE> void deleteSnapshots​(AggregateType aggregateType,
                                                                   ID aggregateId,
                                                                   Class<AGGREGATE_IMPL_TYPE> withAggregateImplementationType,
                                                                   List<EventOrder> snapshotEventOrdersToDelete)
        Description copied from interface: AggregateSnapshotRepository
        Delete all snapshots with a given AggregateSnapshot.eventOrderOfLastIncludedEvent for the given aggregate instance, with the given aggregate implementation type
        Specified by:
        deleteSnapshots in interface AggregateSnapshotRepository
        Type Parameters:
        ID - the aggregate ID type
        AGGREGATE_IMPL_TYPE - the concrete aggregate implementation type
        Parameters:
        aggregateType - the aggregate type (determining the aggregate's event stream name)
        aggregateId - the id of the aggregate that we want to delete all snapshots for
        withAggregateImplementationType - the concrete aggregate implementation type that we want to delete all snapshots for
        snapshotEventOrdersToDelete - The list of AggregateSnapshot.eventOrderOfLastIncludedEvent 's that should be deleted