29 lines
878 B
SQL
29 lines
878 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
|
|
);
|
|
|
|
-- 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);
|