defmodule Plausible.Sites.Index.UserPreference do @moduledoc """ User preference persistence schema for the sites index """ use Ecto.Schema import Ecto.Changeset alias Plausible.Sites.Index @primary_key false embedded_schema do field :sort_by, Ecto.Enum, values: Index.sort_by_values(), default: :traffic field :sort_direction, Ecto.Enum, values: Index.sort_direction_values(), default: :desc end def changeset(struct \\ %__MODULE__{}, attrs) do cast(struct, attrs, [:sort_by, :sort_direction]) end def new(attrs) do attrs |> changeset() |> apply_changes() end def default(), do: %__MODULE__{} end