diff options
Diffstat (limited to 'priv/repo/migrations')
4 files changed, 211 insertions, 0 deletions
diff --git a/priv/repo/migrations/20201005123100_simple_policy_string_to_tuple.exs b/priv/repo/migrations/20201005123100_simple_policy_string_to_tuple.exs new file mode 100644 index 000000000..77a4a7311 --- /dev/null +++ b/priv/repo/migrations/20201005123100_simple_policy_string_to_tuple.exs @@ -0,0 +1,40 @@ +defmodule Pleroma.Repo.Migrations.SimplePolicyStringToTuple do +  use Ecto.Migration + +  alias Pleroma.ConfigDB + +  def up, do: ConfigDB.get_by_params(%{group: :pleroma, key: :mrf_simple}) |> update_to_tuples +  def down, do: ConfigDB.get_by_params(%{group: :pleroma, key: :mrf_simple}) |> update_to_strings + +  defp update_to_tuples(%{value: value}) do +    new_value = +      value +      |> Enum.map(fn {k, v} -> +        {k, +         Enum.map(v, fn +           {instance, reason} -> {instance, reason} +           instance -> {instance, ""} +         end)} +      end) + +    ConfigDB.update_or_create(%{group: :pleroma, key: :mrf_simple, value: new_value}) +  end + +  defp update_to_tuples(nil), do: {:ok, nil} + +  defp update_to_strings(%{value: value}) do +    new_value = +      value +      |> Enum.map(fn {k, v} -> +        {k, +         Enum.map(v, fn +           {instance, _} -> instance +           instance -> instance +         end)} +      end) + +    ConfigDB.update_or_create(%{group: :pleroma, key: :mrf_simple, value: new_value}) +  end + +  defp update_to_strings(nil), do: {:ok, nil} +end 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..b924e4638 --- /dev/null +++ b/priv/repo/migrations/20201005124600_quarantained_policy_string_to_tuple.exs @@ -0,0 +1,61 @@ +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 diff --git a/priv/repo/migrations/20201005132900_transparency_exclusions_string_to_tuple.exs b/priv/repo/migrations/20201005132900_transparency_exclusions_string_to_tuple.exs new file mode 100644 index 000000000..6516083a7 --- /dev/null +++ b/priv/repo/migrations/20201005132900_transparency_exclusions_string_to_tuple.exs @@ -0,0 +1,61 @@ +defmodule Pleroma.Repo.Migrations.TransparencyExclusionsStringToTuple do +  use Ecto.Migration + +  alias Pleroma.ConfigDB + +  def up, +    do: +      ConfigDB.get_by_params(%{group: :pleroma, key: :mrf}) +      |> update_transparency_exclusions_instances_to_tuples + +  def down, +    do: +      ConfigDB.get_by_params(%{group: :pleroma, key: :mrf}) +      |> update_transparency_exclusions_instances_to_strings + +  defp update_transparency_exclusions_instances_to_tuples(%{value: settings}) do +    settings |> List.keyfind(:transparency_exclusions, 0) |> update_to_tuples +  end + +  defp update_transparency_exclusions_instances_to_tuples(nil), do: {:ok, nil} + +  defp update_to_tuples({:transparency_exclusions, instance_list}) do +    new_value = +      instance_list +      |> Enum.map(fn +        {v, r} -> {v, r} +        v -> {v, ""} +      end) + +    ConfigDB.update_or_create(%{ +      group: :pleroma, +      key: :mrf, +      value: [transparency_exclusions: new_value] +    }) +  end + +  defp update_to_tuples(nil), do: {:ok, nil} + +  defp update_transparency_exclusions_instances_to_strings(%{value: settings}) do +    settings |> List.keyfind(:transparency_exclusions, 0) |> update_to_strings +  end + +  defp update_transparency_exclusions_instances_to_strings(nil), do: {:ok, nil} + +  defp update_to_strings({:transparency_exclusions, instance_list}) do +    new_value = +      instance_list +      |> Enum.map(fn +        {v, _} -> v +        v -> v +      end) + +    ConfigDB.update_or_create(%{ +      group: :pleroma, +      key: :mrf, +      value: [transparency_exclusions: new_value] +    }) +  end + +  defp update_to_strings(nil), do: {:ok, nil} +end diff --git a/priv/repo/migrations/20210717000000_add_poll_to_notifications_enum.exs b/priv/repo/migrations/20210717000000_add_poll_to_notifications_enum.exs new file mode 100644 index 000000000..9abf40b3d --- /dev/null +++ b/priv/repo/migrations/20210717000000_add_poll_to_notifications_enum.exs @@ -0,0 +1,49 @@ +defmodule Pleroma.Repo.Migrations.AddPollToNotificationsEnum do +  use Ecto.Migration + +  @disable_ddl_transaction true + +  def up do +    """ +    alter type notification_type add value 'poll' +    """ +    |> execute() +  end + +  def down do +    alter table(:notifications) do +      modify(:type, :string) +    end + +    """ +    delete from notifications where type = 'poll' +    """ +    |> execute() + +    """ +    drop type if exists notification_type +    """ +    |> execute() + +    """ +    create type notification_type as enum ( +      'follow', +      'follow_request', +      'mention', +      'move', +      'pleroma:emoji_reaction', +      'pleroma:chat_mention', +      'reblog', +      'favourite', +      'pleroma:report' +    ) +    """ +    |> execute() + +    """ +    alter table notifications +    alter column type type notification_type using (type::notification_type) +    """ +    |> execute() +  end +end  | 
