summaryrefslogtreecommitdiff
path: root/priv
diff options
context:
space:
mode:
authorMark Felder <feld@FreeBSD.org>2020-07-21 16:25:45 -0500
committerMark Felder <feld@FreeBSD.org>2020-07-21 16:25:45 -0500
commit97c60b6a4308b77d0e4956b83a16b88292b62e37 (patch)
treedb496d0f94e00b199be95ee285174f378f512daa /priv
parent7ce722ce3e3dbc633324ff0ccaeddc467397ac5e (diff)
parent2b5d9eb10529325aef1b4aab980bd901ba6b0c70 (diff)
downloadpleroma-97c60b6a4308b77d0e4956b83a16b88292b62e37.tar.gz
pleroma-97c60b6a4308b77d0e4956b83a16b88292b62e37.zip
Merge branch 'develop' into fix/pleroma-api-emoji-packs
Diffstat (limited to 'priv')
-rw-r--r--priv/repo/migrations/20200716195806_autolinker_to_linkify.exs37
1 files changed, 37 insertions, 0 deletions
diff --git a/priv/repo/migrations/20200716195806_autolinker_to_linkify.exs b/priv/repo/migrations/20200716195806_autolinker_to_linkify.exs
new file mode 100644
index 000000000..9ec4203eb
--- /dev/null
+++ b/priv/repo/migrations/20200716195806_autolinker_to_linkify.exs
@@ -0,0 +1,37 @@
+defmodule Pleroma.Repo.Migrations.AutolinkerToLinkify do
+ use Ecto.Migration
+
+ alias Pleroma.Repo
+ alias Pleroma.ConfigDB
+
+ @autolinker_path %{group: :auto_linker, key: :opts}
+ @linkify_path %{group: :pleroma, key: Pleroma.Formatter}
+
+ @compat_opts [:class, :rel, :new_window, :truncate, :strip_prefix, :extra]
+
+ def change do
+ with {:ok, {old, new}} <- maybe_get_params() do
+ move_config(old, new)
+ end
+ end
+
+ defp move_config(%{} = old, %{} = new) do
+ {:ok, _} = ConfigDB.update_or_create(new)
+ {:ok, _} = ConfigDB.delete(old)
+ :ok
+ end
+
+ defp maybe_get_params() do
+ with %ConfigDB{value: opts} <- ConfigDB.get_by_params(@autolinker_path),
+ %{} = opts <- transform_opts(opts),
+ %{} = linkify_params <- Map.put(@linkify_path, :value, opts) do
+ {:ok, {@autolinker_path, linkify_params}}
+ end
+ end
+
+ defp transform_opts(opts) when is_list(opts) do
+ opts
+ |> Enum.into(%{})
+ |> Map.take(@compat_opts)
+ end
+end