[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:
Joao P Dubas 2021-06-26 17:23:27 +00:00
parent ea5616addf
commit 58c4601203
3 changed files with 48 additions and 0 deletions

30
lib/wabanex/exercise.ex Normal file
View 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

View File

@ -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

View File

@ -0,0 +1,15 @@
defmodule Wabanex.Repo.Migrations.CreateExercisesTable do
use Ecto.Migration
def change do
create table(:exercises) do
add :name, :string, null: false
add :video_url, :string
add :protocol_description, :string, null: false
add :repetitions, :string, null: false
add :training_id, references(:trainings), null: false
timestamps()
end
end
end