nstreams 0.2.2

Embeddable versioned event stream handler for existing services
//! Embeddable nstreams service for wiring into existing application endpoints.
//!
//! # Example (Axum)
//!
//! ```no_run
//! use axum::Router;
//! use nstreams::NStreams;
//!
//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
//! let database_url = "postgres://...";
//! let amqp_url = "amqp://guest:guest@localhost:5672/";
//! let nstreams = NStreams::builder()
//!     .database_url(database_url)
//!     .amqp_url(amqp_url)
//!     .build()
//!     .await?;
//!
//! nstreams.spawn_worker().await?;
//!
//! let app: Router = Router::new()
//!     .nest("/api/streams", nstreams::axum::routes().with_state(nstreams));
//! # Ok(())
//! # }
//! ```

#[cfg(feature = "axum")]
pub mod axum;
pub mod service;
pub mod transport;

pub use nstreams_core::{
    stream_max_length_bytes, EventCodec, EventPublisher, EventStore, Namespace, NStreamsHandler,
    ReadStreamBackend, Result, StreamEvent, StreamEventEnvelope, StreamFilter, StreamWorker,
    SubscribeRequest, Subscription, VersionedDelivery, WriteQueueBackend, DEFAULT_MAX_EVENT_BYTES,
    DeliveredEvent, MAX_STREAM_HISTORY_ITEMS, STREAM_MAX_AGE, new_request_id, REQUEST_ID_PREFIX,
};
pub use nstreams_core::event::EventVersion;
pub use nstreams_core::namespace::StreamNamespace;
pub use nstreams_postgres::PostgresEventStore;
pub use nstreams_rabbit::{LapinQueueConsumer, LapinWriteQueue, QueueConsumerConfig, RabbitConfig, RabbitReadStream};

pub use service::{NStreams, NStreamsBuilder};