diff options
author | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2020-01-17 18:08:45 +0300 |
---|---|---|
committer | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2020-01-17 18:15:41 +0300 |
commit | 89e93fb33f6295428dd84a50c9ca44e26bd169c3 (patch) | |
tree | 1cd415a5f55dc6707759b56c22fd887c3f35cb97 /lib/pleroma | |
parent | 7676ed82397d73a20aad1ae4b47690923ddfb162 (diff) | |
download | pleroma-89e93fb33f6295428dd84a50c9ca44e26bd169c3.tar.gz |
return db key on update requests
Diffstat (limited to 'lib/pleroma')
-rw-r--r-- | lib/pleroma/config/config_db.ex | 19 | ||||
-rw-r--r-- | lib/pleroma/config/holder.ex | 4 | ||||
-rw-r--r-- | lib/pleroma/config/transfer_task.ex | 4 | ||||
-rw-r--r-- | lib/pleroma/web/admin_api/admin_api_controller.ex | 13 | ||||
-rw-r--r-- | lib/pleroma/web/admin_api/views/config_view.ex | 8 |
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 |