config_db search methods
authorAlexander Strizhakov <alex.strizhakov@gmail.com>
Thu, 3 Dec 2020 16:34:23 +0000 (19:34 +0300)
committerAlexander Strizhakov <alex.strizhakov@gmail.com>
Thu, 3 Dec 2020 16:34:23 +0000 (19:34 +0300)
lib/mix/tasks/pleroma/config.ex
lib/pleroma/config_db.ex

index 137aef0387a60cf34d31efc94d492e1754cb5224..63d8c46b5779827f168b8d89ae0f641e17a0d5f7 100644 (file)
@@ -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
index e5b7811aa51b27530ef020d5bcaa0813018b9798..2c3c0cb5cde485f0a28e1728db12bf8ebf9b6998 100644 (file)
@@ -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)