[day-04] add training schema

With this we can represent a traning program for a user.
This commit is contained in:
Joao P Dubas 2021-06-26 17:21:29 +00:00
parent 96a3e2e9f0
commit ea5616addf
4 changed files with 54 additions and 0 deletions

28
lib/wabanex/training.ex Normal file
View File

@ -0,0 +1,28 @@
defmodule Wabanex.Training do
use Ecto.Schema
import Ecto.Changeset
alias Wabanex.{Exercise, User}
@primary_key {:id, :binary_id, autogenerate: true}
@foreign_key_type :binary_id
@fields [:start_date, :end_date, :user_id]
@required_fields [:start_date, :user_id]
schema "trainings" do
field :start_date, :date
field :end_date, :date
belongs_to :user, User
timestamps()
end
def changeset(params) do
%__MODULE__{}
|> cast(params, @fields)
|> validate_required(@required_fields)
end
end

View File

@ -0,0 +1,9 @@
defmodule Wabanex.Trainings.Create do
alias Wabanex.{Training, Repo}
def call(params) do
params
|> Training.changeset()
|> Repo.insert()
end
end

View File

@ -3,6 +3,8 @@ defmodule Wabanex.User do
import Ecto.Changeset
alias Wabanex.Training
@primary_key {:id, :binary_id, autogenerate: true}
@fields ~w(name email password)a
@ -12,6 +14,8 @@ defmodule Wabanex.User do
field :email, :string
field :password, :string
has_many :trainings, Training
timestamps()
end

View File

@ -0,0 +1,13 @@
defmodule Wabanex.Repo.Migrations.CreateTrainingsTable do
use Ecto.Migration
def change do
create table(:trainings) do
add :start_date, :date, null: false
add :end_date, :date
add :user_id, references(:users), null: false
timestamps()
end
end
end