evidentsource-client 1.0.0-rc1

Rust client for the EvidentSource event sourcing platform
Documentation
//! Prelude module for convenient imports.
//!
//! This module re-exports commonly used types and traits for ergonomic usage:
//!
//! ```rust,ignore
//! use evidentsource_client::prelude::*;
//!
//! let es = EvidentSource::connect_to_server("http://localhost:50051").await?;
//! let conn = es.connect(&DatabaseName::new("my-db")?).await?;
//! let db = conn.latest_database().await?;
//! ```

// Core connection types
pub use crate::client::{Connection, EvidentSource};

// Configuration types
pub use crate::client::{BackoffConfig, EvidentSourceBuilder, TlsConfig};

// Async extensions
pub use crate::client::{CorrelationId, DatabaseConnectionAsync};

// Builders
pub use crate::client::{StateChangeBuilder, TransactionBuilder};

// Database view types (traits and builders only - impl types are internal)
pub use crate::client::{DatabaseAtRevisionTyped, EventQueryBuilder, TypedEventQuery};

// Core traits from evidentsource_core
pub use evidentsource_core::{
    DatabaseAtRevision, DatabaseAtRevisionAndEffectiveTimestamp, DatabaseCatalog,
    DatabaseConnection, DatabaseIdentity, DatabaseProvider,
};

// Domain types - Identifiers
pub use evidentsource_core::domain::{
    DatabaseName, EventSubject, EventType, StateChangeName, StateViewName, StreamName,
};

// Domain types - Events
pub use evidentsource_core::domain::{Event, EventData, ProspectiveEvent};

// Domain types - Selectors, conditions and query options
pub use evidentsource_core::domain::{
    AppendCondition, EventAttribute, EventAttributePrefix, EventSelector, QueryDirection,
    QueryOptions,
};

// Domain types - Transactions
pub use evidentsource_core::domain::{Transaction, TransactionSummary};

// Domain types - State
pub use evidentsource_core::domain::{CommandRequest, StateView};

// Domain types - Errors
pub use evidentsource_core::domain::{DatabaseError, StateChangeError, StateViewError};

// Common external types
pub use chrono::{DateTime, Utc};
pub use futures::{Stream, StreamExt};
pub use nonempty::NonEmpty;

// CloudEvents SDK conversion functions (feature-gated)
#[cfg(feature = "cloudevents")]
pub use crate::client::{
    cloudevent_to_event, cloudevent_to_prospective_event, event_to_cloudevent,
    prospective_event_to_cloudevent,
};