Decorate resolver methods with @Mutation(() => ReturnType). Always use @InputType() classes for mutation arguments — never @ObjectType(). Suffix input types with Input (e.g. CreateUserInput). Return the mutated object when possible so clients can update their Apollo cache without a follow-up query.
Suffix all input types with Input — CreateUserInput, UpdateUserInput, DeleteUserInput.
Use @InputType() for mutation arguments — never @ObjectType().
Return the mutated object when possible — clients can update their Apollo cache without re-fetching.
Use PartialType(CreateUserInput) for update inputs — all fields become optional with same validations.
Boolean return type is acceptable for delete mutations when the entity is no longer accessible.