Current section

Files

Jump to
ami lib ami resource_attachment.ex
Raw

lib/ami/resource_attachment.ex

defmodule Ami.ResourceAttachment do
use Ecto.Schema
use Arc.Ecto.Schema
import Ecto.{
Query,
Changeset
}
alias Ami.{
Repo,
Lesson,
Resource
}
alias Ami.ResourceAttachmentUploader.Type
schema "resource_attachments" do
@timestamps_opts [type: :naive_datetime_usec]
field(:title, :string)
field(:description, :string)
field(:file, Type)
timestamps()
end
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:title, :description])
|> cast_attachments(params, [:file])
|> validate_required([:file])
|> case do
%{valid?: false, changes: changes} = changeset when changes == %{} ->
%{changeset | action: :ignore}
changeset ->
changeset
end
end
def search(term) do
results_set1 =
Repo.all(
from(ra in __MODULE__,
where: ilike(ra.title, ^"#{term}%"),
distinct: ra.id
)
)
# results_set2 =
# Repo.all(
# from r in Resource,
# where: ilike(r.title, ^"#{term}%"),
# distinct: r.id
# )
# results = Enum.concat(results_set1, results_set2)
{:ok, results_set1}
end
def file_url({id, file}) do
case Application.get_env(:ami_web, :env) do
:prod -> "https://ami-aws-s3.s3.amazonaws.com/uploads/resource/file/#{file.file_name}"
_ -> "https://ami-aws-staging.s3.amazonaws.com/uploads/resource/file/#{file.file_name}"
end
end
def video_file_url({id, file}) do
case Application.get_env(:ami_web, :env) do
:prod -> "https://ami-aws-s3.s3.amazonaws.com/uploads/resource/file/#{file.file_name}"
_ -> "https://ami-aws-staging.s3.amazonaws.com/uploads/resource/file/#{file.file_name}"
end
end
end