-- 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);