Commit 9311712a authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Added trigger to update job start/end time on phase update

parent 2849c8ed
Loading
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -69,3 +69,24 @@ SELECT '/' || string_agg(name, '/') FROM (
    ) SELECT name FROM paths ORDER BY LEVEL DESC
) AS names
$func$ LANGUAGE sql;

-- Trigger function that automatically updates start time and end time of jobs at phase update.
-- This could be performed by business logic of each application that handles jobs but relying directly on the database ensures a better uniformity.

CREATE OR REPLACE FUNCTION job_phase_updated() RETURNS TRIGGER 
AS 
$func$
BEGIN
    IF new.phase = 'EXECUTING' THEN
        new.start_time := NOW();
    ELSIF new.phase = 'COMPLETED' OR new.phase = 'ERROR' OR new.phase = 'ABORTED' THEN
        new.end_time := NOW();
    END IF;
    RETURN new;
END;
$func$ LANGUAGE plpgsql;

CREATE TRIGGER job_update
    BEFORE UPDATE OF phase ON job
    FOR EACH ROW
    EXECUTE PROCEDURE job_phase_updated();