Initial commit
This commit is contained in:
128
commands/add-entity.md
Normal file
128
commands/add-entity.md
Normal file
@@ -0,0 +1,128 @@
|
||||
---
|
||||
description: Add new entity with full CRUD to existing feature
|
||||
---
|
||||
|
||||
# Add Entity and Routes
|
||||
|
||||
Add a new entity with complete CRUD operations to an **existing feature**.
|
||||
|
||||
## When to Use
|
||||
|
||||
**Use this when:**
|
||||
- Adding new data entity to existing feature
|
||||
- Need full CRUD infrastructure (Create, Read, Update, Delete, List)
|
||||
- Example: Add `profile` entity to `user_management` feature
|
||||
|
||||
**Don't use when:**
|
||||
- Creating new feature → Use `/venturo-go:new-feature`
|
||||
- Adding lightweight endpoint only → Use `/venturo-go:add-endpoint`
|
||||
|
||||
## Workflow
|
||||
|
||||
### Interactive Discovery
|
||||
|
||||
Ask these questions:
|
||||
|
||||
1. **Which feature?** (List from `features/` directory)
|
||||
2. **Entity name?** (singular, e.g., `product`, `order`, `profile`)
|
||||
3. **Database table name?** (usually plural)
|
||||
4. **Table exists?** (Yes = generate from schema, No = design schema)
|
||||
5. **Entity fields?** (if designing new schema)
|
||||
6. **Relationships?** (foreign keys, joins)
|
||||
7. **HTTP operations?** (CRUD, batch, custom actions)
|
||||
8. **Base URL path?** (e.g., `/products`, `/orders`)
|
||||
9. **Authentication?** (public, authenticated, role-based, permission-based)
|
||||
10. **Business rules?** (validation, state transitions, side effects)
|
||||
11. **External services?** (email, storage, notifications)
|
||||
|
||||
Present plan and ask for confirmation.
|
||||
|
||||
### Implementation Phases
|
||||
|
||||
Execute these 9 phases in order:
|
||||
|
||||
1. **Migration** - `phases/new-entity/01-migration.md`
|
||||
2. **Domain Entity** - `phases/new-entity/02-domain-entity.md`
|
||||
3. **DTOs** - `phases/new-entity/03-dtos.md`
|
||||
4. **Repository** - `phases/new-entity/04-repository.md`
|
||||
5. **Service** - `phases/new-entity/05-service.md`
|
||||
6. **HTTP Handler** - `phases/new-entity/06-handler.md`
|
||||
7. **Routes & Errors** - `phases/new-entity/07-routes.md`
|
||||
8. **Code Quality** - `phases/shared/code-quality.md`
|
||||
9. **Documentation** - `phases/shared/documentation.md`
|
||||
|
||||
## Common Patterns
|
||||
|
||||
**Simple CRUD Entity:**
|
||||
- Basic create, read, update, delete
|
||||
- Example: Product, Category, Tag
|
||||
|
||||
**Entity with Relationships:**
|
||||
- References other entities
|
||||
- Example: Order (belongs to User)
|
||||
|
||||
**Entity with State Machine:**
|
||||
- Status transitions + business rules
|
||||
- Example: Order (draft → pending → confirmed → shipped)
|
||||
|
||||
**Entity with Soft Delete:**
|
||||
- Uses GORM `DeletedAt` field
|
||||
- Never permanently deleted
|
||||
|
||||
**Entity with Audit Trail:**
|
||||
- Tracks `CreatedBy`, `UpdatedBy`
|
||||
- Populated from auth context
|
||||
|
||||
## File Naming Conventions
|
||||
|
||||
- Entities: `entity.{entity}.go` (singular)
|
||||
- DTOs: `request.{entity}.go`, `response.{entity}.go`
|
||||
- Handlers: `http.{entity}.go`
|
||||
- Repositories: `repo.{entity}.go`
|
||||
- Services: `service.{entity}.go`
|
||||
- Errors: `errors.{feature}.go` (shared)
|
||||
|
||||
## Example
|
||||
|
||||
```
|
||||
User: /venturo-go:add-entity
|
||||
|
||||
Claude: Which feature?
|
||||
- user_management
|
||||
- email_sender
|
||||
|
||||
User: user_management
|
||||
|
||||
Claude: Entity name? (singular)
|
||||
|
||||
User: profile
|
||||
|
||||
Claude: Database table name?
|
||||
|
||||
User: user_profiles
|
||||
|
||||
Claude: Does table exist?
|
||||
|
||||
User: No
|
||||
|
||||
Claude: What fields?
|
||||
|
||||
User:
|
||||
- bio: text
|
||||
- avatar_url: string
|
||||
- phone: string, unique
|
||||
- user_id: uuid, foreign key
|
||||
|
||||
[Presents plan, proceeds with phases]
|
||||
```
|
||||
|
||||
## Tips
|
||||
|
||||
- Start with database schema design
|
||||
- Use code generation for standard CRUD: `make gen-crud`
|
||||
- Follow naming conventions strictly
|
||||
- Add validation tags to DTOs
|
||||
- Use feature-specific errors
|
||||
- Test incrementally
|
||||
- Add database indexes for performance
|
||||
- Apply proper authentication
|
||||
Reference in New Issue
Block a user