Current section

Files

Jump to
ami lib ami downloaded_resource.ex
Raw

lib/ami/downloaded_resource.ex

defmodule Ami.DownloadedResource do
use Ecto.Schema
import Ecto.{
Query,
Changeset
}
alias Ami.{
Resource,
User,
CoursePeriod
# Repo
}
schema "downloaded_resources" do
field(:created_at, :utc_datetime)
field(:updated_at, :utc_datetime)
belongs_to(:user, User)
belongs_to(:course_period, CoursePeriod)
belongs_to(:resource, Resource)
end
def exists_for?(resource, user, course_period) do
Ami.Repo.one(
from(
d in Ami.DownloadedResource,
where: d.resource_id == ^resource.id,
where: d.user_id == ^user.id,
where: d.course_period_id == ^course_period.id,
select: count(d.id)
)
) > 0
end
def changeset(downloaded_resource, params \\ %{}) do
downloaded_resource
|> cast(params, [
:resource_id,
:user_id,
:course_period_id,
:created_at,
:updated_at
])
|> validate_required([:resource_id, :user_id, :course_period_id])
|> unique_constraint(
:resource_id,
name: :downloaded_resources_resource_id_user_id_course_period_id_index
)
end
end