module:
  name: crud
  version: 1.0.0
  description: "Módulo CRUD genérico para operaciones de base de datos"
  category: core
  author: Backend MCP
  license: MIT

# Condiciones de activación
activation:
  keywords:
    - crud
    - api
    - rest
    - endpoint
    - controller
    - model
    - entity
    - resource
  auto_detect: true
  priority: medium

# Puntos de entrada del módulo
entry_points:
  controller: "controller.ts.hbs"
  service: "service.ts.hbs"
  dto: "dto.ts.hbs"
  routes: "routes.ts.hbs"
  middleware: "middleware.ts.hbs"
  validator: "validator.ts.hbs"

# Dependencias
dependencies:
  required:
    - database
  optional:
    - auth
    - logging
    - cache
    - validation

# Variables de entorno
environment:
  required:
    - DATABASE_URL
  optional:
    - CRUD_DEFAULT_PAGE_SIZE
    - CRUD_MAX_PAGE_SIZE
    - CRUD_ENABLE_SOFT_DELETE
    - CRUD_ENABLE_AUDIT

# Características del módulo
features:
  - "CRUD operations (Create, Read, Update, Delete)"
  - "Pagination and filtering"
  - "Sorting and searching"
  - "Soft delete support"
  - "Audit logging"
  - "Input validation"
  - "Error handling"
  - "Swagger documentation"
  - "Generic controllers"
  - "DTO transformations"
  - "Query optimization"
  - "Bulk operations"

# API endpoints generados
api:
  base_path: "/api"
  endpoints:
    - path: "/{entity}"
      method: GET
      description: "Get all entities with pagination"
      auth_required: false
      parameters:
        - name: page
          type: number
        - name: limit
          type: number
        - name: search
          type: string
        - name: sort
          type: string
    - path: "/{entity}/{id}"
      method: GET
      description: "Get entity by ID"
      auth_required: false
    - path: "/{entity}"
      method: POST
      description: "Create new entity"
      auth_required: true
    - path: "/{entity}/{id}"
      method: PUT
      description: "Update entity"
      auth_required: true
    - path: "/{entity}/{id}"
      method: DELETE
      description: "Delete entity"
      auth_required: true
    - path: "/{entity}/bulk"
      method: POST
      description: "Bulk operations"
      auth_required: true

# Archivos generados
generated_files:
  - "src/controllers/{entity}.controller.ts"
  - "src/services/{entity}.service.ts"
  - "src/dto/{entity}.dto.ts"
  - "src/routes/{entity}.routes.ts"
  - "src/middleware/crud.middleware.ts"
  - "src/validators/{entity}.validator.ts"
  - "src/types/crud.types.ts"

# Integración con base de datos
database:
  models_required: false
  auto_generate_models: true
  supported_relations:
    - one_to_one
    - one_to_many
    - many_to_many
  features:
    - soft_delete
    - timestamps
    - audit_fields

# Configuración de paginación
pagination:
  default_page_size: 10
  max_page_size: 100
  include_total_count: true
  include_page_info: true

# Validación
validation:
  input_validation: true
  output_validation: true
  custom_validators: true
  sanitization: true

# Seguridad
security:
  input_sanitization: true
  sql_injection_protection: true
  xss_protection: true
  rate_limiting: true
  field_filtering: true

# Ejemplos de uso
examples:
  - name: "Basic CRUD"
    description: "CRUD básico para entidad User"
    code: |
      // GET /api/users?page=1&limit=10
      // POST /api/users
      // GET /api/users/123
      // PUT /api/users/123
      // DELETE /api/users/123
  
  - name: "Advanced filtering"
    description: "Filtrado avanzado con búsqueda"
    code: |
      // GET /api/users?search=john&sort=createdAt:desc&status=active

# Instrucciones para agentes IA
ai_instructions: |
  Este módulo genera operaciones CRUD completas para cualquier entidad.
  
  Pasos de activación:
  1. Detectar entidades mencionadas en el input del usuario
  2. Generar controladores, servicios y DTOs para cada entidad
  3. Configurar rutas y middleware
  4. Aplicar validaciones y seguridad
  
  Palabras clave de activación:
  - "CRUD", "API REST", "endpoints"
  - "crear", "leer", "actualizar", "eliminar"
  - "controlador", "servicio", "modelo"
  
  Configuración automática:
  - Detectar entidades del esquema Prisma
  - Generar DTOs basados en modelos
  - Configurar paginación y filtros
  - Aplicar middleware de autenticación si está disponible

# Scripts de automatización
scripts:
  init: "init.js"
  generate_entity: "generate-entity.js"
  update_routes: "update-routes.js"
  validate_schema: "validate-schema.js"

# Pruebas
tests:
  unit:
    - "controller.test.ts"
    - "service.test.ts"
    - "dto.test.ts"
  integration:
    - "crud-api.test.ts"
    - "pagination.test.ts"
  e2e:
    - "crud-flow.e2e.ts"

# Métricas
metrics:
  performance:
    - query_execution_time
    - response_time
    - throughput
  usage:
    - endpoints_called
    - entities_created
    - queries_executed

# Compatibilidad
compatibility:
  node_versions: [">=16.0.0"]
  frameworks:
    - express: ">=4.18.0"
    - fastify: ">=4.0.0"
  databases:
    - postgresql: ">=12.0"
    - mysql: ">=8.0"
    - sqlite: ">=3.0"
    - mongodb: ">=5.0"

# Documentación
documentation:
  readme: "README.md"
  api_docs: "api-docs.md"
  examples: "examples/"
  changelog: "CHANGELOG.md"