Ecto queries for Settings context.
This module encapsulates all database queries for settings management, providing a centralized location for query logic.
Summary
Functions
Gets a setting record by key.
Inserts a new setting.
Lists all settings ordered by key.
Lists setting records for specific keys.
Gets all settings as a list of {key, value} tuples.
Lists settings for specific keys as a list of {key, value} tuples.
Lists settings by keys with JSON priority as a list of {key, value} tuples.
Executes a transaction with multiple operations.
Updates an existing setting.
Functions
Gets a setting record by key.
Examples
iex> PhoenixKit.Settings.Queries.get_setting_by_key("time_zone")
%Setting{key: "time_zone", value: "0"}
iex> PhoenixKit.Settings.Queries.get_setting_by_key("non_existent")
nil
Inserts a new setting.
Examples
iex> %Setting{} |> Setting.changeset(%{key: "theme", value: "dark"})
...> |> PhoenixKit.Settings.Queries.insert_setting()
{:ok, %Setting{}}
Lists all settings ordered by key.
Examples
iex> PhoenixKit.Settings.Queries.list_settings()
[%Setting{key: "date_format", value: "Y-m-d"}, %Setting{key: "time_zone", value: "0"}, ...]
Lists setting records for specific keys.
Examples
iex> PhoenixKit.Settings.Queries.list_settings_by_keys(["time_zone"])
[%Setting{key: "time_zone", value: "0"}]
Gets all settings as a list of {key, value} tuples.
Examples
iex> PhoenixKit.Settings.Queries.list_settings_key_values()
[{"time_zone", "0"}, {"date_format", "Y-m-d"}]
Lists settings for specific keys as a list of {key, value} tuples.
Examples
iex> PhoenixKit.Settings.Queries.list_settings_key_values_by_keys(["time_zone", "date_format"])
[{"time_zone", "0"}, {"date_format", "Y-m-d"}]
Lists settings by keys with JSON priority as a list of {key, value} tuples.
Returns a list where value_json is used if present, otherwise falls back to the string value.
Examples
iex> PhoenixKit.Settings.Queries.list_settings_with_json_priority_by_keys(["theme"])
[{"theme", %{"primary" => "#3b82f6"}}]
Executes a transaction with multiple operations.
Examples
iex> Ecto.Multi.new()
...> |> multi_operation()
...> |> PhoenixKit.Settings.Queries.transaction()
{:ok, result}
Updates an existing setting.
Examples
iex> setting |> Setting.update_changeset(%{value: "light"})
...> |> PhoenixKit.Settings.Queries.update_setting()
{:ok, %Setting{}}