diff --git a/db/changes/234801/00-zoneIncluded_trigger.sql b/db/changes/234801/00-zoneIncluded_trigger.sql new file mode 100644 index 0000000000..521ca26016 --- /dev/null +++ b/db/changes/234801/00-zoneIncluded_trigger.sql @@ -0,0 +1,72 @@ +DROP TRIGGER IF EXISTS `vn`.`zoneIncluded_afterInsert`; +USE `vn`; + +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneIncluded_afterInsert` + AFTER INSERT ON `zoneIncluded` + FOR EACH ROW +BEGIN + INSERT INTO zoneLog + SET `action` = 'insert', + `changedModel` = 'zoneIncluded', + `changedModelId` = NEW.zoneFk, + `userFk` = account.myUser_getId(); + INSERT INTO zoneIncludedCheck + SET + `action`= 'insert', + `zoneFk` = NEW.zoneFk, + `geoFk` = NEW.geoFk, + `userFk` = account.myUser_getId(); + CALL `vn`.`zoneIncluded_checkCollisions`(); +END$$ +DELIMITER ; + +DROP TRIGGER IF EXISTS `vn`.`zoneIncluded_afterUpdate`; +USE `vn`; + +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneIncluded_afterUpdate` + AFTER UPDATE ON `zoneIncluded` + FOR EACH ROW +BEGIN + INSERT INTO zoneLog + SET `action` = 'update', + `changedModel` = 'zoneIncluded', + `changedModelId` = OLD.zoneFk, + `userFk` = account.myUser_getId(); + INSERT INTO zoneIncludedCheck + SET + `action`= 'update', + `zoneFk` = NEW.zoneFk, + `geoFk` = NEW.geoFk, + `userFk` = account.myUser_getId(); + + CALL `vn`.`zoneIncluded_checkCollisions`(); + + +END$$ +DELIMITER ; + +DROP TRIGGER IF EXISTS `vn`.`zoneIncluded_afterDelete`; +USE `vn`; + +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneIncluded_afterDelete` + AFTER DELETE ON `zoneIncluded` + FOR EACH ROW +BEGIN + INSERT INTO zoneLog + SET `action` = 'delete', + `changedModel` = 'zoneIncluded', + `changedModelId` = OLD.zoneFk, + `userFk` = account.myUser_getId(); + INSERT INTO zoneIncludedCheck + SET + `action`= 'delete', + `zoneFk` = OLD.zoneFk, + `geoFk` = OLD.geoFk, + `userFk` = account.myUser_getId(); + + CALL `vn`.`zoneIncluded_checkCollisions`(); +END$$ +DELIMITER ; diff --git a/db/changes/234801/01-zoneIncluded_table_zoneincludedCheck.sql b/db/changes/234801/01-zoneIncluded_table_zoneincludedCheck.sql new file mode 100644 index 0000000000..ba52f76b09 --- /dev/null +++ b/db/changes/234801/01-zoneIncluded_table_zoneincludedCheck.sql @@ -0,0 +1,14 @@ +CREATE TABLE `vn`.`zoneIncludedCheck` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `zoneFK` int(11) NOT NULL, + `geoFK` int(11) NOT NULL, + `userFK` int(10) unsigned NOT NULL, + `action`set('insert','update','delete') NOT NULL, + PRIMARY KEY (`id`), + CONSTRAINT `user_FK` FOREIGN KEY (`userFK`) REFERENCES `account`.`user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `zone_FK` FOREIGN KEY (`zoneFK`) REFERENCES `vn`.`zone` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `geo_FK` FOREIGN KEY (`geoFK`) REFERENCES `vn`.`zoneGeo` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, + UNIQUE INDEX (`zoneFK`, `geoFK`, `userFK`, `action`) +) + +comment 'Table to save temporarily zone changes'; diff --git a/db/changes/234901/02-zoneIncluded_event_checkCollisions.sql b/db/changes/234801/02-zoneIncluded_event_checkCollisions.sql similarity index 100% rename from db/changes/234901/02-zoneIncluded_event_checkCollisions.sql rename to db/changes/234801/02-zoneIncluded_event_checkCollisions.sql diff --git a/db/changes/234801/03-zoneIncluded_procedure_checkCollisions.sql b/db/changes/234801/03-zoneIncluded_procedure_checkCollisions.sql new file mode 100644 index 0000000000..84d0e363f3 --- /dev/null +++ b/db/changes/234801/03-zoneIncluded_procedure_checkCollisions.sql @@ -0,0 +1,30 @@ +-- DROP PROCEDURE IF EXISTS `vn`.`zoneIncluded_checkCollisions`; +CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zoneIncluded_checkCollisions`(IN id INT) +BEGIN +DECLARE done INT DEFAULT 0; +DECLARE zic_id, zic_zone, zic_geo, zic_action, zic_userFk INT; +DECLARE z_name VARCHAR(255); +DECLARE g_name VARCHAR(255); + +DECLARE my_cur CURSOR FOR + SELECT zic.id, z.name , zg.name , zic.geoFk ,zic.`action` , zic.userFK FROM vn.zoneIncludedCheck zic, vn.`zone` z, vn.zoneGeo zg WHERE zic.zoneFK =z.id AND zic.geoFK = zg.id ; +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +OPEN my_cur; + my_cur_loop: + LOOP FETCH my_cur INTO zic_id, z_name,g_name, zic_geo, zic_action, zic_userFk ; + IF done = 1 THEN + select concat('NO REDCORDS' ) AS '** DEBUG:'; + LEAVE my_cur_loop; + END IF; + SELECT concat('** ', zic_id, '** ',z_name, '** ',g_name,'**',zic_geo,'** ', zic_action,'** ', zic_userFk ) AS '** DEBUG:'; + DELETE FROM vn.zoneIncludedCheck WHERE id =zic_id; + SELECT util.notification_send('zone-included', + JSON_OBJECT('zoneSelected', z_name, 'geoSelected', g_name), + account.myUser_getId() + ); + END LOOP my_cur_loop; +CLOSE my_cur; + + +END diff --git a/db/changes/234901/04-remove-procedure-bs_nightTask.sql b/db/changes/234801/04-remove-procedure-bs_nightTask.sql similarity index 100% rename from db/changes/234901/04-remove-procedure-bs_nightTask.sql rename to db/changes/234801/04-remove-procedure-bs_nightTask.sql diff --git a/db/changes/234901/05-drop-procedure-zone_getCollisions.sql b/db/changes/234801/05-drop-procedure-zone_getCollisions.sql similarity index 100% rename from db/changes/234901/05-drop-procedure-zone_getCollisions.sql rename to db/changes/234801/05-drop-procedure-zone_getCollisions.sql diff --git a/db/changes/234901/00-zoneIncluded_trigger.sql b/db/changes/234901/00-zoneIncluded_trigger.sql deleted file mode 100644 index b482d17478..0000000000 --- a/db/changes/234901/00-zoneIncluded_trigger.sql +++ /dev/null @@ -1,47 +0,0 @@ -DROP TRIGGER IF EXISTS `vn`.`zoneIncluded_afterInsert`; -USE `vn`; - -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneIncluded_afterInsert` - AFTER INSERT ON `zoneIncluded` - FOR EACH ROW -BEGIN - INSERT INTO zoneLog - SET `action` = 'insert', - `changedModel` = 'zoneIncluded', - `changedModelId` = OLD.zoneFk, - `userFk` = account.myUser_getId(); -END$$ -DELIMITER ; - -DROP TRIGGER IF EXISTS `vn`.`zoneIncluded_afterUpdate`; -USE `vn`; - -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneIncluded_afterUpdate` - AFTER UPDATE ON `zoneIncluded` - FOR EACH ROW -BEGIN - INSERT INTO zoneLog - SET `action` = 'update', - `changedModel` = 'zoneIncluded', - `changedModelId` = OLD.zoneFk, - `userFk` = account.myUser_getId(); -END$$ -DELIMITER ; - --- DROP TRIGGER IF EXISTS `vn`.`zoneIncluded_afterDelete`; --- USE `vn`; - --- DELIMITER $$ --- CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneIncluded_afterDelete` --- AFTER DELETE ON `zoneIncluded` --- FOR EACH ROW --- BEGIN --- INSERT INTO zoneLog --- SET `action` = 'delete', --- `changedModel` = 'zoneIncluded', --- `changedModelId` = OLD.zoneFk, --- `userFk` = account.myUser_getId(); --- END$$ --- DELIMITER ; diff --git a/db/changes/234901/01-zoneIncluded_table_zoneincludedCheck.sql b/db/changes/234901/01-zoneIncluded_table_zoneincludedCheck.sql deleted file mode 100644 index 0fd19d4bfb..0000000000 --- a/db/changes/234901/01-zoneIncluded_table_zoneincludedCheck.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE TABLE `vn`.`zoneIncludedCheck` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `zoneFK` int(11) NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY (`inclusion_FK`,`zoneFK`), - CONSTRAINT `inclusion_FK` FOREIGN KEY (`zoneFK`) REFERENCES `zoneIncluded` (`id`) ON UPDATE CASCADE, -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; diff --git a/db/dump/03-zoneIncluded_procedure_checkCollisions.sql b/db/dump/03-zoneIncluded_procedure_checkCollisions.sql new file mode 100644 index 0000000000..540bec5ee3 --- /dev/null +++ b/db/dump/03-zoneIncluded_procedure_checkCollisions.sql @@ -0,0 +1,14 @@ +DROP PROCEDURE IF EXISTS `vn`.`zoneIncluded_checkCollisions`; + +DELIMITER $$ +$$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zoneIncluded_checkCollisions`() +BEGIN + -- DROP TEMPORARY TABLE IF EXISTS tmp.toCheck; + DECLARE vZonesToCheck INT; + DECLARE vDone INT DEFAULT FALSE; + DECLARE vZoneFk INT; + DECLARE vCounter INT; + +END$$ +DELIMITER ;