aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma
diff options
context:
space:
mode:
authorAlexander Strizhakov <alex.strizhakov@gmail.com>2020-01-17 18:08:45 +0300
committerAlexander Strizhakov <alex.strizhakov@gmail.com>2020-01-17 18:15:41 +0300
commit89e93fb33f6295428dd84a50c9ca44e26bd169c3 (patch)
tree1cd415a5f55dc6707759b56c22fd887c3f35cb97 /lib/pleroma
parent7676ed82397d73a20aad1ae4b47690923ddfb162 (diff)
downloadpleroma-89e93fb33f6295428dd84a50c9ca44e26bd169c3.tar.gz
return db key on update requests
Diffstat (limited to 'lib/pleroma')
-rw-r--r--lib/pleroma/config/config_db.ex19
-rw-r--r--lib/pleroma/config/holder.ex4
-rw-r--r--lib/pleroma/config/transfer_task.ex4
-rw-r--r--lib/pleroma/web/admin_api/admin_api_controller.ex13
-rw-r--r--lib/pleroma/web/admin_api/views/config_view.ex8
5 files changed, 36 insertions, 12 deletions
diff --git a/lib/pleroma/config/config_db.ex b/lib/pleroma/config/config_db.ex
index 6d48e0300..93b02370c 100644
--- a/lib/pleroma/config/config_db.ex
+++ b/lib/pleroma/config/config_db.ex
@@ -16,6 +16,7 @@ defmodule Pleroma.ConfigDB do
field(:key, :string)
field(:group, :string)
field(:value, :binary)
+ field(:db, {:array, :string}, virtual: true, default: [])
timestamps()
end
@@ -61,6 +62,22 @@ defmodule Pleroma.ConfigDB do
|> Repo.update()
end
+ @spec get_db_keys(ConfigDB.t()) :: [String.t()]
+ def get_db_keys(%ConfigDB{} = config) do
+ config.value
+ |> ConfigDB.from_binary()
+ |> get_db_keys(config.key)
+ end
+
+ @spec get_db_keys(keyword() | any()) :: [String.t()]
+ def get_db_keys(value, key) do
+ if Keyword.keyword?(value) do
+ value |> Keyword.keys() |> Enum.map(&convert(&1))
+ else
+ [convert(key)]
+ end
+ end
+
@full_key_update [
{:pleroma, :ecto_repos},
{:pleroma, :assets},
@@ -317,7 +334,7 @@ defmodule Pleroma.ConfigDB do
@spec is_module_name?(String.t()) :: boolean()
def is_module_name?(string) do
- Regex.match?(~r/^(Pleroma|Phoenix|Tesla|Quack)\./, string) or
+ Regex.match?(~r/^(Pleroma|Phoenix|Tesla|Quack|Ueberauth)\./, string) or
string in ["Oban", "Ueberauth", "ExSyslogger"]
end
end
diff --git a/lib/pleroma/config/holder.ex b/lib/pleroma/config/holder.ex
index 0d9cfef66..7436df1a7 100644
--- a/lib/pleroma/config/holder.ex
+++ b/lib/pleroma/config/holder.ex
@@ -15,8 +15,8 @@ defmodule Pleroma.Config.Loader do
# support for Elixir less than 1.9
@spec load() :: map()
def load do
- {config, _paths} = load("config/config.exs")
- {env_config, _paths} = load("config/#{Mix.env()}.exs")
+ config = load("config/config.exs")
+ env_config = load("config/#{Mix.env()}.exs")
Mix.Config.merge(config, env_config)
end
diff --git a/lib/pleroma/config/transfer_task.ex b/lib/pleroma/config/transfer_task.ex
index 70b51cb4d..6e651c48b 100644
--- a/lib/pleroma/config/transfer_task.ex
+++ b/lib/pleroma/config/transfer_task.ex
@@ -66,7 +66,9 @@ defmodule Pleroma.Config.TransferTask do
rescue
e ->
Logger.warn(
- "updating env causes error, key: #{inspect(setting.key)}, error: #{inspect(e)}"
+ "updating env causes error, group: #{inspect(setting.group)}, key: #{
+ inspect(setting.key)
+ }, value: #{inspect(ConfigDB.from_binary(setting.value))}, error: #{inspect(e)}"
)
nil
diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex
index cc93c2309..7572a6b65 100644
--- a/lib/pleroma/web/admin_api/admin_api_controller.ex
+++ b/lib/pleroma/web/admin_api/admin_api_controller.ex
@@ -827,15 +827,11 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
merged =
Pleroma.Config.Holder.config()
|> DeepMerge.deep_merge(configs)
- |> Enum.map(fn {group, value} ->
- Enum.map(value, fn {key, value} ->
+ |> Enum.map(fn {group, values} ->
+ Enum.map(values, fn {key, value} ->
db =
if configs[group][key] do
- if Keyword.keyword?(value) do
- Keyword.keys(value) |> Enum.map(fn key -> ConfigDB.convert(key) end)
- else
- ConfigDB.convert(key)
- end
+ ConfigDB.get_db_keys(value, key)
end
setting = %{
@@ -871,6 +867,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
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()
diff --git a/lib/pleroma/web/admin_api/views/config_view.ex b/lib/pleroma/web/admin_api/views/config_view.ex
index 72b042ab7..23d97e847 100644
--- a/lib/pleroma/web/admin_api/views/config_view.ex
+++ b/lib/pleroma/web/admin_api/views/config_view.ex
@@ -12,10 +12,16 @@ defmodule Pleroma.Web.AdminAPI.ConfigView do
end
def render("show.json", %{config: config}) do
- %{
+ map = %{
key: config.key,
group: config.group,
value: Pleroma.ConfigDB.from_binary_with_convert(config.value)
}
+
+ if config.db != [] do
+ Map.put(map, :db, config.db)
+ else
+ map
+ end
end
end