diff options
author | kaniini <nenolod@gmail.com> | 2019-01-24 13:22:34 +0000 |
---|---|---|
committer | kaniini <nenolod@gmail.com> | 2019-01-24 13:22:34 +0000 |
commit | 2ebabaeb9c4ba9e53e66a971f3c89b4bec8167bb (patch) | |
tree | 56d07768f199c78a82227bfb9e194f59c727fd1b | |
parent | 0f80bc2dca3f9a6a42c3a9c20a14d714138992ed (diff) | |
parent | e02b19d1d76e713e646ddcdd2002d4e05b10b2f8 (diff) | |
download | pleroma-2ebabaeb9c4ba9e53e66a971f3c89b4bec8167bb.tar.gz |
Merge branch 'fix-activity_visibility-autovacuum' into 'develop'
Fix postgres activity_visibility when running in autovacuum
See merge request pleroma/pleroma!708
-rw-r--r-- | priv/repo/migrations/20190124131141_update_activity_visibility_again.exs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/priv/repo/migrations/20190124131141_update_activity_visibility_again.exs b/priv/repo/migrations/20190124131141_update_activity_visibility_again.exs new file mode 100644 index 000000000..0519a5143 --- /dev/null +++ b/priv/repo/migrations/20190124131141_update_activity_visibility_again.exs @@ -0,0 +1,37 @@ +defmodule Pleroma.Repo.Migrations.UpdateActivityVisibilityAgain do + use Ecto.Migration + @disable_ddl_transaction true + + def up do + definition = """ + create or replace function activity_visibility(actor varchar, recipients varchar[], data jsonb) returns varchar as $$ + DECLARE + fa varchar; + public varchar := 'https://www.w3.org/ns/activitystreams#Public'; + BEGIN + SELECT COALESCE(users.follower_address, '') into fa from public.users where users.ap_id = actor; + + IF data->'to' ? public THEN + RETURN 'public'; + ELSIF data->'cc' ? public THEN + RETURN 'unlisted'; + ELSIF ARRAY[fa] && recipients THEN + RETURN 'private'; + ELSIF not(ARRAY[fa, public] && recipients) THEN + RETURN 'direct'; + ELSE + RETURN 'unknown'; + END IF; + END; + $$ LANGUAGE plpgsql IMMUTABLE PARALLEL SAFE SECURITY DEFINER; + """ + + execute(definition) + + end + + def down do + + end + +end |