com.github.rahulsom.grooves.queries.VersionedQuery Maven / Gradle / Ivy
package com.github.rahulsom.grooves.queries;
import com.github.rahulsom.grooves.api.AggregateType;
import com.github.rahulsom.grooves.api.events.BaseEvent;
import com.github.rahulsom.grooves.api.snapshots.VersionedSnapshot;
import org.reactivestreams.Publisher;
import java.util.Date;
public interface VersionedQuery<
AggregateIdT,
AggregateT extends AggregateType,
EventIdT,
EventT extends BaseEvent,
SnapshotIdT,
SnapshotT extends VersionedSnapshot> {
/**
* Computes a snapshot for specified version of an aggregate.
*
* @param aggregate The aggregate
* @param version The version number, starting at 1
*
* @return An Flowable that returns at most one Snapshot
*/
Publisher computeSnapshot(AggregateT aggregate, long version);
/**
* Computes a snapshot for specified version of an aggregate.
*
* @param aggregate The aggregate
* @param version The version number, starting at 1
* @param redirect If there has been a deprecation, redirect to the current aggregate's
* snapshot. Defaults to true.
*
* @return An Flowable that returns at most one Snapshot
*/
Publisher computeSnapshot(AggregateT aggregate, long version, boolean redirect);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy