| defmodule Plausible.Site.UserPreference do | |
| @moduledoc """ | |
| User-specific site preferences schema | |
| """ | |
| use Ecto.Schema | |
| import Ecto.Changeset | |
| @type t() :: %__MODULE__{} | |
| @options [:pinned_at] | |
| schema "site_user_preferences" do | |
| field :pinned_at, :naive_datetime | |
| belongs_to :user, Plausible.Auth.User | |
| belongs_to :site, Plausible.Site | |
| timestamps() | |
| end | |
| defmacro options, do: @options | |
| def changeset(user, site, attrs \\ %{}) do | |
| %__MODULE__{} | |
| |> cast(attrs, @options) | |
| |> put_assoc(:user, user) | |
| |> put_assoc(:site, site) | |
| end | |
| end | |