diff options
author | Alex Gleason <alex@alexgleason.me> | 2021-07-14 09:02:55 -0500 |
---|---|---|
committer | Alex Gleason <alex@alexgleason.me> | 2021-07-14 09:02:55 -0500 |
commit | 1a2fe96d56350dc685eb53112630af567de8d5bd (patch) | |
tree | 31f5c24d81ab1a226776158d4bb1a62ef72c8834 /priv/repo/migrations/20200806175913_rename_instance_chat.exs | |
parent | 167e14416bec2846d3282a121cfcfd147a04a8bf (diff) | |
parent | 173e977e283789a814278c63bc81f40a13942e21 (diff) | |
download | pleroma-1a2fe96d56350dc685eb53112630af567de8d5bd.tar.gz pleroma-1a2fe96d56350dc685eb53112630af567de8d5bd.zip |
Merge remote-tracking branch 'pleroma/develop' into admin-api-users-date
Diffstat (limited to 'priv/repo/migrations/20200806175913_rename_instance_chat.exs')
-rw-r--r-- | priv/repo/migrations/20200806175913_rename_instance_chat.exs | 77 |
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 |