+ defp dump(_), do: :noop
+
+ defp dump_group(group) when is_atom(group) do
+ group
+ |> ConfigDB.get_all_by_group()
+ |> Enum.each(&dump/1)
+ end
+
+ defp group_exists?(group) do
+ group
+ |> ConfigDB.get_all_by_group()
+ |> Enum.any?()
+ end
+
+ defp key_exists?(group, key) do
+ group
+ |> ConfigDB.get_by_group_and_key(key)
+ |> is_nil
+ |> Kernel.!()
+ end
+
+ defp maybe_atomize(arg) when is_atom(arg), do: arg
+
+ defp maybe_atomize(":" <> arg), do: maybe_atomize(arg)
+
+ defp maybe_atomize(arg) when is_binary(arg) do
+ if ConfigDB.module_name?(arg) do
+ String.to_existing_atom("Elixir." <> arg)
+ else
+ String.to_atom(arg)
+ end
+ end
+
+ defp check_configdb(callback) do
+ with true <- Pleroma.Config.get([:configurable_from_database]) do
+ callback.()
+ else
+ _ ->
+ shell_error(
+ "ConfigDB not enabled. Please check the value of :configurable_from_database in your configuration."
+ )
+ end
+ end
+
+ defp delete_key(group, key) do
+ check_configdb(fn ->
+ ConfigDB.delete(%{group: group, key: key})
+ end)
+ end
+
+ defp delete_group(group) do
+ check_configdb(fn ->
+ group
+ |> ConfigDB.get_all_by_group()
+ |> Enum.each(&ConfigDB.delete/1)
+ end)
+ end
+
+ defp truncatedb do
+ Ecto.Adapters.SQL.query!(Repo, "TRUNCATE config;")
+ Ecto.Adapters.SQL.query!(Repo, "ALTER SEQUENCE config_id_seq RESTART;")