feat: event store — persist domain events to Postgres event_log table via composite publisher

This commit is contained in:
2026-05-31 18:36:10 +02:00
parent d022cb9068
commit aa09aec66b
10 changed files with 143 additions and 10 deletions

View File

@@ -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));