Files
bDS2/lib/bds/settings.ex
2026-05-01 17:49:50 +02:00

33 lines
769 B
Elixir

defmodule BDS.Settings do
@moduledoc false
alias BDS.Persistence
alias BDS.Repo
alias BDS.Settings.Setting
@spec get_global_setting(String.t()) :: String.t() | nil
def get_global_setting(key) do
case Repo.get(Setting, key) do
%Setting{value: value} -> value
_other -> nil
end
end
@spec put_global_setting(String.t(), term()) :: :ok | {:error, Ecto.Changeset.t()}
def put_global_setting(key, value) do
setting = Repo.get(Setting, key) || %Setting{}
setting
|> Setting.changeset(%{
key: key,
value: to_string(value || ""),
updated_at: Persistence.now_ms()
})
|> Repo.insert_or_update()
|> case do
{:ok, _setting} -> :ok
{:error, reason} -> {:error, reason}
end
end
end