Struct postgres_es::PostgresEventRepository
source · pub struct PostgresEventRepository { /* private fields */ }
Expand description
An event repository relying on a Postgres database for persistence.
Implementations§
source§impl PostgresEventRepository
impl PostgresEventRepository
sourcepub fn new(pool: Pool<Postgres>) -> Self
pub fn new(pool: Pool<Postgres>) -> Self
Creates a new PostgresEventRepository
from the provided database connection.
This uses the default tables ‘events’ and ‘snapshots’.
use sqlx::{Pool, Postgres};
use postgres_es::PostgresEventRepository;
fn configure_repo(pool: Pool<Postgres>) -> PostgresEventRepository {
PostgresEventRepository::new(pool)
}
sourcepub fn with_streaming_channel_size(self, stream_channel_size: usize) -> Self
pub fn with_streaming_channel_size(self, stream_channel_size: usize) -> Self
Configures a PostgresEventRepository
to use a streaming queue of the provided size.
Example: configure the repository to stream with a 1000 event buffer.
use sqlx::{Pool, Postgres};
use postgres_es::PostgresEventRepository;
fn configure_repo(pool: Pool<Postgres>) -> PostgresEventRepository {
let store = PostgresEventRepository::new(pool);
store.with_streaming_channel_size(1000)
}
sourcepub fn with_tables(self, events_table: &str, snapshots_table: &str) -> Self
pub fn with_tables(self, events_table: &str, snapshots_table: &str) -> Self
Configures a PostgresEventRepository
to use the provided table names.
Example: configure the repository to use “my_event_table” and “my_snapshot_table” for the event and snapshot table names.
use sqlx::{Pool, Postgres};
use postgres_es::PostgresEventRepository;
fn configure_repo(pool: Pool<Postgres>) -> PostgresEventRepository {
let store = PostgresEventRepository::new(pool);
store.with_tables("my_event_table", "my_snapshot_table")
}
Trait Implementations§
source§impl PersistedEventRepository for PostgresEventRepository
impl PersistedEventRepository for PostgresEventRepository
source§fn get_events<'life0, 'life1, 'async_trait, A>(
&'life0 self,
aggregate_id: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<Vec<SerializedEvent>, PersistenceError>> + Send + 'async_trait>>where
A: 'async_trait + Aggregate,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_events<'life0, 'life1, 'async_trait, A>(
&'life0 self,
aggregate_id: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<Vec<SerializedEvent>, PersistenceError>> + Send + 'async_trait>>where
A: 'async_trait + Aggregate,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Returns all events for a single aggregate instance.
source§fn get_last_events<'life0, 'life1, 'async_trait, A>(
&'life0 self,
aggregate_id: &'life1 str,
last_sequence: usize
) -> Pin<Box<dyn Future<Output = Result<Vec<SerializedEvent>, PersistenceError>> + Send + 'async_trait>>where
A: 'async_trait + Aggregate,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_last_events<'life0, 'life1, 'async_trait, A>(
&'life0 self,
aggregate_id: &'life1 str,
last_sequence: usize
) -> Pin<Box<dyn Future<Output = Result<Vec<SerializedEvent>, PersistenceError>> + Send + 'async_trait>>where
A: 'async_trait + Aggregate,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Returns the last events for a single aggregate instance.
source§fn get_snapshot<'life0, 'life1, 'async_trait, A>(
&'life0 self,
aggregate_id: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<Option<SerializedSnapshot>, PersistenceError>> + Send + 'async_trait>>where
A: 'async_trait + Aggregate,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_snapshot<'life0, 'life1, 'async_trait, A>(
&'life0 self,
aggregate_id: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<Option<SerializedSnapshot>, PersistenceError>> + Send + 'async_trait>>where
A: 'async_trait + Aggregate,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Returns the current snapshot for an aggregate instance.
source§fn persist<'life0, 'life1, 'async_trait, A>(
&'life0 self,
events: &'life1 [SerializedEvent],
snapshot_update: Option<(String, Value, usize)>
) -> Pin<Box<dyn Future<Output = Result<(), PersistenceError>> + Send + 'async_trait>>where
A: 'async_trait + Aggregate,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn persist<'life0, 'life1, 'async_trait, A>(
&'life0 self,
events: &'life1 [SerializedEvent],
snapshot_update: Option<(String, Value, usize)>
) -> Pin<Box<dyn Future<Output = Result<(), PersistenceError>> + Send + 'async_trait>>where
A: 'async_trait + Aggregate,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Commits the updated aggregate and accompanying events.
source§fn stream_events<'life0, 'life1, 'async_trait, A>(
&'life0 self,
aggregate_id: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<ReplayStream, PersistenceError>> + Send + 'async_trait>>where
A: 'async_trait + Aggregate,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn stream_events<'life0, 'life1, 'async_trait, A>(
&'life0 self,
aggregate_id: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<ReplayStream, PersistenceError>> + Send + 'async_trait>>where
A: 'async_trait + Aggregate,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Streams all events for an aggregate instance.
source§fn stream_all_events<'life0, 'async_trait, A>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<ReplayStream, PersistenceError>> + Send + 'async_trait>>where
A: 'async_trait + Aggregate,
Self: 'async_trait,
'life0: 'async_trait,
fn stream_all_events<'life0, 'async_trait, A>(
&'life0 self
) -> Pin<Box<dyn Future<Output = Result<ReplayStream, PersistenceError>> + Send + 'async_trait>>where
A: 'async_trait + Aggregate,
Self: 'async_trait,
'life0: 'async_trait,
Streams all events for an aggregate type.
Auto Trait Implementations§
impl !RefUnwindSafe for PostgresEventRepository
impl Send for PostgresEventRepository
impl Sync for PostgresEventRepository
impl Unpin for PostgresEventRepository
impl !UnwindSafe for PostgresEventRepository
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more