Initial commit
This commit is contained in:
115
commands/new-crud.md
Normal file
115
commands/new-crud.md
Normal file
@@ -0,0 +1,115 @@
|
||||
---
|
||||
description: Quick CRUD entity design (simplified version of new-feature)
|
||||
---
|
||||
|
||||
# New CRUD Entity Creation
|
||||
|
||||
You will guide the user through creating a simple CRUD entity with ERD, DBML, PostgreSQL migration, and standard API contract.
|
||||
|
||||
## Workflow
|
||||
|
||||
This command uses an **incremental 3-phase workflow** for quick CRUD entity creation.
|
||||
|
||||
### Interactive Discovery
|
||||
|
||||
Ask the user these questions first:
|
||||
|
||||
1. **Entity name** (singular, snake_case, e.g., `product`, `category`, `tag`)
|
||||
2. **Attributes** with types:
|
||||
- Attribute name
|
||||
- Data type (VARCHAR, INT, DECIMAL, TEXT, TIMESTAMP, etc.)
|
||||
- Length (for VARCHAR)
|
||||
- Required or optional
|
||||
- Unique constraint needed?
|
||||
- Default value (if any)
|
||||
3. **Soft delete needed?** (yes/no, default: yes)
|
||||
4. **Common filters** (e.g., search by name, filter by status)
|
||||
|
||||
Present a complete plan and ask for confirmation before proceeding.
|
||||
|
||||
### Implementation Phases
|
||||
|
||||
After confirmation, execute these phases sequentially (read each phase file when needed):
|
||||
|
||||
1. **Schema Generation** - `phases/new-crud/01-crud-schema.md` (ERD + DBML)
|
||||
2. **PostgreSQL Migration** - `phases/new-crud/02-crud-migrations.md`
|
||||
3. **API Contract** - `phases/new-crud/03-crud-api-contract.md` (Standard CRUD)
|
||||
|
||||
After each phase:
|
||||
- Stop and report what was created
|
||||
- Ask user to review
|
||||
- Wait for "continue" before next phase
|
||||
|
||||
## Key Implementation Rules
|
||||
|
||||
**Database Standards:**
|
||||
- Read `DATABASE_STANDARDS.md` before starting
|
||||
- Apply all audit standards automatically
|
||||
- UUID primary key (VARCHAR 40)
|
||||
- 6 audit trail columns
|
||||
- Standard indexes (deleted_at, unique constraints)
|
||||
- NO foreign key constraints
|
||||
|
||||
**Standard CRUD Endpoints:**
|
||||
```
|
||||
GET /api/v1/{entity_plural} - List with pagination
|
||||
GET /api/v1/{entity_plural}/{id} - Get by ID
|
||||
POST /api/v1/{entity_plural} - Create
|
||||
PUT /api/v1/{entity_plural}/{id} - Update
|
||||
DELETE /api/v1/{entity_plural}/{id} - Soft delete
|
||||
```
|
||||
|
||||
**File Naming:**
|
||||
- ERD: `docs/database/erd/{entity_name}.mmd`
|
||||
- DBML: `docs/database/dbml/{entity_name}.dbml`
|
||||
- Migration: `docs/database/migrations/{timestamp}_add_{entity_name}.sql`
|
||||
- API: `docs/api/contracts/{entity_name}.md`
|
||||
|
||||
## Example Usage
|
||||
|
||||
```
|
||||
User: /venturo-planner:new-crud
|
||||
|
||||
Claude: I'll help you create a simple CRUD entity.
|
||||
|
||||
Let me ask some questions:
|
||||
|
||||
1. What is the entity name? (singular, snake_case)
|
||||
|
||||
User: tag
|
||||
|
||||
Claude: 2. What attributes should this entity have?
|
||||
Please provide: name, type, length (if VARCHAR), required/optional, unique
|
||||
|
||||
User:
|
||||
- name: VARCHAR(100), required, unique
|
||||
- color: VARCHAR(7), optional (hex color code)
|
||||
- description: TEXT, optional
|
||||
|
||||
Claude: 3. Should this entity support soft delete?
|
||||
|
||||
User: yes
|
||||
|
||||
Claude: 4. What filters should be available?
|
||||
|
||||
User: search by name
|
||||
|
||||
[Presents plan, executes phases]
|
||||
```
|
||||
|
||||
## Output Files
|
||||
|
||||
- `docs/database/erd/{entity_name}.mmd` - Mermaid ERD
|
||||
- `docs/database/dbml/{entity_name}.dbml` - DBML schema
|
||||
- `docs/database/migrations/{timestamp}_add_{entity_name}.sql` - PostgreSQL migration
|
||||
- `docs/api/contracts/{entity_name}.md` - Standard CRUD API contract
|
||||
|
||||
## Use Cases
|
||||
|
||||
Perfect for:
|
||||
- Simple lookup tables (tags, categories, statuses)
|
||||
- Reference data (countries, currencies)
|
||||
- Configuration entities
|
||||
- Small entities without complex relationships
|
||||
|
||||
For complex entities with multiple relationships, use `/venturo-planner:new-feature` instead.
|
||||
Reference in New Issue
Block a user