Merge branch 'admin-be' into 'develop'
[akkoma] / lib / pleroma / web / admin_api / admin_api_controller.ex
index d5230f9aa5cbb7d3d2744e25c83444803908c55e..2314d32741fe0c42dbc6d979b364aa0dd103e5cd 100644 (file)
@@ -848,7 +848,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
               merged_value =
                 if !is_nil(db_value) and Keyword.keyword?(db_value) and
                      ConfigDB.sub_key_full_update?(group, key, Keyword.keys(db_value)) do
-                  ConfigDB.deep_merge(group, key, value, db_value)
+                  ConfigDB.merge_group(group, key, value, db_value)
                 else
                   value
                 end
@@ -871,26 +871,26 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
 
   def config_update(conn, %{"configs" => configs}) do
     with :ok <- configurable_from_database(conn) do
-      updated =
+      {_errors, results} =
         Enum.map(configs, fn
           %{"group" => group, "key" => key, "delete" => true} = params ->
-            with {:ok, config} <-
-                   ConfigDB.delete(%{group: group, key: key, subkeys: params["subkeys"]}) do
-              config
-            end
+            ConfigDB.delete(%{group: group, key: key, subkeys: params["subkeys"]})
 
           %{"group" => group, "key" => key, "value" => value} ->
-            with {:ok, config} <-
-                   ConfigDB.update_or_create(%{group: group, key: key, value: value}) do
-              config
-            end
+            ConfigDB.update_or_create(%{group: group, key: key, value: value})
         end)
-        |> Enum.reject(&is_nil(&1))
-        |> Enum.map(fn config ->
+        |> Enum.split_with(fn result -> elem(result, 0) == :error end)
+
+      {deleted, updated} =
+        results
+        |> Enum.map(fn {:ok, config} ->
           Map.put(config, :db, ConfigDB.get_db_keys(config))
         end)
+        |> Enum.split_with(fn config ->
+          Ecto.get_meta(config, :state) == :deleted
+        end)
 
-      Pleroma.Config.TransferTask.load_and_update_env()
+      Pleroma.Config.TransferTask.load_and_update_env(deleted)
 
       Mix.Tasks.Pleroma.Config.run([
         "migrate_from_db",