mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-12-23 00:26:30 +00:00
Migrate :auto_linker --> Pleroma.Formatter in ConfigDB
This commit is contained in:
parent
880301985b
commit
613e096389
1 changed files with 37 additions and 0 deletions
|
@ -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
|
Loading…
Reference in a new issue