App Function Services

packages/app-function-services/README.md

@repo/app-function-services

Servicios server-side reutilizables para Cloud Functions. Este package contiene casos de uso que requieren el Admin SDK; no debe importarse desde componentes o codigo ejecutado en el navegador.

Cuando usarlo

  • Usar @repo/app-services para servicios iniciados desde una app cliente.
  • Usar este package desde functions/ cuando la operacion necesita privilegios de Firebase Admin.
  • El acceso a Firebase pasa por @repo/firebase-admin-adapter; no importar el SDK directamente.
  • Las rutas de Firestore se obtienen de @repo/constants (FIRESTORE_PATHS).

API publica

Todos los exports salen de src/index.ts y se importan desde @repo/app-function-services.

Verification codes

  • createVerificationCode(input) valida con createVerificationCodeSchema y crea el documento.
  • getVerificationCodeByUidAndCode(uid, code) obtiene un codigo o null.
  • getVerificationCodesByUidAndCode(uid, code, limit?) obtiene coincidencias.
  • updateVerificationCodeUsedAt(uid, code, newCode) actualiza codigo e incrementa intentos.
  • deleteVerificationCodesByUidAndCode(uid, code) elimina los codigos encontrados.

Invitations

Las funciones de invitaciones estan en src/invitations/invitations-service.ts y se reexportan desde src/invitations/index.ts. createInvitation conserva estateId e invitationType cuando la invitacion corresponde a un estate; la validacion de esos campos permanece en @repo/schemas. Consultar ese archivo antes de agregar o documentar una nueva operacion.

Como agregar un servicio

  1. Crear un modulo dentro de src/<dominio>/.
  2. Validar entradas con un schema de @repo/schemas.
  3. Usar funciones de @repo/firebase-admin-adapter para persistencia.
  4. Usar constantes de @repo/constants para rutas y nombres compartidos.
  5. Reexportar desde el barrel del dominio y src/index.ts.
  6. Agregar tests Vitest junto al servicio.

Validacion

bash
pnpm lint --filter @repo/app-function-services
pnpm build --filter @repo/app-function-services
pnpm type-check --filter @repo/app-function-services
pnpm test:run --filter @repo/app-function-services