Skip to main content
src/functions concentra utilidades compartidas que pueden usarse desde distintos módulos sin mezclar responsabilidades con controllers o queries. Los archivos de esta carpeta reúnen métodos utilitarios por propósito.

Convenciones obligatorias

  1. Nombres de archivo: utiliza [nombre].function.ts en kebab-case: date.function.ts, pagination.function.ts, string.function.ts.
  2. Nombre de clase: exporta [Nombre]Function en PascalCase, por ejemplo DateFunction o PaginationFunction.
  3. Métodos estáticos: las operaciones reutilizables se exponen como métodos static; se invocan sin instanciar la clase, como PaginationFunction.createPaginationMeta(...).
  4. Responsabilidad única por clase: agrupa operaciones relacionadas (fechas, cadenas, paginación, errores). Evita convertir una clase de utilidades en un conjunto de funciones sin relación.
  5. Trazabilidad: los métodos públicos instrumentados usan @Trace({ name: '...', type: 'method' }) de traceflow, siguiendo los ejemplos. Evita generar spans redundantes en cada paso interno recursivo.
  6. Tipos explícitos: declara los parámetros y resultados; prefiere tipos concretos o genéricos frente a any al crear nuevos métodos. Mantén la misma estructura de retorno que esperan los DTO.
  7. Sin responsabilidades de módulo: no declares rutas HTTP, no registres providers NestJS y no ejecutes consultas de tablas desde estas utilidades. El acceso a datos pertenece a src/queries.

Ejemplo mínimo

pagination.function.ts
El ejemplo de arriba muestra el patrón de nombre, clase y decorador, no una implementación ejecutable. Consulta la página de pagination.function.ts para el código completo.

Utilidades documentadas

Uso en módulos

Los services pueden apoyarse en estas clases para sanitizar entradas, crear meta de paginación o normalizar errores. En una operación de negocio, el service decide cuándo llamarlas; la utility solo resuelve su tarea concreta. No confundas esta convención con src/core: los archivos *.function.ts pueden tener varios métodos estáticos de la misma clase. La regla de una sola función setupX(app) corresponde exclusivamente a *.core.ts.

date.function.ts

db-error.function.ts

pagination.function.ts

string.function.ts