From 5256678901f0c6558b505eedbf861a1d423d5ab9 Mon Sep 17 00:00:00 2001 From: Oneric Date: Sat, 27 Apr 2024 19:07:31 +0200 Subject: [PATCH] Fix Exiftool migration id MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Applying works fine with a 20220220135625 version, but it won’t be rolled back in the right order. Fortunately this action is idempotent so we can just rename and reapply it with a new id. To also not break large-scale rollbacks past 2022 for anyone who already applied it with the old id, keep a stub migration. --- ...er_exiftool_to_exiftool_strip_location.exs | 39 +++---------------- ...iftool_to_exiftool_strip_location_real.exs | 37 ++++++++++++++++++ 2 files changed, 43 insertions(+), 33 deletions(-) create mode 100644 priv/repo/migrations/20240425120000_upload_filter_exiftool_to_exiftool_strip_location_real.exs diff --git a/priv/repo/migrations/20220220135625_upload_filter_exiftool_to_exiftool_strip_location.exs b/priv/repo/migrations/20220220135625_upload_filter_exiftool_to_exiftool_strip_location.exs index 0d68a0787..86e02df01 100644 --- a/priv/repo/migrations/20220220135625_upload_filter_exiftool_to_exiftool_strip_location.exs +++ b/priv/repo/migrations/20220220135625_upload_filter_exiftool_to_exiftool_strip_location.exs @@ -1,37 +1,10 @@ defmodule Pleroma.Repo.Migrations.UploadFilterExiftoolToExiftoolStripMetadata do use Ecto.Migration - alias Pleroma.ConfigDB - - def up, - do: - ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.Upload}) - |> update_filtername( - Pleroma.Upload.Filter.Exiftool, - Pleroma.Upload.Filter.Exiftool.StripMetadata - ) - - def down, - do: - ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.Upload}) - |> update_filtername( - Pleroma.Upload.Filter.Exiftool.StripMetadata, - Pleroma.Upload.Filter.Exiftool - ) - - defp update_filtername(%{value: value}, from_filtername, to_filtername) do - new_value = - value - |> Keyword.update(:filters, [], fn filters -> - filters - |> Enum.map(fn - ^from_filtername -> to_filtername - filter -> filter - end) - end) - - ConfigDB.update_or_create(%{group: :pleroma, key: Pleroma.Upload, value: new_value}) - end - - defp update_filtername(_, _, _), do: nil + # 20240425120000_upload_filter_exiftool_to_exiftool_strip_location.exs + # was originally committed with the id used in this file, but this breaks + # rollback order. Thus it was moved to 20240425120000 and this stub just prevents + # errors during large-scale rollbacks for anyone who already applied the old id + def up, do: :ok + def down, do: :ok end diff --git a/priv/repo/migrations/20240425120000_upload_filter_exiftool_to_exiftool_strip_location_real.exs b/priv/repo/migrations/20240425120000_upload_filter_exiftool_to_exiftool_strip_location_real.exs new file mode 100644 index 000000000..5d2b880db --- /dev/null +++ b/priv/repo/migrations/20240425120000_upload_filter_exiftool_to_exiftool_strip_location_real.exs @@ -0,0 +1,37 @@ +defmodule Pleroma.Repo.Migrations.UploadFilterExiftoolToExiftoolStripMetadataReal do + use Ecto.Migration + + alias Pleroma.ConfigDB + + def up, + do: + ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.Upload}) + |> update_filtername( + Pleroma.Upload.Filter.Exiftool, + Pleroma.Upload.Filter.Exiftool.StripMetadata + ) + + def down, + do: + ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.Upload}) + |> update_filtername( + Pleroma.Upload.Filter.Exiftool.StripMetadata, + Pleroma.Upload.Filter.Exiftool + ) + + defp update_filtername(%{value: value}, from_filtername, to_filtername) do + new_value = + value + |> Keyword.update(:filters, [], fn filters -> + filters + |> Enum.map(fn + ^from_filtername -> to_filtername + filter -> filter + end) + end) + + ConfigDB.update_or_create(%{group: :pleroma, key: Pleroma.Upload, value: new_value}) + end + + defp update_filtername(_, _, _), do: nil +end