move to 2.5.5
[anni] / priv / repo / migrations / 20200323122421_mrf_config_move_from_instance_namespace.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Repo.Migrations.MrfConfigMoveFromInstanceNamespace do
6   use Ecto.Migration
7
8   alias Pleroma.ConfigDB
9
10   @old_keys [:rewrite_policy, :mrf_transparency, :mrf_transparency_exclusions]
11   def change do
12     config = ConfigDB.get_by_params(%{group: :pleroma, key: :instance})
13
14     if config do
15       mrf =
16         config.value
17         |> Keyword.take(@old_keys)
18         |> Keyword.new(fn
19           {:rewrite_policy, policies} -> {:policies, policies}
20           {:mrf_transparency, transparency} -> {:transparency, transparency}
21           {:mrf_transparency_exclusions, exclusions} -> {:transparency_exclusions, exclusions}
22         end)
23
24       if mrf != [] do
25         {:ok, _} =
26           %ConfigDB{}
27           |> ConfigDB.changeset(%{group: :pleroma, key: :mrf, value: mrf})
28           |> Pleroma.Repo.insert()
29
30         new_instance = Keyword.drop(config.value, @old_keys)
31
32         if new_instance != [] do
33           {:ok, _} =
34             config
35             |> ConfigDB.changeset(%{value: new_instance})
36             |> Pleroma.Repo.update()
37         else
38           {:ok, _} = ConfigDB.delete(config)
39         end
40       end
41     end
42   end
43 end