chore-tracker/lib/chore_tracker/chores/chore.ex
2024-08-08 03:59:55 +02:00

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