diff options
Diffstat (limited to 'priv/repo')
| -rw-r--r-- | priv/repo/migrations/20200802170532_fix_legacy_tags.exs | 37 | 
1 files changed, 37 insertions, 0 deletions
| diff --git a/priv/repo/migrations/20200802170532_fix_legacy_tags.exs b/priv/repo/migrations/20200802170532_fix_legacy_tags.exs new file mode 100644 index 000000000..f7274b44e --- /dev/null +++ b/priv/repo/migrations/20200802170532_fix_legacy_tags.exs @@ -0,0 +1,37 @@ +# Fix legacy tags set by AdminFE that don't align with TagPolicy MRF + +defmodule Pleroma.Repo.Migrations.FixLegacyTags do +  use Ecto.Migration +  alias Pleroma.Repo +  alias Pleroma.User +  import Ecto.Query + +  @old_new_map %{ +    "force_nsfw" => "mrf_tag:media-force-nsfw", +    "strip_media" => "mrf_tag:media-strip", +    "force_unlisted" => "mrf_tag:force-unlisted", +    "sandbox" => "mrf_tag:sandbox", +    "disable_remote_subscription" => "mrf_tag:disable-remote-subscription", +    "disable_any_subscription" => "mrf_tag:disable-any-subscription" +  } + +  def change do +    legacy_tags = Map.keys(@old_new_map) + +    from(u in User, where: fragment("? && ?", u.tags, ^legacy_tags)) +    |> Repo.all() +    |> Enum.each(fn user -> +      fix_tags_changeset(user) +      |> Repo.update() +    end) +  end + +  defp fix_tags_changeset(%User{tags: tags} = user) do +    new_tags = +      Enum.map(tags, fn tag -> +        Map.get(@old_new_map, tag, tag) +      end) + +    Ecto.Changeset.change(user, tags: new_tags) +  end +end | 
