/**
* Para la tarea WEBINT-328-Pausas-cacelaciones.
* Almacena las pausas/cancelaciones que no se han podido hacer porque la linea esta en
* "Test"
*/


DO $$ BEGIN
  CREATE TYPE SUSPENDTERMINATE AS ENUM ('suspend','terminate');
EXCEPTION
    WHEN duplicate_object THEN null;
END $$;

CREATE TABLE IF NOT EXISTS pause_cancel_tasks (
    id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
    iccid TEXT NOT NULL,
    operation_type SUSPENDTERMINATE,
    last_checked TIMESTAMPTZ, -- Última vez que se ha comprobado que no esté en test
    activation_date TIMESTAMPTZ, -- Fecha de activacion para comprobar si ha pasdo un mes
    next_check TIMESTAMPTZ, -- Si se ha comprobado se asignará la siguiente fecha de revision

    completed_date TIMESTAMPTZ, -- Cuando se ha completado, para bien o mal.
    error TEXT,
    action_data JSONB -- datos de la operacion original.
);

-- Indice de las tareas que no han terminado 
CREATE INDEX idx_pause_cancel_tasks_pending 
ON pause_cancel_tasks (next_check) 
WHERE completed_date IS NULL;


