X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fconfig_db.ex;h=9e4e6f3ea7ae5b91c4e1e109faef1510a6732e07;hb=c2ae3273d5d8667967891e9c1672c653188e5446;hp=2c3c0cb5cde485f0a28e1728db12bf8ebf9b6998;hpb=a02eb8839650ecbf8bcad9bd6d346fc280985cae;p=akkoma
diff --git a/lib/pleroma/config_db.ex b/lib/pleroma/config_db.ex
index 2c3c0cb5c..9e4e6f3ea 100644
--- a/lib/pleroma/config_db.ex
+++ b/lib/pleroma/config_db.ex
@@ -1,5 +1,5 @@
# Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors
+# Copyright © 2017-2021 Pleroma Authors
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.ConfigDB do
@@ -46,13 +46,13 @@ defmodule Pleroma.ConfigDB 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()
+ @spec get_by_group_and_key(atom() | String.t(), atom() | String.t()) :: t() | nil
+ def get_by_group_and_key(group, key) do
+ get_by_params(%{group: group, key: key})
end
@spec get_by_params(map()) :: ConfigDB.t() | nil
- def get_by_params(params), do: Repo.get_by(ConfigDB, params)
+ def get_by_params(%{group: _, key: _} = params), do: Repo.get_by(ConfigDB, params)
@spec changeset(ConfigDB.t(), map()) :: Changeset.t()
def changeset(config, params \\ %{}) do
@@ -163,7 +163,6 @@ defmodule Pleroma.ConfigDB do
defp only_full_update?(%ConfigDB{group: group, key: key}) do
full_key_update = [
{:pleroma, :ecto_repos},
- {:quack, :meta},
{:mime, :types},
{:cors_plug, [:max_age, :methods, :expose, :headers]},
{:swarm, :node_blacklist},
@@ -343,7 +342,11 @@ defmodule Pleroma.ConfigDB do
def string_to_elixir_types(value) do
if module_name?(value) do
- String.to_existing_atom("Elixir." <> value)
+ try do
+ String.to_existing_atom("Elixir." <> value)
+ rescue
+ ArgumentError -> :invalid_atom
+ end
else
value
end
@@ -387,6 +390,6 @@ defmodule Pleroma.ConfigDB do
@spec module_name?(String.t()) :: boolean()
def module_name?(string) do
Regex.match?(~r/^(Pleroma|Phoenix|Tesla|Quack|Ueberauth|Swoosh)\./, string) or
- string in ["Oban", "Ueberauth", "ExSyslogger"]
+ string in ["Oban", "Ueberauth", "ExSyslogger", "ConcurrentLimiter"]
end
end