diff options
| author | Egor Kislitsyn <egor@kislitsyn.com> | 2020-06-04 13:28:00 +0400 |
|---|---|---|
| committer | Egor Kislitsyn <egor@kislitsyn.com> | 2020-06-04 13:28:00 +0400 |
| commit | b4d5bdd6f1c473280b8b9bbad96e9efecb45b298 (patch) | |
| tree | 6d08f332f7bd1bc20f7bd3904987850173f90af0 /priv/repo/migrations | |
| parent | 06f20e918129b1f434783b64d59b5ae6b4b4ed51 (diff) | |
| parent | d6693a91028ab3ee7865f530f3ad2532542fc2d2 (diff) | |
| download | pleroma-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.exs | 33 |
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 |
