defmodule ChoreTracker.Chores.Chore do alias ChoreTracker.Chores.ChoreAssignee use Ecto.Schema import Ecto.Changeset schema "chores" do field :name, :string field :description, :string field :period, :integer field :emoji, :string field :period_unit, Ecto.Enum, values: [:hour, :day, :week, :month, :year] field :starts_at, :date timestamps(type: :utc_datetime) has_many :logs, ChoreTracker.Chores.ChoreLog, preload_order: [desc: :inserted_at] many_to_many :assignees, ChoreTracker.Accounts.User, join_through: ChoreAssignee, on_replace: :delete end @doc false def changeset(chore, attrs) do chore |> cast(attrs, [:name, :description, :emoji, :period, :period_unit, :starts_at]) |> validate_required([:name, :emoji, :period, :period_unit, :starts_at]) end end