Current section

Files

Jump to
ami lib ami unit_lesson.ex
Raw

lib/ami/unit_lesson.ex

defmodule Ami.UnitLesson do
use Ecto.Schema
import Ecto.{
Query,
Changeset
}
alias Ami.{
Repo,
Unit,
Lesson
}
schema "unit_lessons" do
field(:position, :integer)
belongs_to(:unit, Unit)
belongs_to(:lesson, Lesson)
end
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:unit_id, :lesson_id, :position])
|> set_position
end
defp set_position(%Ecto.Changeset{params: %{"unit_id" => ""}} = changeset) do
changeset
end
defp set_position(%Ecto.Changeset{params: %{}} = changeset) do
changeset
end
defp set_position(changeset) do
unit_id = changeset.params["unit_id"]
last_unit_lesson =
from(ul in __MODULE__,where: ul.unit_id == ^unit_id)
|> last(:position)
|> Repo.one()
if last_unit_lesson do
put_change(changeset, :position, last_unit_lesson.position + 1)
else
put_change(changeset, :position, 0)
end
end
def update_position(unit_lesson_id, position) do
Repo.get(__MODULE__, unit_lesson_id)
|> change(%{position: position})
|> Repo.update()
end
end