DEV Community

Khashayar Nourian
Khashayar Nourian

Posted on Originally published at knourian.ir on

When CRUD stops describing the work

CRUD is not the enemy. It is often the smallest correct design for a profile, a team setting, or a simple lookup table.

The trouble starts when a changed object hides a business action. An API that receives an updated inventory DTO can see that Status became Deactivated, but it still has to infer why that happened, whether a reason is required, who is allowed to do it, and what should happen next.

That is where Command-Query Separation helps. A query returns information. A command asks the system to change something. DeactivateInventoryItem(id, reason) says more than a generic update ever can.

This does not require two databases, a message broker, or microservices. It starts with making the request visible where the rules belong.

Top comments (0)