defmodule Ami.DownloadedTool do use Ecto.Schema import Ecto.{ Query, Changeset } alias Ami.{ Tool, User, Community } schema "downloaded_tools" do field(:created_at, :utc_datetime) field(:updated_at, :utc_datetime) 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