Files
2026-10-03 13:40:26 +02:00

26 lines
1.1 KiB
Markdown

# api-shared-infrastructure
Event store en PostgreSQL y el camino de los eventos hasta la lectura.
- **Import**: `@task-stream/api/shared/infrastructure`
- **Capa**: `infrastructure` · **Tags**: `scope:api-shared`, `type:infrastructure`
## Contenido
- `PostgresEventStore` (tabla `events`, `UNIQUE(stream_id, position)` → `ConcurrencyError`).
- `EventSerializer` / `EventDeserializer` y `EventStorePublisher` (sustituye al publisher del `EventBus`: `commit()` persiste).
- `EventStoreRelay`: copia los eventos nuevos al Redis Stream (`FOR UPDATE SKIP LOCKED`).
- `EventsBridge`: consume el stream y entrega cada evento a sus `@EventsHandler`, en orden y esperando (ACK al final).
- Conexiones Redis (`REDIS_CLIENT`, `GRAPHQL_PUB_SUB`) y `SharedInfrastructureModule.forRootAsync`.
Flujo completo: [Arquitectura](../../../../docs/02-arquitectura.md#22-flujo-completo-de-una-escritura).
## Comandos
```sh
npx nx lint api-shared-infrastructure
npx nx test api-shared-infrastructure # Jest
```
Reglas de dependencia entre capas: [Arquitectura](../../../../docs/02-arquitectura.md#21-capas-hexagonales).