feat: event store — persist domain events to Postgres event_log table via composite publisher
This commit is contained in:
@@ -33,6 +33,8 @@ async fn main() -> anyhow::Result<()> {
|
||||
adapters_nats::ensure_stream(&nats_client).await?;
|
||||
info!(nats_url = %config.nats_url, "NATS connected");
|
||||
|
||||
let event_store: Arc<dyn domain::ports::EventStore> =
|
||||
Arc::new(adapters_postgres::PostgresEventStore::new(pool.clone()));
|
||||
let repos = Repos::new(pool);
|
||||
let file_storage = Arc::new(adapters_storage::LocalFileStorage::new(
|
||||
&config.storage_path,
|
||||
@@ -41,8 +43,10 @@ async fn main() -> anyhow::Result<()> {
|
||||
|
||||
// Publisher transport consumes a client clone; the consumer gets another.
|
||||
let pub_transport = adapters_nats::NatsTransport::new(nats_client.clone());
|
||||
let event_pub: Arc<dyn domain::ports::EventPublisher> =
|
||||
let nats_publisher: Arc<dyn domain::ports::EventPublisher> =
|
||||
Arc::new(event_transport::EventPublisherAdapter::new(pub_transport));
|
||||
let event_pub: Arc<dyn domain::ports::EventPublisher> =
|
||||
Arc::new(event_transport::CompositeEventPublisher::new(nats_publisher, event_store));
|
||||
|
||||
let registry = Arc::new(build_plugin_registry(&repos, file_storage, sidecar_writer));
|
||||
let process_next = Arc::new(build_process_next_handler(&repos, registry, event_pub));
|
||||
|
||||
Reference in New Issue
Block a user