DROP TRIGGER IF EXISTS post_aggregates_stickied ON post; DROP FUNCTION post_aggregates_stickied; ALTER TABLE post ADD featured_community boolean NOT NULL DEFAULT FALSE; ALTER TABLE post ADD featured_local boolean NOT NULL DEFAULT FALSE; UPDATE post SET featured_community = stickied; ALTER TABLE post DROP COLUMN stickied; ALTER TABLE post_aggregates ADD featured_community boolean NOT NULL DEFAULT FALSE; ALTER TABLE post_aggregates ADD featured_local boolean NOT NULL DEFAULT FALSE; UPDATE post_aggregates SET featured_community = stickied; ALTER TABLE post_aggregates DROP COLUMN stickied; ALTER TABLE mod_sticky_post RENAME COLUMN stickied TO featured; ALTER TABLE mod_sticky_post ALTER COLUMN featured SET NOT NULL; ALTER TABLE mod_sticky_post ADD is_featured_community boolean NOT NULL DEFAULT TRUE; ALTER TABLE mod_sticky_post RENAME TO mod_feature_post; CREATE FUNCTION post_aggregates_featured_community () RETURNS TRIGGER LANGUAGE plpgsql AS $$ BEGIN UPDATE post_aggregates pa SET featured_community = NEW.featured_community WHERE pa.post_id = NEW.id; RETURN NULL; END $$; CREATE FUNCTION post_aggregates_featured_local () RETURNS TRIGGER LANGUAGE plpgsql AS $$ BEGIN UPDATE post_aggregates pa SET featured_local = NEW.featured_local WHERE pa.post_id = NEW.id; RETURN NULL; END $$; CREATE TRIGGER post_aggregates_featured_community AFTER UPDATE ON public.post FOR EACH ROW WHEN (old.featured_community IS DISTINCT FROM new.featured_community) EXECUTE FUNCTION public.post_aggregates_featured_community (); CREATE TRIGGER post_aggregates_featured_local AFTER UPDATE ON public.post FOR EACH ROW WHEN (old.featured_local IS DISTINCT FROM new.featured_local) EXECUTE FUNCTION public.post_aggregates_featured_local ();