diff options
author | href <href+git-pleroma@random.sh> | 2019-01-22 16:10:38 +0000 |
---|---|---|
committer | href <href+git-pleroma@random.sh> | 2019-01-22 16:10:38 +0000 |
commit | b624b7a150c813722c4ffe82112c03e246fb5760 (patch) | |
tree | 218d1b0e1c7e964775b4b0360ed620adb3704812 | |
parent | 707cd9389c4cebd5318fbd43527d2d3578310149 (diff) | |
parent | 98cbeae49c2144d6e1a4bc6114295e79a23e36c2 (diff) | |
download | pleroma-b624b7a150c813722c4ffe82112c03e246fb5760.tar.gz |
Merge branch 'mr/20190122-activity-visibility-update' into 'develop'
slightly changes definition so that autovacuum works parallel safe too
Closes #540
See merge request pleroma/pleroma!697
-rw-r--r-- | priv/repo/migrations/20190122153157_update_activity_visibility.exs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/priv/repo/migrations/20190122153157_update_activity_visibility.exs b/priv/repo/migrations/20190122153157_update_activity_visibility.exs new file mode 100644 index 000000000..30075137c --- /dev/null +++ b/priv/repo/migrations/20190122153157_update_activity_visibility.exs @@ -0,0 +1,36 @@ +defmodule Pleroma.Repo.Migrations.UpdateActivityVisibility 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 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 |