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
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
String.to_existing_atom("Elixir." <> arg)
else
String.to_atom(arg)
- end
+ end
end
defp check_configdb(callback) 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
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
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__
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)