
-- DROP TABLE IF EXISTS ats;
CREATE TABLE IF NOT EXISTS ats (
    ats_id BIGINT UNSIGNED NOT NULL PRIMARY KEY  AUTO_INCREMENT,
    funcion VARCHAR(512) NOT NULL  COMMENT 'Nombre del script o function/method a correr. Lo usual es sea unico',
    es enum('script','callback', 'manual') NOT NULL DEFAULT 'script' COMMENT 'manual es que ella sola se encarga no automatizar',
    siguiente_el DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Required: Al iniciar pone en siguiente inicializacion',
    termino enum('Si','No') NOT NULL DEFAULT 'No' COMMENT 'Required: Al iniciar pone en No al terminar lo pone en Si',
    corrio_el DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Required: Al iniciar pone en NOW()',
    intervalo VARCHAR(16) NOT NULL DEFAULT '' COMMENT 'Opcional el DateInterval de php, ie P1D por si no esta en parametros y se quiere usar',
    base DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Opcional fecha base para el DateIntreval',
    UNIQUE KEY funcion_unica(funcion),
    KEY por_termino(termino),
    KEY por_toca_fecha(siguiente_el),
    KEY por_funcion(funcion, es)
) COMMENT 'Simular el win at o unix chron para correr un script/callback por tiempo, fail-safe o checar si termino por otro trigger, el mysql event se recomienda en SQL sin script event.';
-- Ejemplo
-- INSERT INTO ats(funcion, es, intervalo, base) VALUES('nota_bodega_lockea_tiempo_transcurrido', 'manual', 'P30M', '2024-04-01 07:00:00') ON DUPLICATE KEY UPDATE funcion='nota_bodega_lockea_tiempo_transcurrido';

