30 lines
1.3 KiB
SQL
30 lines
1.3 KiB
SQL
-- Migración 004: Tabla de contratos adjuntos a reservas
|
|
-- Diseño: tabla separada (no columnas en reservations) para soportar múltiples contratos por reserva
|
|
|
|
CREATE TABLE public.reservation_contracts (
|
|
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
|
|
reservation_id UUID NOT NULL REFERENCES public.reservations(id) ON DELETE CASCADE,
|
|
file_path TEXT NOT NULL, -- Path en Supabase Storage: contracts/{reservation_id}/{filename}
|
|
filename TEXT NOT NULL, -- Nombre visible del archivo
|
|
mime_type TEXT NOT NULL, -- application/pdf, image/jpeg, image/png
|
|
size_bytes INTEGER NOT NULL,
|
|
uploaded_by UUID REFERENCES auth.users(id),
|
|
created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL
|
|
);
|
|
|
|
-- Índice para consultas por reserva
|
|
CREATE INDEX idx_reservation_contracts_reservation_id
|
|
ON public.reservation_contracts(reservation_id);
|
|
|
|
ALTER TABLE public.reservation_contracts ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Por ahora: staff puede gestionar contratos (RLS se refina en migración 009)
|
|
CREATE POLICY "Temp: authenticated can manage contracts"
|
|
ON public.reservation_contracts
|
|
FOR ALL TO authenticated
|
|
USING (true)
|
|
WITH CHECK (true);
|
|
|
|
COMMENT ON TABLE public.reservation_contracts IS
|
|
'Contratos adjuntos a reservas. Archivos almacenados en Supabase Storage bucket "contracts".';
|