end
end
- def config_show(conn, _params) do
+ def config_show(conn, %{"only_db" => true}) do
with :ok <- configurable_from_database(conn) do
configs = Pleroma.Repo.all(ConfigDB)
end
end
+ def config_show(conn, _params) do
+ with :ok <- configurable_from_database(conn) do
+ configs = ConfigDB.get_all_as_keyword()
+
+ if configs == [] do
+ errors(
+ conn,
+ {:error, "To use configuration from database migrate your settings to database."}
+ )
+ else
+ merged =
+ Pleroma.Config.Holder.config()
+ |> DeepMerge.deep_merge(configs)
+ |> Enum.map(fn {group, values} ->
+ Enum.map(values, fn {key, value} ->
+ db =
+ if configs[group][key] do
+ ConfigDB.get_db_keys(value, key)
+ end
+
+ setting = %{
+ group: ConfigDB.convert(group),
+ key: ConfigDB.convert(key),
+ value: ConfigDB.convert(value)
+ }
+
+ if db, do: Map.put(setting, :db, db), else: setting
+ end)
+ end)
+ |> List.flatten()
+
+ json(conn, %{configs: merged})
+ end
+ end
+ end
+
def config_update(conn, %{"configs" => configs}) do
with :ok <- configurable_from_database(conn) do
updated =
end
end)
|> Enum.reject(&is_nil(&1))
+ |> Enum.map(fn config ->
+ Map.put(config, :db, ConfigDB.get_db_keys(config))
+ end)
Pleroma.Config.TransferTask.load_and_update_env()