""" This didnt exist in yoyo migrations but we had it in production, mock this migration in production """ from yoyo import step __depends__ = {"20210118_01_1Jlkq-add-unique-constraint-to-service-and-post-fields"} steps = [ step( """ CREATE TABLE IF NOT EXISTS public.posts_added_max ( "user" varchar NOT NULL, service varchar NOT NULL, added timestamp NOT NULL, CONSTRAINT posts_added_max_pkey PRIMARY KEY ("user", service) ); """ ), step( """ CREATE OR REPLACE FUNCTION public.posts_added_max() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN INSERT INTO posts_added_max AS pam ("user", service, added) SELECT "user", service, max(added) AS added FROM posts WHERE posts.service = NEW.service AND posts."user" = NEW."user" GROUP BY "user", service ON CONFLICT (service, "user") DO UPDATE SET added = EXCLUDED.added WHERE EXCLUDED.added > pam.added; RETURN NULL; END; $$; """ ), step( "CREATE TRIGGER posts_added_max AFTER INSERT OR UPDATE ON public.posts FOR EACH ROW EXECUTE FUNCTION public.posts_added_max();" ), ]