summaryrefslogtreecommitdiff
path: root/priv/repo/migrations/20200806175913_rename_instance_chat.exs
diff options
context:
space:
mode:
authorHaelwenn <contact+git.pleroma.social@hacktivis.me>2021-08-08 14:37:15 +0000
committerHaelwenn <contact+git.pleroma.social@hacktivis.me>2021-08-08 14:37:15 +0000
commitdc63aaf84f07a6f8042f43617d8ec356fed85cec (patch)
tree5d12a05bce5dc1a23736fd37e7ca8c64580acd34 /priv/repo/migrations/20200806175913_rename_instance_chat.exs
parentb221d77a6da07c684bdbc63ddf4500e0d7ffeae8 (diff)
parent0910777d41f8b4b3096c35c5fc97fc357e5d8c8c (diff)
Merge branch 'release/2.4.0' into 'stable'v2.4.0
Release/2.4.0 See merge request pleroma/pleroma!3493
Diffstat (limited to 'priv/repo/migrations/20200806175913_rename_instance_chat.exs')
-rw-r--r--priv/repo/migrations/20200806175913_rename_instance_chat.exs77
1 files changed, 77 insertions, 0 deletions
diff --git a/priv/repo/migrations/20200806175913_rename_instance_chat.exs b/priv/repo/migrations/20200806175913_rename_instance_chat.exs
new file mode 100644
index 000000000..31585efe8
--- /dev/null
+++ b/priv/repo/migrations/20200806175913_rename_instance_chat.exs
@@ -0,0 +1,77 @@
+defmodule Pleroma.Repo.Migrations.RenameInstanceChat do
+ use Ecto.Migration
+
+ alias Pleroma.ConfigDB
+
+ @instance_params %{group: :pleroma, key: :instance}
+ @shout_params %{group: :pleroma, key: :shout}
+ @chat_params %{group: :pleroma, key: :chat}
+
+ def up do
+ instance_updated? = maybe_update_instance_key(:up) != :noop
+ chat_updated? = maybe_update_chat_key(:up) != :noop
+
+ case Enum.any?([instance_updated?, chat_updated?]) do
+ true -> :ok
+ false -> :noop
+ end
+ end
+
+ def down do
+ instance_updated? = maybe_update_instance_key(:down) != :noop
+ chat_updated? = maybe_update_chat_key(:down) != :noop
+
+ case Enum.any?([instance_updated?, chat_updated?]) do
+ true -> :ok
+ false -> :noop
+ end
+ end
+
+ # pleroma.instance.chat_limit -> pleroma.shout.limit
+ defp maybe_update_instance_key(:up) do
+ with %ConfigDB{value: values} <- ConfigDB.get_by_params(@instance_params),
+ limit when is_integer(limit) <- values[:chat_limit] do
+ @shout_params |> Map.put(:value, limit: limit) |> ConfigDB.update_or_create()
+ @instance_params |> Map.put(:subkeys, [":chat_limit"]) |> ConfigDB.delete()
+ else
+ _ ->
+ :noop
+ end
+ end
+
+ # pleroma.shout.limit -> pleroma.instance.chat_limit
+ defp maybe_update_instance_key(:down) do
+ with %ConfigDB{value: values} <- ConfigDB.get_by_params(@shout_params),
+ limit when is_integer(limit) <- values[:limit] do
+ @instance_params |> Map.put(:value, chat_limit: limit) |> ConfigDB.update_or_create()
+ @shout_params |> Map.put(:subkeys, [":limit"]) |> ConfigDB.delete()
+ else
+ _ ->
+ :noop
+ end
+ end
+
+ # pleroma.chat.enabled -> pleroma.shout.enabled
+ defp maybe_update_chat_key(:up) do
+ with %ConfigDB{value: values} <- ConfigDB.get_by_params(@chat_params),
+ enabled? when is_boolean(enabled?) <- values[:enabled] do
+ @shout_params |> Map.put(:value, enabled: enabled?) |> ConfigDB.update_or_create()
+ @chat_params |> Map.put(:subkeys, [":enabled"]) |> ConfigDB.delete()
+ else
+ _ ->
+ :noop
+ end
+ end
+
+ # pleroma.shout.enabled -> pleroma.chat.enabled
+ defp maybe_update_chat_key(:down) do
+ with %ConfigDB{value: values} <- ConfigDB.get_by_params(@shout_params),
+ enabled? when is_boolean(enabled?) <- values[:enabled] do
+ @chat_params |> Map.put(:value, enabled: enabled?) |> ConfigDB.update_or_create()
+ @shout_params |> Map.put(:subkeys, [":enabled"]) |> ConfigDB.delete()
+ else
+ _ ->
+ :noop
+ end
+ end
+end