Files
Gesti-n-Reservas-Naturcalab…/architecture/logic_hooks.md

1.4 KiB

SOP: Lógica y Hooks

Gestión de Estado (Hooks)

useReservations

  • Propósito: Abstracción de Supabase para CRUD de reservas.
  • Estado: Lista de reservas (data), loading, error.
  • Métodos:
    • fetchReservations(): Select * from reservations.
    • createReservation(data): Insert.
    • updateReservation(id, data): Update. Detección de cambio en government_registration para payload de Webhook.
    • deleteReservation(id): Delete.
  • Realtime: Suscripción a cambios en tabla reservations para actualizar vista automáticamente.

useFormCalculation (dentro del Form)

  • Propósito: Cálculos derivados instantáneos.
  • Input: Valores actuales del form (watch).
  • Output: totalPeople, totalDays.

Lógica de Webhook (Simulación en Cliente)

Nota: Idealmente esto se hace con Database Triggers, pero por simplicidad inicial y control, lo gestionaremos en la capa de servicio del cliente (useReservations) antes de enviar a Supabase, o inmediatamente después del éxito.

Regla de Disparo:

  1. Capturar valor previo de government_registration (en Update).
  2. Si previos_value es EMPTY/NULL Y new_value NO es EMPTY: -> Ejecutar triggerRegistrationWebhook(reservation).

Endpoint Mock:

  • URL: (Definir en .env)
  • Method: POST
  • Body: Definido en gemini.md.

Tipos (TypeScript)

Definir interfaces estrictas en src/types/supabase.ts (o generado) y src/types/app.ts.