28 lines
779 B
PL/PgSQL
28 lines
779 B
PL/PgSQL
-- Deploy guix-data-service:create_latest_build_status to pg
|
|
|
|
BEGIN;
|
|
|
|
CREATE TABLE latest_build_status (
|
|
build_id integer PRIMARY KEY NOT NULL REFERENCES builds(id),
|
|
"timestamp" timestamp without time zone DEFAULT clock_timestamp(),
|
|
status guix_data_service.buildstatus NOT NULL
|
|
);
|
|
|
|
INSERT INTO latest_build_status
|
|
SELECT DISTINCT build_id,
|
|
first_value(timestamp) OVER rows_for_build AS timestamp,
|
|
first_value(status) OVER rows_for_build AS status
|
|
FROM build_status
|
|
WINDOW rows_for_build AS (
|
|
PARTITION BY build_id
|
|
ORDER BY
|
|
timestamp DESC,
|
|
CASE WHEN status = 'scheduled' THEN -2
|
|
WHEN status = 'started' THEN -1
|
|
ELSE 0
|
|
END DESC
|
|
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
|
|
);
|
|
|
|
COMMIT;
|