feat: refs #8227 Roadmap changes
gitea/salix/pipeline/pr-dev There was a failure building this commit Details

This commit is contained in:
Guillermo Bonet 2025-01-31 10:57:44 +01:00
parent 855600811e
commit b40f145613
3 changed files with 29 additions and 14 deletions

View File

@ -4,18 +4,23 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmapStop_beforeDelet
FOR EACH ROW
BEGIN
DECLARE vMaxEta DATETIME;
DECLARE vRoadmapEta DATETIME;
IF OLD.roadmapFk IS NOT NULL THEN
SELECT MAX(eta) INTO vMaxEta
SELECT MAX(eta) INTO vMaxEta
FROM roadmapStop
WHERE roadmapFk = OLD.roadmapFk
AND id <> OLD.id;
IF OLD.eta > vMaxEta OR vMaxEta IS NULL THEN
SELECT eta INTO vRoadmapEta
FROM roadmap
WHERE id = OLD.roadmapFk;
IF vMaxEta <> vRoadmapEta OR vMaxEta IS NULL THEN
UPDATE roadmap
SET eta = COALESCE(vMaxEta, OLD.eta)
SET eta = vMaxEta
WHERE id = OLD.roadmapFk;
END IF;
END IF;
END$$
DELIMITER ;
DELIMITER ;

View File

@ -3,7 +3,7 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmapStop_beforeInser
BEFORE INSERT ON `roadmapStop`
FOR EACH ROW
BEGIN
DECLARE vMaxEta DATETIME;
DECLARE vRoadmapEta DATETIME;
SET NEW.editorFk = account.myUser_getId();
@ -18,13 +18,13 @@ BEGIN
END IF;
IF NEW.roadmapFk IS NOT NULL AND NEW.eta IS NOT NULL THEN
SELECT MAX(eta) INTO vMaxEta
FROM roadmapStop
WHERE roadmapFk = NEW.roadmapFk;
SELECT eta INTO vRoadmapEta
FROM roadmap
WHERE id = NEW.roadmapFk;
IF NEW.eta > vMaxEta OR vMaxEta IS NOT NULL THEN
IF vRoadmapEta < NEW.eta OR vRoadmapEta IS NULL THEN
UPDATE roadmap
SET eta = GREATEST(COALESCE(vMaxEta, NEW.eta), NEW.eta)
SET eta = NEW.eta
WHERE id = NEW.roadmapFk;
END IF;
END IF;

View File

@ -4,6 +4,7 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmapStop_beforeUpdat
FOR EACH ROW
BEGIN
DECLARE vMaxEta DATETIME;
DECLARE vCurrentEta DATETIME;
SET NEW.editorFk = account.myUser_getId();
@ -18,13 +19,22 @@ BEGIN
CALL util.throw('Departure time can not be after arrival time');
END IF;
SELECT MAX(eta) INTO vMaxEta
SELECT MAX(eta) INTO vMaxEta
FROM roadmapStop
WHERE roadmapFk = NEW.roadmapFk;
WHERE roadmapFk = NEW.roadmapFk
AND id <> OLD.id;
IF NEW.eta > vMaxEta OR vMaxEta IS NULL THEN
IF vMaxEta IS NULL OR NEW.eta > vMaxEta THEN
SET vMaxEta = NEW.eta;
END IF;
SELECT eta INTO vCurrentEta
FROM roadmap
WHERE id = NEW.roadmapFk;
IF vMaxEta <> vCurrentEta THEN
UPDATE roadmap
SET eta = COALESCE(vMaxEta, NEW.eta)
SET eta = vMaxEta
WHERE id = NEW.roadmapFk;
END IF;
END IF;