diff options
| author | Michael Loftis <mloftis@wgops.com> | 2019-01-22 15:35:21 +0000 | 
|---|---|---|
| committer | Michael Loftis <mloftis@wgops.com> | 2019-01-22 15:35:21 +0000 | 
| commit | 98cbeae49c2144d6e1a4bc6114295e79a23e36c2 (patch) | |
| tree | 218d1b0e1c7e964775b4b0360ed620adb3704812 /priv/repo/migrations | |
| parent | 707cd9389c4cebd5318fbd43527d2d3578310149 (diff) | |
| download | pleroma-98cbeae49c2144d6e1a4bc6114295e79a23e36c2.tar.gz pleroma-98cbeae49c2144d6e1a4bc6114295e79a23e36c2.zip | |
slightly changes definition so that autovacuum works paralell safe too
Diffstat (limited to 'priv/repo/migrations')
| -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 | 
