Files
2026-05-07 09:30:11 +02:00

30 lines
938 B
SQL

-- 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,
estado_monitoreo VARCHAR(20) NOT NULL DEFAULT 'ACTIVO'
);
-- 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);