-- ==========================================
-- SCRIPT DE BASE DE DATOS PARA SUPABASE
-- PROYECTO: Presencia Digital IA (ASSEGURA AI - Paquete 2)
-- ==========================================

-- 1. Crear la tabla principal de presencia digital
CREATE TABLE IF NOT EXISTS paq2_presencia_digital (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    cliente_nombre VARCHAR(255) NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    fase_actual INT DEFAULT 1,
    estado VARCHAR(50) DEFAULT 'en_progreso', -- 'en_progreso' o 'completado'
    
    -- Datos estructurados por fase (JSONB para flexibilidad de datos)
    fase1_data JSONB DEFAULT '{}'::jsonb, -- Contacto y Validación del cliente
    fase2_data JSONB DEFAULT '{}'::jsonb, -- Reunión de descubrimiento
    fase3_data JSONB DEFAULT '{}'::jsonb, -- Cuestionario de marca y contenido
    fase4_data JSONB DEFAULT '[]'::jsonb, -- Auditoría digital rápida (Lista)
    fase5_data JSONB DEFAULT '{}'::jsonb, -- Definición de estructura web
    fase6_data JSONB DEFAULT '{}'::jsonb, -- Desarrollo de textos con IA
    fase7_data JSONB DEFAULT '{}'::jsonb, -- Diseño visual (Mockup, Colores, Fuentes)
    fase8_data JSONB DEFAULT '{}'::jsonb, -- Desarrollo de página / landing
    fase9_data JSONB DEFAULT '[]'::jsonb, -- Integraciones básicas
    fase10_data JSONB DEFAULT '{}'::jsonb, -- Revisión y ajustes
    fase11_data JSONB DEFAULT '{}'::jsonb, -- Publicación (DNS, SSL, Lanzamiento)
    fase12_data JSONB DEFAULT '{}'::jsonb, -- Capacitación y entrega
    fase13_data JSONB DEFAULT '{}'::jsonb  -- Conversión comercial (Propuesta futura)
);

-- 2. Habilitar el soporte de Row Level Security (RLS)
ALTER TABLE paq2_presencia_digital ENABLE ROW LEVEL SECURITY;

-- 3. Crear políticas de seguridad para permitir el acceso público para desarrollo e integración
CREATE POLICY "Permitir lectura de presencia_digital" 
ON paq2_presencia_digital FOR SELECT 
USING (true);

CREATE POLICY "Permitir creación de presencia_digital" 
ON paq2_presencia_digital FOR INSERT 
WITH CHECK (true);

CREATE POLICY "Permitir actualización de presencia_digital" 
ON paq2_presencia_digital FOR UPDATE 
USING (true);

CREATE POLICY "Permitir eliminación de presencia_digital" 
ON paq2_presencia_digital FOR DELETE 
USING (true);

-- 4. Crear o reutilizar la función de actualización de 'updated_at'
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
    NEW.updated_at = NOW();
    RETURN NEW;
END;
$$ language 'plpgsql';

-- 5. Crear el trigger para actualizar la columna updated_at
DROP TRIGGER IF EXISTS update_paq2_presencia_digital_updated_at ON paq2_presencia_digital;
CREATE TRIGGER update_paq2_presencia_digital_updated_at
    BEFORE UPDATE ON paq2_presencia_digital
    FOR EACH ROW
    EXECUTE FUNCTION update_updated_at_column();
