summaryrefslogtreecommitdiff
path: root/priv/repo/migrations/20201005124600_quarantained_policy_string_to_tuple.exs
diff options
context:
space:
mode:
authorLain Soykaf <lain@lain.com>2024-05-27 17:49:31 +0400
committerLain Soykaf <lain@lain.com>2024-05-27 17:49:31 +0400
commit4325b1aec34734d8efbc7701d6bfdcf157e7cb0d (patch)
tree7995ee0c521da831709f1198ca7154fad0885306 /priv/repo/migrations/20201005124600_quarantained_policy_string_to_tuple.exs
parent3a03d9b65f96099e7c7a831469532c2cec7294c6 (diff)
parent6757382abec9ca47a9025b8bed61047414cee20f (diff)
downloadpleroma-4325b1aec34734d8efbc7701d6bfdcf157e7cb0d.tar.gz
pleroma-4325b1aec34734d8efbc7701d6bfdcf157e7cb0d.zip
Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into nsfw-api-mrf
Diffstat (limited to 'priv/repo/migrations/20201005124600_quarantained_policy_string_to_tuple.exs')
-rw-r--r--priv/repo/migrations/20201005124600_quarantained_policy_string_to_tuple.exs65
1 files changed, 65 insertions, 0 deletions
diff --git a/priv/repo/migrations/20201005124600_quarantained_policy_string_to_tuple.exs b/priv/repo/migrations/20201005124600_quarantained_policy_string_to_tuple.exs
new file mode 100644
index 000000000..9478227bc
--- /dev/null
+++ b/priv/repo/migrations/20201005124600_quarantained_policy_string_to_tuple.exs
@@ -0,0 +1,65 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Repo.Migrations.QuarantainedStringToTuple do
+ use Ecto.Migration
+
+ alias Pleroma.ConfigDB
+
+ def up,
+ do:
+ ConfigDB.get_by_params(%{group: :pleroma, key: :instance})
+ |> update_quarantined_instances_to_tuples
+
+ def down,
+ do:
+ ConfigDB.get_by_params(%{group: :pleroma, key: :instance})
+ |> update_quarantined_instances_to_strings
+
+ defp update_quarantined_instances_to_tuples(%{value: settings}) do
+ settings |> List.keyfind(:quarantined_instances, 0) |> update_to_tuples
+ end
+
+ defp update_quarantined_instances_to_tuples(nil), do: {:ok, nil}
+
+ defp update_to_tuples({:quarantined_instances, instance_list}) do
+ new_value =
+ instance_list
+ |> Enum.map(fn
+ {v, r} -> {v, r}
+ v -> {v, ""}
+ end)
+
+ ConfigDB.update_or_create(%{
+ group: :pleroma,
+ key: :instance,
+ value: [quarantined_instances: new_value]
+ })
+ end
+
+ defp update_to_tuples(nil), do: {:ok, nil}
+
+ defp update_quarantined_instances_to_strings(%{value: settings}) do
+ settings |> List.keyfind(:quarantined_instances, 0) |> update_to_strings
+ end
+
+ defp update_quarantined_instances_to_strings(nil), do: {:ok, nil}
+
+ defp update_to_strings({:quarantined_instances, instance_list}) do
+ new_value =
+ instance_list
+ |> Enum.map(fn
+ {v, _} -> v
+ v -> v
+ end)
+
+ ConfigDB.update_or_create(%{
+ group: :pleroma,
+ key: :instance,
+ value: [quarantined_instances: new_value]
+ })
+ end
+
+ defp update_to_strings(nil), do: {:ok, nil}
+end