summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaniini <nenolod@gmail.com>2019-01-24 13:22:34 +0000
committerkaniini <nenolod@gmail.com>2019-01-24 13:22:34 +0000
commit2ebabaeb9c4ba9e53e66a971f3c89b4bec8167bb (patch)
tree56d07768f199c78a82227bfb9e194f59c727fd1b
parent0f80bc2dca3f9a6a42c3a9c20a14d714138992ed (diff)
parente02b19d1d76e713e646ddcdd2002d4e05b10b2f8 (diff)
downloadpleroma-2ebabaeb9c4ba9e53e66a971f3c89b4bec8167bb.tar.gz
pleroma-2ebabaeb9c4ba9e53e66a971f3c89b4bec8167bb.zip
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.exs37
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