Use ModerationLog instead of Logger
[akkoma] / lib / pleroma / config / config_db.ex
index 39b37c42e6887727cc56a1ac6a1ef8686d22de63..e5b7811aa51b27530ef020d5bcaa0813018b9798 100644 (file)
@@ -23,9 +23,9 @@ defmodule Pleroma.ConfigDB do
   ]
 
   schema "config" do
-    field(:key, Pleroma.Config.Type.Atom)
-    field(:group, Pleroma.Config.Type.Atom)
-    field(:value, Pleroma.Config.Type.BinaryValue)
+    field(:key, Pleroma.EctoType.Config.Atom)
+    field(:group, Pleroma.EctoType.Config.Atom)
+    field(:value, Pleroma.EctoType.Config.BinaryValue)
     field(:db, {:array, :string}, virtual: true, default: [])
 
     timestamps()
@@ -135,7 +135,8 @@ defmodule Pleroma.ConfigDB do
 
     with %ConfigDB{} = config <- ConfigDB.get_by_params(search_opts),
          {_, true, config} <- {:partial_update, can_be_partially_updated?(config), config},
-         {_, true, config} <- {:can_be_merged, is_list(params[:value]), config} do
+         {_, true, config} <-
+           {:can_be_merged, is_list(params[:value]) and is_list(config.value), config} do
       new_value = merge_group(config.group, config.key, config.value, params[:value])
       update(config, %{value: new_value})
     else
@@ -155,7 +156,6 @@ defmodule Pleroma.ConfigDB do
       {:quack, :meta},
       {:mime, :types},
       {:cors_plug, [:max_age, :methods, :expose, :headers]},
-      {:auto_linker, :opts},
       {:swarm, :node_blacklist},
       {:logger, :backends}
     ]
@@ -166,7 +166,9 @@ defmodule Pleroma.ConfigDB do
     end)
   end
 
-  @spec delete(map()) :: {:ok, ConfigDB.t()} | {:error, Changeset.t()}
+  @spec delete(ConfigDB.t() | map()) :: {:ok, ConfigDB.t()} | {:error, Changeset.t()}
+  def delete(%ConfigDB{} = config), do: Repo.delete(config)
+
   def delete(params) do
     search_opts = Map.delete(params, :subkeys)
 
@@ -330,7 +332,7 @@ defmodule Pleroma.ConfigDB do
   def string_to_elixir_types(":" <> atom), do: String.to_atom(atom)
 
   def string_to_elixir_types(value) do
-    if is_module_name?(value) do
+    if module_name?(value) do
       String.to_existing_atom("Elixir." <> value)
     else
       value
@@ -372,8 +374,8 @@ defmodule Pleroma.ConfigDB do
     end
   end
 
-  @spec is_module_name?(String.t()) :: boolean()
-  def is_module_name?(string) do
+  @spec module_name?(String.t()) :: boolean()
+  def module_name?(string) do
     Regex.match?(~r/^(Pleroma|Phoenix|Tesla|Quack|Ueberauth|Swoosh)\./, string) or
       string in ["Oban", "Ueberauth", "ExSyslogger"]
   end