[day-04] add exercise schema
So a training is a collection of exercises that have a description and a protocol to be followed.
This commit is contained in:
30
lib/wabanex/exercise.ex
Normal file
30
lib/wabanex/exercise.ex
Normal file
@@ -0,0 +1,30 @@
|
||||
defmodule Wabanex.Exercise do
|
||||
use Ecto.Schema
|
||||
|
||||
import Ecto.Changeset
|
||||
|
||||
alias Wabanex.Training
|
||||
|
||||
@primary_key {:id, :binary_id, autogenerate: true}
|
||||
@foreign_key_type :binary_id
|
||||
|
||||
@fields [:name, :video_url, :protocol_description, :repetitions, :training_id]
|
||||
@required_fields [:name, :protocol_description, :repetitions]
|
||||
|
||||
schema "exercises" do
|
||||
field :name, :string
|
||||
field :video_url, :string
|
||||
field :protocol_description, :string
|
||||
field :repetitions, :string
|
||||
|
||||
belongs_to :training, Training
|
||||
|
||||
timestamps()
|
||||
end
|
||||
|
||||
def changeset(%__MODULE__{} = struct, params) do
|
||||
struct
|
||||
|> cast(params, @fields)
|
||||
|> validate_required(@required_fields)
|
||||
end
|
||||
end
|
@@ -17,6 +17,8 @@ defmodule Wabanex.Training do
|
||||
|
||||
belongs_to :user, User
|
||||
|
||||
has_many :exercises, Exercise
|
||||
|
||||
timestamps()
|
||||
end
|
||||
|
||||
@@ -24,5 +26,6 @@ defmodule Wabanex.Training do
|
||||
%__MODULE__{}
|
||||
|> cast(params, @fields)
|
||||
|> validate_required(@required_fields)
|
||||
|> cast_assoc(:exercises)
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user