Merge branch 'develop' into activation-meta
[akkoma] / priv / repo / migrations / 20200520155351_add_recipients_contain_blocked_domains_function.exs
1 defmodule Pleroma.Repo.Migrations.AddRecipientsContainBlockedDomainsFunction do
2 use Ecto.Migration
3 @disable_ddl_transaction true
4
5 def up do
6 statement = """
7 CREATE OR REPLACE FUNCTION recipients_contain_blocked_domains(recipients varchar[], blocked_domains varchar[]) RETURNS boolean AS $$
8 DECLARE
9 recipient_domain varchar;
10 recipient varchar;
11 BEGIN
12 FOREACH recipient IN ARRAY recipients LOOP
13 recipient_domain = split_part(recipient, '/', 3)::varchar;
14
15 IF recipient_domain = ANY(blocked_domains) THEN
16 RETURN TRUE;
17 END IF;
18 END LOOP;
19
20 RETURN FALSE;
21 END;
22 $$ LANGUAGE plpgsql;
23 """
24
25 execute(statement)
26 end
27
28 def down do
29 execute(
30 "drop function if exists recipients_contain_blocked_domains(recipients varchar[], blocked_domains varchar[])"
31 )
32 end
33 end