summaryrefslogtreecommitdiff
path: root/priv/repo/migrations
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2020-06-04 13:28:00 +0400
committerEgor Kislitsyn <egor@kislitsyn.com>2020-06-04 13:28:00 +0400
commitb4d5bdd6f1c473280b8b9bbad96e9efecb45b298 (patch)
tree6d08f332f7bd1bc20f7bd3904987850173f90af0 /priv/repo/migrations
parent06f20e918129b1f434783b64d59b5ae6b4b4ed51 (diff)
parentd6693a91028ab3ee7865f530f3ad2532542fc2d2 (diff)
downloadpleroma-b4d5bdd6f1c473280b8b9bbad96e9efecb45b298.tar.gz
pleroma-b4d5bdd6f1c473280b8b9bbad96e9efecb45b298.zip
Merge branch 'develop' into openapi/admin/config
Diffstat (limited to 'priv/repo/migrations')
-rw-r--r--priv/repo/migrations/20200520155351_add_recipients_contain_blocked_domains_function.exs33
1 files changed, 33 insertions, 0 deletions
diff --git a/priv/repo/migrations/20200520155351_add_recipients_contain_blocked_domains_function.exs b/priv/repo/migrations/20200520155351_add_recipients_contain_blocked_domains_function.exs
new file mode 100644
index 000000000..14e873125
--- /dev/null
+++ b/priv/repo/migrations/20200520155351_add_recipients_contain_blocked_domains_function.exs
@@ -0,0 +1,33 @@
+defmodule Pleroma.Repo.Migrations.AddRecipientsContainBlockedDomainsFunction do
+ use Ecto.Migration
+ @disable_ddl_transaction true
+
+ def up do
+ statement = """
+ CREATE OR REPLACE FUNCTION recipients_contain_blocked_domains(recipients varchar[], blocked_domains varchar[]) RETURNS boolean AS $$
+ DECLARE
+ recipient_domain varchar;
+ recipient varchar;
+ BEGIN
+ FOREACH recipient IN ARRAY recipients LOOP
+ recipient_domain = split_part(recipient, '/', 3)::varchar;
+
+ IF recipient_domain = ANY(blocked_domains) THEN
+ RETURN TRUE;
+ END IF;
+ END LOOP;
+
+ RETURN FALSE;
+ END;
+ $$ LANGUAGE plpgsql;
+ """
+
+ execute(statement)
+ end
+
+ def down do
+ execute(
+ "drop function if exists recipients_contain_blocked_domains(recipients varchar[], blocked_domains varchar[])"
+ )
+ end
+end