#5858 - zoneCollisions #1853

Merged
jsegarra merged 78 commits from 5858-zone_Collisions into dev 2024-03-15 12:36:38 +00:00
5 changed files with 27 additions and 20 deletions
Showing only changes of commit 791687f271 - Show all commits

View File

@ -4,6 +4,10 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `VN_SCHEDULER`
STARTS CURRENT_TIMESTAMP + INTERVAL 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 1 DAY
ENABLE ENABLE
DO BEGIN DO BEGIN
/**
* Ejecuta el PROCEDURE que comprueba si hay procedimientos planificados para ejecutar
*
*/
CALL `VN_SCHEDULER`(); CALL `VN_SCHEDULER`();
END$$ END$$

View File

@ -1,20 +1,27 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `util`.`VN_SCHEDULER`() CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `util`.`VN_SCHEDULER`()
BEGIN BEGIN
/**
* Ejecuta los procedimientos que se han programado a demanda.
*
*/
DECLARE vDone BOOL; DECLARE vDone BOOL;
DECLARE vError VARCHAR(255) DEFAULT NULL; DECLARE vError VARCHAR(255) DEFAULT NULL;
DECLARE vErrorCode VARCHAR(255) DEFAULT NULL; DECLARE vErrorCode VARCHAR(255) DEFAULT NULL;
DECLARE vSchema VARCHAR(255); DECLARE vSchema VARCHAR(255);
DECLARE vStatus VARCHAR(255); DECLARE vStatus VARCHAR(255);
DECLARE vProcedure VARCHAR(255); DECLARE vProcedure VARCHAR(255);
-- DECLARE vLogMail VARCHAR(255);
DECLARE vScheduleFk INT; DECLARE vScheduleFk INT;
-- Obtener datos de la tabla vn_schedules -- Obtener datos de la tabla vn_schedules
DECLARE vQueue CURSOR FOR DECLARE vQueue CURSOR FOR
SELECT id, `schema`, `procedure`, `status` SELECT id, `schema`, `procedure`, `status`
FROM vn_schedules FROM vn_schedules
WHERE status = 'scheduled'; WHERE status = 'scheduled';
DECLARE EXIT HANDLER FOR SQLEXCEPTION
GET DIAGNOSTICS CONDITION 1
vError = MESSAGE_TEXT,
vErrorCode = RETURNED_SQLSTATE;
OPEN vQueue; OPEN vQueue;
l: LOOP l: LOOP
SET vDone = FALSE; SET vDone = FALSE;
@ -32,10 +39,7 @@ BEGIN
WHERE id = vScheduleFk; WHERE id = vScheduleFk;
SET vError = NULL; SET vError = NULL;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
GET DIAGNOSTICS CONDITION 1
vError = MESSAGE_TEXT,
vErrorCode = RETURNED_SQLSTATE;
CALL util.exec(CONCAT('CALL `', vSchema ,'`.`', vProcedure ,'`')); CALL util.exec(CONCAT('CALL `', vSchema ,'`.`', vProcedure ,'`'));
@ -55,14 +59,14 @@ BEGIN
UPDATE vn_schedules UPDATE vn_schedules
SET `error` = vError, SET `error` = vError,
finished = util.VN_NOW(), finished = util.VN_NOW(),
lastFinished = util.VN_NOW() lastFinished = util.VN_NOW(),
`errorCode` = vErrorCode `errorCode` = vErrorCode,
`status` = 'error' `status` = 'error'
WHERE id = vScheduleFk; WHERE id = vScheduleFk;
ELSE ELSE
UPDATE vn_schedules UPDATE vn_schedules
SET `error` = vError, SET `error` = vError,
`errorCode` = vErrorCode `errorCode` = vErrorCode,
finished = util.VN_NOW(), finished = util.VN_NOW(),
lastFinished = util.VN_NOW(), lastFinished = util.VN_NOW(),
`status` = 'exec' `status` = 'exec'

View File

@ -9,12 +9,11 @@ BEGIN
`changedModelId` = OLD.zoneFk, `changedModelId` = OLD.zoneFk,
`userFk` = account.myUser_getId(); `userFk` = account.myUser_getId();
-- Activo el evento 'zone_getCollisions' -- Inserta en vn_schedules para ejecutar el procedure de 'zone_getCollisions'
jsegarra marked this conversation as resolved Outdated

no ponemos dos saltos de linea nunca

no ponemos dos saltos de linea nunca
-- UPDATE `mysql`.`event` SET status = 1 WHERE name = 'zone_getCollisions';
INSERT IGNORE INTO `util`.`vn_schedules`(`schema`, `procedure`) INSERT IGNORE INTO `util`.`vn_schedules`(`schema`, `procedure`)
VALUES VALUES
(`vn`, `zone_getCollisions`); ('vn', 'zone_getCollisions');
-- Insert en vn_schedules 'zone_getCollisions'
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -1,15 +1,15 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneIncluded_beforeInsert` CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneIncluded_beforeInsert`
BEFORE INSERT ON `zoneIncluded` BEFORE INSERT ON `zoneIncluded`
FOR EACH ROW
BEGIN BEGIN
SET NEW.editorFk = account.myUser_getId(); SET NEW.editorFk = account.myUser_getId();
-- Activo el evento 'zone_getCollisions' -- Inserta en vn_schedules para ejecutar el procedure de 'zone_getCollisions'
-- Insert en vn_schedulesla key 'zone_getCollisions'
-- ALTER EVENT zoneCollisions ENABLE;
INSERT IGNORE INTO `util`.`vn_schedules`(`schema`, `procedure`) INSERT IGNORE INTO `util`.`vn_schedules`(`schema`, `procedure`)
jsegarra marked this conversation as resolved Outdated

estamos generando una dependencia en util de vn.
Util no tiene que conocer vn.
Simplemente crea el schedule que se ejecute todas las noches en vn, ya està.

estamos generando una dependencia en util de vn. Util no tiene que conocer vn. Simplemente crea el schedule que se ejecute todas las noches en vn, ya està.
VALUES VALUES
(`vn`, `zone_getCollisions`); ('vn', 'zone_getCollisions');
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -5,10 +5,10 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneIncluded_beforeUp
BEGIN BEGIN
SET NEW.editorFk = account.myUser_getId(); SET NEW.editorFk = account.myUser_getId();
-- Activo el evento 'zone_getCollisions' -- Insert en vn_schedules 'zone_getCollisions' -- Inserta en vn_schedules para ejecutar el procedure de 'zone_getCollisions'
INSERT IGNORE INTO `util`.`vn_schedules`(`schema`, `procedure`) INSERT IGNORE INTO `util`.`vn_schedules`(`schema`, `procedure`)
VALUES VALUES
(`vn`, `zone_getCollisions`); ('vn', 'zone_getCollisions');
END$$ END$$
DELIMITER ; DELIMITER ;