#![allow(clippy::module_inception)]
extern crate self as distributed;
pub mod aggregate;
pub mod bus;
pub mod entity;
pub mod repository;
mod commit_builder;
#[cfg(feature = "emitter")]
pub mod emitter;
mod hashmap_repo;
pub mod lock;
pub mod microsvc;
mod outbox;
mod outbox_worker;
#[cfg(feature = "postgres")]
pub mod postgres_repo;
pub mod queued_repo;
pub mod read_model;
pub mod snapshot;
#[cfg(feature = "sqlite")]
pub mod sqlite_repo;
#[cfg(any(feature = "postgres", feature = "sqlite"))]
mod sqlx_repo;
pub mod table;
pub use entity::{
upcast_events, upcast_payload, BitcodePayloadCodec, Committable, Entity, Event, EventRecord,
EventRecordError, EventUpcaster, LocalEvent, PayloadCodec, UpcastError, BITCODE_PAYLOAD_CODEC,
BITCODE_PAYLOAD_CODEC_VERSION,
};
pub type SourcedResult<T = ()> = std::result::Result<T, EventRecordError>;
pub use repository::{
AsyncCommitBatch, AsyncGetStream, AsyncInboxStore, AsyncReadModelWritePlanStore,
AsyncRelationalReadModelQueryStore, AsyncRepository, AsyncSnapshotStore, AsyncSnapshotWrite,
AsyncStreamWrite, AsyncTransactionalCommit, CommitBatch, InboxOutcome, InboxReceipt,
PreparedEventAppend, RepositoryError, SnapshotWrite, StreamIdentity,
};
pub use aggregate::{hydrate, Aggregate, AsyncAggregateBuilder, AsyncAggregateRepository};
pub use hashmap_repo::{HashMapOutboxStore, HashMapRepository};
#[cfg(feature = "postgres")]
pub use postgres_repo::{PostgresOutboxStore, PostgresRepository};
#[cfg(feature = "sqlite")]
pub use sqlite_repo::{SqliteOutboxStore, SqliteRepository};
pub use lock::{
AsyncLock, AsyncLockManager, InMemoryAsyncLock, InMemoryAsyncLockFuture,
InMemoryAsyncLockManager, LockError,
};
#[cfg(feature = "postgres")]
pub use lock::{PostgresLock, PostgresLockManager};
#[cfg(feature = "sqlite")]
pub use lock::{SqliteLock, SqliteLockManager};
pub use outbox::{
outbox_message_insert_plan, outbox_message_key, outbox_message_row_values,
outbox_message_schema, AsyncOutboxCommit, OutboxMessage, OutboxMessageStatus,
OUTBOX_MESSAGES_TABLE,
};
pub use outbox_worker::{
AsyncOutboxStore,
ClaimOutboxMessages,
DrainResult,
LogPublisher,
LogPublisherError,
OutboxClaimRef,
OutboxPublishFailureAction,
OutboxPublisher,
OutboxStore,
OutboxWorker,
ProcessOneResult,
};
#[cfg(feature = "emitter")]
pub use outbox_worker::LocalEmitterPublisher;
pub use outbox_worker::{
OutboxDispatchOutcome, OutboxDispatcher, OutboxSource, ReceivedOutboxMessage,
DEFAULT_OUTBOX_SOURCE_BATCH, DEFAULT_OUTBOX_SOURCE_LEASE, SOURCED_METADATA_PREFIX,
};
pub use queued_repo::{
AsyncGetAllWithOpts,
AsyncGetWithOpts,
AsyncUnlockableRepository,
Queueable,
QueuedRepository,
ReadOpts,
};
pub use read_model::{
AsyncReadModelLoadBuilder, AsyncReadModelWorkspaceExt, ColumnDef, ColumnType,
DeleteRowMutation, ExpectedVersion, ForeignKey, InMemoryReadModelStore, IndexDef, PatchMode,
PatchRowMutation, PrimaryKey, ReadModel, ReadModelAdapterCapabilities, ReadModelCommitOutcome,
ReadModelError, ReadModelIncludeRows, ReadModelLoadGraph, ReadModelLoadRequest,
ReadModelMigrationArtifact, ReadModelMutation, ReadModelQueryCapabilities, ReadModelSchema,
ReadModelSchemaAdapter, ReadModelSchemaAdapterCapabilities, ReadModelSchemaBootstrap,
ReadModelSchemaIssue, ReadModelSchemaIssueKind, ReadModelSchemaRegistry,
ReadModelSchemaVerification, ReadModelWorkspace, ReadModelWritePlan, ReadModelWritePlanBuilder,
RelationalReadModel, RelationalReadModelIncludes, RelationshipDef, RelationshipKind, RowKey,
RowMutation, RowPatch, RowValue, RowValues, RowWriteMode, Versioned,
DEFAULT_READ_MODEL_VERSION_COLUMN,
};
pub use table::{
generate_table_migration_artifacts, table_schema_bootstrap_result, table_schema_statements,
DeleteTableRowMutation, PatchTableRowMutation, TableAdapterCapabilities, TableColumn,
TableCommitOutcome, TableIndex, TableMigrationArtifact, TableModel, TableMutation,
TableRowMutation, TableSchema, TableSchemaAdapter, TableSchemaAdapterCapabilities,
TableSchemaBootstrap, TableSchemaIssue, TableSchemaIssueKind, TableSchemaRegistry,
TableSchemaRegistryExt, TableSchemaVerification, TableSqlDialect, TableSqlSchemaAdapter,
TableStoreError, TableWritePlan, DEFAULT_TABLE_VERSION_COLUMN,
};
pub use commit_builder::{
AsyncCommitBuilder, AsyncCommitBuilderExt, AsyncReadModelWritePlanCommitExt,
AsyncStagedCommitBuilder,
};
pub use snapshot::{
hydrate_from_snapshot, AsyncSnapshotAggregateRepository, InMemorySnapshotStore, SnapshotRecord,
Snapshottable,
};
#[cfg(feature = "emitter")]
pub use event_emitter_rs::EventEmitter;
pub use distributed_macros::{aggregate, digest, sourced, ReadModel, Snapshot};
#[cfg(feature = "emitter")]
pub use distributed_macros::enqueue;