Current section

Files

Jump to
ami lib ami downloaded_tool.ex
Raw

lib/ami/downloaded_tool.ex

defmodule Ami.DownloadedTool do
use Ecto.Schema
import Ecto.{
Query,
Changeset
}
alias Ami.{
Tool,
User,
Community
}
schema "downloaded_tools" do
@timestamps_opts [type: :naive_datetime_usec]
field(:created_at, :utc_datetime_usec)
field(:updated_at, :utc_datetime_usec)
belongs_to(:tool, Tool)
belongs_to(:user, User)
belongs_to(:community, Community)
end
def exists_for?(tool, user) do
Ami.Repo.one(
from(
d in Ami.DownloadedTool,
where: d.tool_id == ^tool.id,
where: d.user_id == ^user.id,
select: count(d.id)
)
) > 0
end
def changeset(downloaded_tool, params \\ %{}) do
downloaded_tool
|> cast(params, [
:community_id,
:created_at,
:updated_at,
:tool_id,
:user_id
])
|> validate_required([:tool_id, :user_id])
end
def create(%{} = params) do
__MODULE__.changeset(%__MODULE__{}, params) |> Ami.Repo.insert()
end
end