renaming
Pleroma.Web.AdminAPI.Config -> Pleroma.ConfigDB
This commit is contained in:
parent
59ba5c80b9
commit
29155137fd
10 changed files with 173 additions and 171 deletions
|
|
@ -5,8 +5,8 @@
|
|||
defmodule Mix.Tasks.Pleroma.Config do
|
||||
use Mix.Task
|
||||
import Mix.Pleroma
|
||||
alias Pleroma.ConfigDB
|
||||
alias Pleroma.Repo
|
||||
alias Pleroma.Web.AdminAPI.Config
|
||||
@shortdoc "Manages the location of the config"
|
||||
@moduledoc File.read!("docs/administration/CLI_tasks/config.md")
|
||||
|
||||
|
|
@ -55,7 +55,7 @@ defmodule Mix.Tasks.Pleroma.Config do
|
|||
{:ok, file} <- File.open(config_path, [:write, :utf8]) do
|
||||
IO.write(file, "use Mix.Config\r\n")
|
||||
|
||||
Config
|
||||
ConfigDB
|
||||
|> Repo.all()
|
||||
|> Enum.each(&write_to_file_with_deletion(&1, file, opts[:delete_from_db]))
|
||||
|
||||
|
|
@ -81,7 +81,7 @@ defmodule Mix.Tasks.Pleroma.Config do
|
|||
end)
|
||||
|> Enum.each(fn {key, value} ->
|
||||
key = inspect(key)
|
||||
{:ok, _} = Config.update_or_create(%{group: inspect(group), key: key, value: value})
|
||||
{:ok, _} = ConfigDB.update_or_create(%{group: inspect(group), key: key, value: value})
|
||||
|
||||
Mix.shell().info("settings for key #{key} migrated.")
|
||||
end)
|
||||
|
|
@ -93,7 +93,7 @@ defmodule Mix.Tasks.Pleroma.Config do
|
|||
IO.write(
|
||||
file,
|
||||
"config #{config.group}, #{config.key}, #{
|
||||
inspect(Config.from_binary(config.value), limit: :infinity)
|
||||
inspect(ConfigDB.from_binary(config.value), limit: :infinity)
|
||||
}\r\n\r\n"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.Web.AdminAPI.Config do
|
||||
defmodule Pleroma.ConfigDB do
|
||||
use Ecto.Schema
|
||||
import Ecto.Changeset
|
||||
import Pleroma.Web.Gettext
|
||||
|
|
@ -19,10 +19,10 @@ defmodule Pleroma.Web.AdminAPI.Config do
|
|||
timestamps()
|
||||
end
|
||||
|
||||
@spec get_by_params(map()) :: Config.t() | nil
|
||||
def get_by_params(params), do: Repo.get_by(Config, params)
|
||||
@spec get_by_params(map()) :: ConfigDB.t() | nil
|
||||
def get_by_params(params), do: Repo.get_by(ConfigDB, params)
|
||||
|
||||
@spec changeset(Config.t(), map()) :: Changeset.t()
|
||||
@spec changeset(ConfigDB.t(), map()) :: Changeset.t()
|
||||
def changeset(config, params \\ %{}) do
|
||||
params = Map.put(params, :value, transform(params[:value]))
|
||||
|
||||
|
|
@ -32,15 +32,15 @@ defmodule Pleroma.Web.AdminAPI.Config do
|
|||
|> unique_constraint(:key, name: :config_group_key_index)
|
||||
end
|
||||
|
||||
@spec create(map()) :: {:ok, Config.t()} | {:error, Changeset.t()}
|
||||
@spec create(map()) :: {:ok, ConfigDB.t()} | {:error, Changeset.t()}
|
||||
def create(params) do
|
||||
%Config{}
|
||||
%ConfigDB{}
|
||||
|> changeset(params)
|
||||
|> Repo.insert()
|
||||
end
|
||||
|
||||
@spec update(Config.t(), map()) :: {:ok, Config} | {:error, Changeset.t()}
|
||||
def update(%Config{} = config, %{value: value}) do
|
||||
@spec update(ConfigDB.t(), map()) :: {:ok, ConfigDB.t()} | {:error, Changeset.t()}
|
||||
def update(%ConfigDB{} = config, %{value: value}) do
|
||||
config
|
||||
|> changeset(%{value: value})
|
||||
|> Repo.update()
|
||||
|
|
@ -57,9 +57,9 @@ defmodule Pleroma.Web.AdminAPI.Config do
|
|||
{:logger, :backends}
|
||||
]
|
||||
|
||||
defp only_full_update?(%Config{} = config) do
|
||||
config_group = Config.from_string(config.group)
|
||||
config_key = Config.from_string(config.key)
|
||||
defp only_full_update?(%ConfigDB{} = config) do
|
||||
config_group = ConfigDB.from_string(config.group)
|
||||
config_key = ConfigDB.from_string(config.key)
|
||||
|
||||
Enum.any?(@full_key_update, fn
|
||||
{group, key} when is_list(key) ->
|
||||
|
|
@ -70,39 +70,39 @@ defmodule Pleroma.Web.AdminAPI.Config do
|
|||
end)
|
||||
end
|
||||
|
||||
defp can_be_partially_updated?(%Config{} = config), do: not only_full_update?(config)
|
||||
defp can_be_partially_updated?(%ConfigDB{} = config), do: not only_full_update?(config)
|
||||
|
||||
@spec update_or_create(map()) :: {:ok, Config.t()} | {:error, Changeset.t()}
|
||||
@spec update_or_create(map()) :: {:ok, ConfigDB.t()} | {:error, Changeset.t()}
|
||||
def update_or_create(params) do
|
||||
search_opts = Map.take(params, [:group, :key])
|
||||
|
||||
with %Config{} = config <- Config.get_by_params(search_opts),
|
||||
with %ConfigDB{} = config <- ConfigDB.get_by_params(search_opts),
|
||||
{:partial_update, true, config} <-
|
||||
{:partial_update, can_be_partially_updated?(config), config},
|
||||
old_value <- from_binary(config.value),
|
||||
transformed_value <- do_transform(params[:value]),
|
||||
{:can_be_merged, true, config} <- {:can_be_merged, is_list(transformed_value), config},
|
||||
new_value <- DeepMerge.deep_merge(old_value, transformed_value) do
|
||||
Config.update(config, %{value: new_value, transformed?: true})
|
||||
ConfigDB.update(config, %{value: new_value, transformed?: true})
|
||||
else
|
||||
{reason, false, config} when reason in [:partial_update, :can_be_merged] ->
|
||||
Config.update(config, params)
|
||||
ConfigDB.update(config, params)
|
||||
|
||||
nil ->
|
||||
Config.create(params)
|
||||
ConfigDB.create(params)
|
||||
end
|
||||
end
|
||||
|
||||
@spec delete(map()) :: {:ok, Config.t()} | {:error, Changeset.t()} | {:ok, nil}
|
||||
@spec delete(map()) :: {:ok, ConfigDB.t()} | {:error, Changeset.t()} | {:ok, nil}
|
||||
def delete(params) do
|
||||
search_opts = Map.delete(params, :subkeys)
|
||||
|
||||
with %Config{} = config <- Config.get_by_params(search_opts),
|
||||
with %ConfigDB{} = config <- ConfigDB.get_by_params(search_opts),
|
||||
{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
|
||||
Config.update(config, %{value: new_value})
|
||||
ConfigDB.update(config, %{value: new_value})
|
||||
else
|
||||
{config, nil} ->
|
||||
Repo.delete(config)
|
||||
|
|
@ -5,10 +5,10 @@
|
|||
defmodule Pleroma.Config.TransferTask do
|
||||
use Task
|
||||
|
||||
require Logger
|
||||
|
||||
alias Pleroma.ConfigDB
|
||||
alias Pleroma.Repo
|
||||
alias Pleroma.Web.AdminAPI.Config
|
||||
|
||||
require Logger
|
||||
|
||||
def start_link(_) do
|
||||
load_and_update_env()
|
||||
|
|
@ -21,7 +21,7 @@ defmodule Pleroma.Config.TransferTask do
|
|||
true <- Ecto.Adapters.SQL.table_exists?(Repo, "config"),
|
||||
started_applications <- Application.started_applications() do
|
||||
# We need to restart applications for loaded settings take effect
|
||||
Config
|
||||
ConfigDB
|
||||
|> Repo.all()
|
||||
|> Enum.map(&update_env(&1))
|
||||
|> Enum.uniq()
|
||||
|
|
@ -33,9 +33,9 @@ defmodule Pleroma.Config.TransferTask do
|
|||
|
||||
defp update_env(setting) do
|
||||
try do
|
||||
key = Config.from_string(setting.key)
|
||||
group = Config.from_string(setting.group)
|
||||
value = Config.from_binary(setting.value)
|
||||
key = ConfigDB.from_string(setting.key)
|
||||
group = ConfigDB.from_string(setting.group)
|
||||
value = ConfigDB.from_binary(setting.value)
|
||||
|
||||
if group != :phoenix and key != :serve_endpoints do
|
||||
:ok = Application.put_env(group, key, value)
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
|
|||
import Pleroma.Web.ControllerHelper, only: [json_response: 3]
|
||||
|
||||
alias Pleroma.Activity
|
||||
alias Pleroma.ConfigDB
|
||||
alias Pleroma.ModerationLog
|
||||
alias Pleroma.Plugs.OAuthScopesPlug
|
||||
alias Pleroma.ReportNote
|
||||
|
|
@ -17,7 +18,6 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
|
|||
alias Pleroma.Web.ActivityPub.Relay
|
||||
alias Pleroma.Web.ActivityPub.Utils
|
||||
alias Pleroma.Web.AdminAPI.AccountView
|
||||
alias Pleroma.Web.AdminAPI.Config
|
||||
alias Pleroma.Web.AdminAPI.ConfigView
|
||||
alias Pleroma.Web.AdminAPI.ModerationLogView
|
||||
alias Pleroma.Web.AdminAPI.Report
|
||||
|
|
@ -799,7 +799,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
|
|||
|
||||
def config_show(conn, _params) do
|
||||
with :ok <- configurable_from_database(conn) do
|
||||
configs = Pleroma.Repo.all(Config)
|
||||
configs = Pleroma.Repo.all(ConfigDB)
|
||||
|
||||
if configs == [] do
|
||||
errors(
|
||||
|
|
@ -820,13 +820,13 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
|
|||
Enum.map(configs, fn
|
||||
%{"group" => group, "key" => key, "delete" => true} = params ->
|
||||
with {:ok, config} <-
|
||||
Config.delete(%{group: group, key: key, subkeys: params["subkeys"]}) do
|
||||
ConfigDB.delete(%{group: group, key: key, subkeys: params["subkeys"]}) do
|
||||
config
|
||||
end
|
||||
|
||||
%{"group" => group, "key" => key, "value" => value} ->
|
||||
with {:ok, config} <-
|
||||
Config.update_or_create(%{group: group, key: key, value: value}) do
|
||||
ConfigDB.update_or_create(%{group: group, key: key, value: value}) do
|
||||
config
|
||||
end
|
||||
end)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ defmodule Pleroma.Web.AdminAPI.ConfigView do
|
|||
%{
|
||||
key: config.key,
|
||||
group: config.group,
|
||||
value: Pleroma.Web.AdminAPI.Config.from_binary_with_convert(config.value)
|
||||
value: Pleroma.ConfigDB.from_binary_with_convert(config.value)
|
||||
}
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue