@spec update_or_create(map()) :: {:ok, ConfigDB.t()} | {:error, Changeset.t()}
def update_or_create(params) do
params = Map.put(params, :value, to_elixir_types(params[:value]))
-
- search_opts =
- Map.take(params, [:group, :key]) |> Map.update!(:key, &string_to_elixir_types(&1))
+ search_opts = Map.take(params, [:group, :key])
with %ConfigDB{} = config <- ConfigDB.get_by_params(search_opts),
{_, true, config} <- {:partial_update, can_be_partially_updated?(config), config},
@spec string_to_elixir_types(String.t()) ::
atom() | Regex.t() | module() | String.t() | no_return()
- def string_to_elixir_types("~r" <> _pattern = regex) when is_binary(regex) do
+ def string_to_elixir_types("~r" <> _pattern = regex) do
pattern =
~r/^~r(?'delimiter'[\/|"'([{<]{1})(?'pattern'.+)[\/|"')\]}>]{1}(?'modifier'[uismxfU]*)/u
end
end
- def string_to_elixir_types(":" <> atom) when is_binary(atom), do: String.to_atom(atom)
+ def string_to_elixir_types(":" <> atom), do: String.to_atom(atom)
- def string_to_elixir_types(value) when is_binary(value) do
+ def string_to_elixir_types(value) do
if module_name?(value) do
String.to_existing_atom("Elixir." <> value)
else
end
end
- def string_to_elixir_types(value) when is_atom(value), do: value
-
defp parse_host("localhost"), do: :localhost
defp parse_host(host) do
]
}
- _res =
- assert conn
- |> put_req_header("content-type", "application/json")
- |> post("/api/pleroma/admin/config", %{"configs" => [params]})
- |> json_response_and_validate_schema(200)
+ assert conn
+ |> put_req_header("content-type", "application/json")
+ |> post("/api/pleroma/admin/config", %{"configs" => [params]})
+ |> json_response_and_validate_schema(200)
end
end