34 lines
918 B
PL/PgSQL
34 lines
918 B
PL/PgSQL
-- builds table schema
|
|
CREATE TABLE api.builds (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
vod UUID NOT NULL REFERENCES api.vods(id),
|
|
task TEXT NOT NULL,
|
|
created_at timestamp(6) without time zone,
|
|
updated_at timestamp(6) without time zone
|
|
);
|
|
|
|
-- roles & permissions for our backend automation user
|
|
GRANT all ON api.builds TO automation;
|
|
GRANT SELECT ON api.builds TO web_anon;
|
|
|
|
|
|
-- trigger function for starting the appropriate task when a new api.builds row is added
|
|
CREATE FUNCTION public.tg__add_build_job() RETURNS trigger
|
|
LANGUAGE plpgsql SECURITY DEFINER
|
|
SET search_path TO 'pg_catalog', 'public', 'pg_temp'
|
|
AS $$
|
|
begin
|
|
PERFORM graphile_worker.add_job(NEW.task, json_build_object(
|
|
'vod', NEW.vod
|
|
), max_attempts := 6);
|
|
return NEW;
|
|
end;
|
|
$$;
|
|
|
|
|
|
|
|
CREATE TRIGGER create_build
|
|
AFTER UPDATE ON api.builds
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION tg__add_build_job();
|