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 FOR EACH ROW
BEGIN BEGIN
DECLARE vMaxEta DATETIME; DECLARE vMaxEta DATETIME;
DECLARE vRoadmapEta DATETIME;
IF OLD.roadmapFk IS NOT NULL THEN IF OLD.roadmapFk IS NOT NULL THEN
SELECT MAX(eta) INTO vMaxEta SELECT MAX(eta) INTO vMaxEta
FROM roadmapStop FROM roadmapStop
WHERE roadmapFk = OLD.roadmapFk WHERE roadmapFk = OLD.roadmapFk
AND id <> OLD.id; 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 UPDATE roadmap
SET eta = COALESCE(vMaxEta, OLD.eta) SET eta = vMaxEta
WHERE id = OLD.roadmapFk; WHERE id = OLD.roadmapFk;
END IF; END IF;
END IF; END IF;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

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

View File

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