29 lines
841 B
Elixir
29 lines
841 B
Elixir
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
|