-- 1. Comprobando nombres de tablas, y creando tipo de forma seguro
DROP TABLE IF EXISTS estados;
DROP TABLE IF EXISTS proyectos;
DO $$
BEGIN
    IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'tipo_estado') THEN
        CREATE TYPE tipo_estado AS ENUM ('OK', 'ERROR', 'TIMEOUT');
    END IF;
END
$$;

-- 2. Tabla de proyectos
CREATE TABLE proyectos (
    id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
    nombre VARCHAR(100) NOT NULL,
    url_health TEXT NOT NULL
);

-- 3. Tabla de estados (con BIGINT y ENUM)
CREATE TABLE estados (
    id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
    proyecto_id INT REFERENCES proyectos(id),
    estado_codigo tipo_estado NOT NULL,
    fecha TIMESTAMPTZ NOT NULL DEFAULT now()
);

-- 4. Índice para agilizar la búsqueda de los últimos estados
CREATE INDEX idx_estados_proyecto_fecha ON estados (proyecto_id, fecha DESC);
