defmodule Ami.CourseResource do use Ecto.Schema import Ecto.{ Query, Changeset } alias Ami.{ Repo, Course, ResourceAttachment } schema "courses_resources" do field(:position, :integer) timestamps() belongs_to(:course, Course) belongs_to(:resource_attachment, ResourceAttachment) end def changeset(struct, params \\ %{}) do struct |> cast(params, [:course_id, :resource_attachment_id, :position]) |> cast_assoc(:resource_attachment) |> case do %{valid?: true, changes: changes} = changeset when changes == %{} -> %{changeset | action: :ignore} changeset -> changeset end end def update_position(id, position) do Repo.get!(__MODULE__, id) |> change(%{position: position}) |> Repo.update() end end