2022-02-26 07:11:42 +01:00
|
|
|
# Pleroma: A lightweight social networking server
|
|
|
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
2020-03-21 07:47:05 +01:00
|
|
|
defmodule Pleroma.Repo.Migrations.MrfConfigMoveFromInstanceNamespace do
|
|
|
|
use Ecto.Migration
|
|
|
|
|
|
|
|
alias Pleroma.ConfigDB
|
|
|
|
|
|
|
|
@old_keys [:rewrite_policy, :mrf_transparency, :mrf_transparency_exclusions]
|
|
|
|
def change do
|
2020-06-23 19:18:27 +02:00
|
|
|
config = ConfigDB.get_by_params(%{group: :pleroma, key: :instance})
|
2020-03-21 07:47:05 +01:00
|
|
|
|
|
|
|
if config do
|
|
|
|
mrf =
|
2020-06-23 19:18:27 +02:00
|
|
|
config.value
|
2020-03-21 07:47:05 +01:00
|
|
|
|> Keyword.take(@old_keys)
|
|
|
|
|> Keyword.new(fn
|
|
|
|
{:rewrite_policy, policies} -> {:policies, policies}
|
|
|
|
{:mrf_transparency, transparency} -> {:transparency, transparency}
|
|
|
|
{:mrf_transparency_exclusions, exclusions} -> {:transparency_exclusions, exclusions}
|
|
|
|
end)
|
|
|
|
|
|
|
|
if mrf != [] do
|
|
|
|
{:ok, _} =
|
2020-06-23 19:18:27 +02:00
|
|
|
%ConfigDB{}
|
|
|
|
|> ConfigDB.changeset(%{group: :pleroma, key: :mrf, value: mrf})
|
|
|
|
|> Pleroma.Repo.insert()
|
2020-03-21 07:47:05 +01:00
|
|
|
|
2020-06-23 19:18:27 +02:00
|
|
|
new_instance = Keyword.drop(config.value, @old_keys)
|
2020-03-21 07:47:05 +01:00
|
|
|
|
|
|
|
if new_instance != [] do
|
2020-06-23 19:18:27 +02:00
|
|
|
{:ok, _} =
|
|
|
|
config
|
|
|
|
|> ConfigDB.changeset(%{value: new_instance})
|
|
|
|
|> Pleroma.Repo.update()
|
2020-03-21 07:47:05 +01:00
|
|
|
else
|
|
|
|
{:ok, _} = ConfigDB.delete(config)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|