ex_trainer/lib/wabanex/training.ex
João Paulo Dubas 410a509faa
Some checks reported errors
continuous-integration/drone/push Build encountered an error
chore: apply credo suggestions (#3)
Mainly add module docs and fix some aliases.
2022-04-22 00:49:00 +00:00

35 lines
733 B
Elixir

defmodule Wabanex.Training do
@moduledoc """
Schema of a training routine for a given period of time.
"""
use Ecto.Schema
import Ecto.Changeset
alias PgRanges.DateRange
alias Wabanex.{Exercise, User}
@primary_key {:id, :binary_id, autogenerate: true}
@foreign_key_type :binary_id
@fields [:period, :user_id]
schema "trainings" do
field :period, DateRange, default: DateRange.new(Date.utc_today(), nil)
belongs_to :user, User
has_many :exercises, Exercise
timestamps()
end
def changeset(params) do
%__MODULE__{}
|> cast(params, @fields)
|> validate_required(@fields)
|> exclusion_constraint(:period, name: :non_overlap_period)
|> cast_assoc(:exercises)
end
end