forked from AkkomaGang/akkoma
41 lines
1.1 KiB
Elixir
41 lines
1.1 KiB
Elixir
|
defmodule Pleroma.Repo.Migrations.SimplePolicyStringToTuple do
|
||
|
use Ecto.Migration
|
||
|
|
||
|
alias Pleroma.ConfigDB
|
||
|
|
||
|
def up, do: ConfigDB.get_by_params(%{group: :pleroma, key: :mrf_simple}) |> update_to_tuples
|
||
|
def down, do: ConfigDB.get_by_params(%{group: :pleroma, key: :mrf_simple}) |> update_to_strings
|
||
|
|
||
|
defp update_to_tuples(%{value: value}) do
|
||
|
new_value =
|
||
|
value
|
||
|
|> Enum.map(fn {k, v} ->
|
||
|
{k,
|
||
|
Enum.map(v, fn
|
||
|
{instance, reason} -> {instance, reason}
|
||
|
instance -> {instance, ""}
|
||
|
end)}
|
||
|
end)
|
||
|
|
||
|
ConfigDB.update_or_create(%{group: :pleroma, key: :mrf_simple, value: new_value})
|
||
|
end
|
||
|
|
||
|
defp update_to_tuples(nil), do: {:ok, nil}
|
||
|
|
||
|
defp update_to_strings(%{value: value}) do
|
||
|
new_value =
|
||
|
value
|
||
|
|> Enum.map(fn {k, v} ->
|
||
|
{k,
|
||
|
Enum.map(v, fn
|
||
|
{instance, _} -> instance
|
||
|
instance -> instance
|
||
|
end)}
|
||
|
end)
|
||
|
|
||
|
ConfigDB.update_or_create(%{group: :pleroma, key: :mrf_simple, value: new_value})
|
||
|
end
|
||
|
|
||
|
defp update_to_strings(nil), do: {:ok, nil}
|
||
|
end
|