Implemented full CRUD for the clients router:
- clients.list: returns all clients ordered by name
- clients.create: inserts with UUID + createdAt timestamp
- clients.update: partial update of name and/or industry
- clients.delete: guard check — returns error payload if client has
sub-clients or projects (does not delete)
- clients.deleteWithCascade: BFS recursion to collect all descendant
clients, nulls projectId on orphaned tasks, then deletes projects
and all collected clients in order
Imports added: eq, asc, inArray from drizzle-orm; getDb and schema
tables (clients, projects, tasks) from db module.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>