Setup DDD style aggregates from a GraphQL schema. Store aggregate state to an event-store using REST, and query using both GraphQL and traditional REST. More advanced applications can use CQRS principle to build custom data integrations and views by simply reducing the underlying event stream.
- data is stored using an event sourcing model in an 'event-store'.
- a GraphQL API is provided for querying
- Schema information can be attached to drive GraphQL API and to provide some level of validation when saving data.
- external "read-only" resources can be attached to GraphQL queries
- like most document style stores, the ability to store both complete documents and partial updates is supported.
- by keeping to simple, generic events this is deliberately aimed at problem domains where an aggregate can simply be modelled as a document. The architectural benefits of event sourcing are retained, for example another system could observe the events, but there is no attempt to define state as a set of explicit domain events (AccountCreated, AccountApproved etc).