summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Strizhakov <alex.strizhakov@gmail.com>2020-12-03 19:34:23 +0300
committerAlexander Strizhakov <alex.strizhakov@gmail.com>2020-12-03 19:34:23 +0300
commita02eb8839650ecbf8bcad9bd6d346fc280985cae (patch)
tree73c2cb7e5871348d3d0ff39c3beb04a88b46bb8b
parent7fd4f4908bc31b3b4cc9d73a79169c3b3f08714c (diff)
config_db search methods
-rw-r--r--lib/mix/tasks/pleroma/config.ex30
-rw-r--r--lib/pleroma/config_db.ex12
2 files changed, 24 insertions, 18 deletions
diff --git a/lib/mix/tasks/pleroma/config.ex b/lib/mix/tasks/pleroma/config.ex
index 137aef038..63d8c46b5 100644
--- a/lib/mix/tasks/pleroma/config.ex
+++ b/lib/mix/tasks/pleroma/config.ex
@@ -62,9 +62,8 @@ defmodule Mix.Tasks.Pleroma.Config do
group = maybe_atomize(group)
key = maybe_atomize(key)
- %{group: group, key: key}
- |> ConfigDB.get_by_params()
- |> Repo.all()
+ group
+ |> ConfigDB.get_all_by_group_and_key(key)
|> Enum.each(&dump/1)
end)
end
@@ -290,17 +289,15 @@ defmodule Mix.Tasks.Pleroma.Config do
end
defp dump_group(group) when is_atom(group) do
- %{group: group}
- |> ConfigDB.get_by_params()
- |> Repo.all()
+ group
+ |> ConfigDB.get_all_by_group()
|> Enum.each(&dump/1)
end
defp group_exists?(group) do
- %{group: group}
- |> ConfigDB.get_by_params()
- |> Repo.all()
- |> Enum.empty?()
+ group
+ |> ConfigDB.get_all_by_group()
+ |> Enum.empty?()
end
defp maybe_atomize(arg) when is_atom(arg), do: arg
@@ -310,7 +307,7 @@ defmodule Mix.Tasks.Pleroma.Config do
String.to_existing_atom("Elixir." <> arg)
else
String.to_atom(arg)
- end
+ end
end
defp check_configdb(callback) do
@@ -326,8 +323,8 @@ defmodule Mix.Tasks.Pleroma.Config do
defp delete_key(group, key) do
check_configdb(fn ->
- ConfigDB.get_by_params(%{group: group, key: key})
- |> Repo.all()
+ group
+ |> ConfigDB.get_all_by_group_and_key(key)
|> Enum.each(&delete(&1, true))
end)
end
@@ -338,10 +335,9 @@ defmodule Mix.Tasks.Pleroma.Config do
shell_info("The following settings will be removed from ConfigDB:\n")
dump_group(group)
- ConfigDB.get_by_params(%{group: group})
- |> Repo.all()
- |> Enum.each(&delete(&1, true))
-
+ group
+ |> ConfigDB.get_all_by_group()
+ |> Enum.each(&delete(&1, true))
else
_ -> shell_error("No settings in ConfigDB for #{inspect(group)}. Aborting.")
end
diff --git a/lib/pleroma/config_db.ex b/lib/pleroma/config_db.ex
index e5b7811aa..2c3c0cb5c 100644
--- a/lib/pleroma/config_db.ex
+++ b/lib/pleroma/config_db.ex
@@ -6,7 +6,7 @@ defmodule Pleroma.ConfigDB do
use Ecto.Schema
import Ecto.Changeset
- import Ecto.Query, only: [select: 3]
+ import Ecto.Query, only: [select: 3, from: 2]
import Pleroma.Web.Gettext
alias __MODULE__
@@ -41,6 +41,16 @@ defmodule Pleroma.ConfigDB do
end)
end
+ @spec get_all_by_group(atom() | String.t()) :: [t()]
+ def get_all_by_group(group) do
+ from(c in ConfigDB, where: c.group == ^group) |> Repo.all()
+ end
+
+ @spec get_all_by_group_and_key(atom() | String.t(), atom() | String.t()) :: [t()]
+ def get_all_by_group_and_key(group, key) do
+ from(c in ConfigDB, where: c.group == ^group and c.key == ^key) |> Repo.all()
+ end
+
@spec get_by_params(map()) :: ConfigDB.t() | nil
def get_by_params(params), do: Repo.get_by(ConfigDB, params)