The solution I went with was to add a System
aggregate root that could maintain a list of the current Facility
names. When creating a new Facility
, I use the System
aggregate (only one System
as a global object / singleton) as a factory for it. If the given facility name already exists, then it will throw a validation error.
This keeps the validation constraints within the domain and does not rely on the eventually consistent query store.