diff --git a/migrations/2021-02-13-210612_set_correct_aggregates_time_columns/down.sql b/migrations/2021-02-13-210612_set_correct_aggregates_time_columns/down.sql new file mode 100644 index 0000000000..227c3ec220 --- /dev/null +++ b/migrations/2021-02-13-210612_set_correct_aggregates_time_columns/down.sql @@ -0,0 +1,35 @@ +create or replace function comment_aggregates_comment() +returns trigger language plpgsql +as $$ +begin + IF (TG_OP = 'INSERT') THEN + insert into comment_aggregates (comment_id) values (NEW.id); + ELSIF (TG_OP = 'DELETE') THEN + delete from comment_aggregates where comment_id = OLD.id; + END IF; + return null; +end $$; + +create or replace function post_aggregates_post() +returns trigger language plpgsql +as $$ +begin + IF (TG_OP = 'INSERT') THEN + insert into post_aggregates (post_id) values (NEW.id); + ELSIF (TG_OP = 'DELETE') THEN + delete from post_aggregates where post_id = OLD.id; + END IF; + return null; +end $$; + +create or replace function community_aggregates_community() +returns trigger language plpgsql +as $$ +begin + IF (TG_OP = 'INSERT') THEN + insert into community_aggregates (community_id) values (NEW.id); + ELSIF (TG_OP = 'DELETE') THEN + delete from community_aggregates where community_id = OLD.id; + END IF; + return null; +end $$; diff --git a/migrations/2021-02-13-210612_set_correct_aggregates_time_columns/up.sql b/migrations/2021-02-13-210612_set_correct_aggregates_time_columns/up.sql new file mode 100644 index 0000000000..c195daad4d --- /dev/null +++ b/migrations/2021-02-13-210612_set_correct_aggregates_time_columns/up.sql @@ -0,0 +1,39 @@ +-- The published and updated columns on the aggregates tables are using now(), +-- when they should use the correct published or updated columns +-- This is mainly a problem with federated posts being fetched + +create or replace function comment_aggregates_comment() +returns trigger language plpgsql +as $$ +begin + IF (TG_OP = 'INSERT') THEN + insert into comment_aggregates (comment_id, published) values (NEW.id, NEW.published); + ELSIF (TG_OP = 'DELETE') THEN + delete from comment_aggregates where comment_id = OLD.id; + END IF; + return null; +end $$; + +create or replace function post_aggregates_post() +returns trigger language plpgsql +as $$ +begin + IF (TG_OP = 'INSERT') THEN + insert into post_aggregates (post_id, published, newest_comment_time, newest_comment_time_necro) values (NEW.id, NEW.published, NEW.published, NEW.published); + ELSIF (TG_OP = 'DELETE') THEN + delete from post_aggregates where post_id = OLD.id; + END IF; + return null; +end $$; + +create or replace function community_aggregates_community() +returns trigger language plpgsql +as $$ +begin + IF (TG_OP = 'INSERT') THEN + insert into community_aggregates (community_id, published) values (NEW.id, NEW.published); + ELSIF (TG_OP = 'DELETE') THEN + delete from community_aggregates where community_id = OLD.id; + END IF; + return null; +end $$;