40 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			40 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
 |