mod error;
mod event_store;
#[cfg(feature = "listener")]
mod listener;
mod migrator;
mod snapshotter;
pub use crate::event_store::PgEventStore;
#[cfg(feature = "listener")]
pub use crate::listener::{
id_indexer::{Error as PgIdIndexerError, PgIdIndexer},
AbortRetry, PgEventListener, PgEventListenerConfig, PgEventListenerError, RetryAction,
};
pub use crate::snapshotter::PgSnapshotter;
use disintegrate::{DecisionMaker, Event, EventSourcedStateStore, SnapshotConfig, WithSnapshot};
use disintegrate_serde::Serde;
pub use error::Error;
pub use migrator::Migrator;
pub type PgEventId = i64;
pub type PgDecisionMaker<E, S, SN> =
DecisionMaker<EventSourcedStateStore<PgEventId, E, PgEventStore<E, S>, SN>>;
pub type WithPgSnapshot = WithSnapshot<PgEventId, PgSnapshotter>;
pub fn decision_maker<
E: Event + Send + Sync + Clone,
S: Serde<E> + Clone + Sync + Send,
SN: SnapshotConfig + Clone,
>(
event_store: PgEventStore<E, S>,
snapshot_config: SN,
) -> PgDecisionMaker<E, S, SN> {
DecisionMaker::new(EventSourcedStateStore::new(event_store, snapshot_config))
}