diff options
Diffstat (limited to 'priv')
| -rw-r--r-- | priv/repo/migrations/20200806175913_rename_instance_chat.exs | 77 | ||||
| -rw-r--r-- | priv/repo/migrations/20210420204354_delete_hashtags_objects_cascade.exs | 19 | 
2 files changed, 96 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 diff --git a/priv/repo/migrations/20210420204354_delete_hashtags_objects_cascade.exs b/priv/repo/migrations/20210420204354_delete_hashtags_objects_cascade.exs new file mode 100644 index 000000000..f4ebf53d6 --- /dev/null +++ b/priv/repo/migrations/20210420204354_delete_hashtags_objects_cascade.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.DeleteHashtagsObjectsCascade do +  use Ecto.Migration + +  def up do +    execute("ALTER TABLE hashtags_objects DROP CONSTRAINT hashtags_objects_object_id_fkey") + +    alter table(:hashtags_objects) do +      modify(:object_id, references(:objects, on_delete: :delete_all)) +    end +  end + +  def down do +    execute("ALTER TABLE hashtags_objects DROP CONSTRAINT hashtags_objects_object_id_fkey") + +    alter table(:hashtags_objects) do +      modify(:object_id, references(:objects, on_delete: :nothing)) +    end +  end +end | 
