{config, sub_keys} when is_list(sub_keys) <- {config, params[:subkeys]},
old_value <- from_binary(config.value),
keys <- Enum.map(sub_keys, &do_transform_string(&1)),
- new_value <- Keyword.drop(old_value, keys) do
+ {:partial_remove, config, new_value} when new_value != [] <-
+ {:partial_remove, config, Keyword.drop(old_value, keys)} do
ConfigDB.update(config, %{value: new_value})
else
+ {:partial_remove, config, []} ->
+ Repo.delete(config)
+ {:ok, nil}
+
{config, nil} ->
Repo.delete(config)
{:ok, nil}
Enum.map(values, fn {key, value} ->
db =
if configs[group][key] do
- ConfigDB.get_db_keys(value, key)
+ ConfigDB.get_db_keys(configs[group][key], key)
end
db_value = configs[group][key]
assert key2 == config2.key
end
+ test "db is added to settings that are in db", %{conn: conn} do
+ _config = insert(:config, key: ":instance", value: ConfigDB.to_binary(name: "Some name"))
+
+ %{"configs" => configs} =
+ conn
+ |> get("/api/pleroma/admin/config")
+ |> json_response(200)
+
+ [instance_config] =
+ Enum.filter(configs, fn %{"group" => group, "key" => key} ->
+ group == ":pleroma" and key == ":instance"
+ end)
+
+ assert instance_config["db"] == [":name"]
+ end
+
test "merged default setting with db settings", %{conn: conn} do
config1 = insert(:config)
config2 = insert(:config)