643 B · text History aa9e861
defmodule GitGud.Settings.InstanceSetting do
  @moduledoc """
  One instance-wide lever, stored as a row so it can be changed without
  a deploy. See `GitGud.Settings` for the registry of known keys.
  """
  use Ecto.Schema
  import Ecto.Changeset

  alias GitGud.Accounts.User

  schema "instance_settings" do
    field :key, :string
    field :value, :map, default: %{}

    belongs_to :updated_by, User

    timestamps(type: :utc_datetime)
  end

  @doc false
  def changeset(setting, attrs) do
    setting
    |> cast(attrs, [:key, :value, :updated_by_id])
    |> validate_required([:key, :value])
    |> unique_constraint(:key)
  end
end