moving mrf settings from instance to separate group
[akkoma] / priv / repo / migrations / 20200323122421_mrf_config_move_from_instance_namespace.exs
1 defmodule Pleroma.Repo.Migrations.MrfConfigMoveFromInstanceNamespace do
2 use Ecto.Migration
3
4 alias Pleroma.ConfigDB
5
6 @old_keys [:rewrite_policy, :mrf_transparency, :mrf_transparency_exclusions]
7 def change do
8 config = ConfigDB.get_by_params(%{group: ":pleroma", key: ":instance"})
9
10 if config do
11 old_instance = ConfigDB.from_binary(config.value)
12
13 mrf =
14 old_instance
15 |> Keyword.take(@old_keys)
16 |> Keyword.new(fn
17 {:rewrite_policy, policies} -> {:policies, policies}
18 {:mrf_transparency, transparency} -> {:transparency, transparency}
19 {:mrf_transparency_exclusions, exclusions} -> {:transparency_exclusions, exclusions}
20 end)
21
22 if mrf != [] do
23 {:ok, _} =
24 ConfigDB.create(
25 %{group: ":pleroma", key: ":mrf", value: ConfigDB.to_binary(mrf)},
26 false
27 )
28
29 new_instance = Keyword.drop(old_instance, @old_keys)
30
31 if new_instance != [] do
32 {:ok, _} = ConfigDB.update(config, %{value: ConfigDB.to_binary(new_instance)}, false)
33 else
34 {:ok, _} = ConfigDB.delete(config)
35 end
36 end
37 end
38 end
39 end