You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Invoice (SQL Server) — caches customer and job data.
Time Service
Aspect
Description
Responsibility
Publishes DayHasPassed events to signal time progression. Enables deterministic, testable time-dependent behaviour.
Events published
DayHasPassed
Design note
No database. Externalises time as an event rather than relying on system clocks or cron jobs. See ADR-0005.
Auditlog Service
Aspect
Description
Responsibility
Consumes all events from the message broker and persists them for audit purposes.
Events handled
All domain events.
Database
Auditlog (SQL Server)
Infrastructure.Messaging (Shared Library)
Aspect
Description
Responsibility
Provides broker-agnostic abstractions (IMessagePublisher, IMessageHandler) and the RabbitMQ implementation. Published as a NuGet package consumed by all services.
Controllers receive HTTP commands and delegate to command handlers.
Command Handlers load the aggregate from the event store (by replaying events), execute the command, and persist new events.
WorkshopPlanning Aggregate encapsulates business rules. Commands are transformed into events internally; the aggregate handles events to mutate its state.
Event Source Repository reads/writes events from/to the WorkshopManagementEventStore database.
Ref Data Repository reads cached Customer and Vehicle data from the WorkshopManagement database (populated by the Event Handler).
Message Publisher publishes domain events to RabbitMQ after successful persistence.