-- Migration: Crear tabla bitacora_tareas para almacenar archivos de tarea
-- Descripción: Esta tabla almacena los archivos adjuntos a las tareas de las bitácoras

BEGIN;

-- 1. Crear la tabla bitacora_tareas
CREATE TABLE IF NOT EXISTS "public"."bitacora_tareas" (
    "id_bitacora_tarea" SERIAL PRIMARY KEY,
    "fk_id_bitacora" INTEGER NOT NULL,
    "fk_id_archivo" INTEGER NOT NULL,
    "f_reg" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    
    -- Clave foránea a bitacoras
    CONSTRAINT "fk_bitacora_tarea_bitacora"
        FOREIGN KEY ("fk_id_bitacora")
        REFERENCES "public"."bitacoras" ("id_bitacora")
        ON DELETE CASCADE,
    
    -- Clave foránea a archivos
    CONSTRAINT "fk_bitacora_tarea_archivo"
        FOREIGN KEY ("fk_id_archivo")
        REFERENCES "public"."archivos" ("id_archivo")
        ON DELETE CASCADE
);

-- 2. Crear índices para mejorar el rendimiento
CREATE INDEX IF NOT EXISTS "idx_bitacora_tareas_fk_id_bitacora" ON "public"."bitacora_tareas" ("fk_id_bitacora");
CREATE INDEX IF NOT EXISTS "idx_bitacora_tareas_fk_id_archivo" ON "public"."bitacora_tareas" ("fk_id_archivo");

-- 3. Agregar comentarios a la tabla y columnas
COMMENT ON TABLE "public"."bitacora_tareas" IS 'Almacena los archivos adjuntos a las tareas de las bitácoras';
COMMENT ON COLUMN "public"."bitacora_tareas"."id_bitacora_tarea" IS 'Identificador único de la relación bitácora-tarea';
COMMENT ON COLUMN "public"."bitacora_tareas"."fk_id_bitacora" IS 'Referencia a la bitácora';
COMMENT ON COLUMN "public"."bitacora_tareas"."fk_id_archivo" IS 'Referencia al archivo almacenado en la tabla archivos';
COMMENT ON COLUMN "public"."bitacora_tareas"."f_reg" IS 'Fecha de registro';

COMMIT;

