Files
gh-venturo-id-venturo-claud…/commands/add-entity.md
2025-11-30 09:04:41 +08:00

3.3 KiB

description
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