CQ

CQRS

Used in 126 go projects (avg ★307)

Go
Architecture
Used by 126 projects
api
webapp

Details

Language / Topic
goGo
Category
Architecture

Rules

balanced
- Separate write operations into Commands (e.g., `commands/*.command.ts`) and read operations into Queries (e.g., `queries/*.query.ts`).
- Implement Commands and Queries as classes with an `execute()` method or as request objects dispatched via a mediator/handler.
- Organize within feature modules alongside DTOs for request/response data transfer.
- Dispatch from controllers/UI via mediator (e.g., `mediator.send(query)`), never directly accessing data stores.
- Define request interfaces/objects in Application layer; place handler implementations in Infrastructure layer.
- Register CQRS handlers/services via dependency injection in a central registration module.
- Prohibit direct DbContext/database access in UI/Application layers; use factories or abstractions for scoped instances.
- Use Commands for state mutations, Queries for data retrieval to enforce single responsibility.