Current section

Files

Jump to
ami lib ami tag.ex
Raw

lib/ami/tag.ex

defmodule Ami.Tag do
use Ecto.Schema
import Ecto.{
Query,
Changeset
}
alias Ami.{
Repo,
Course,
Lesson
}
schema "tags" do
@timestamps_opts [type: :naive_datetime_usec]
field(:name, :string)
timestamps()
many_to_many(:lessons, Lesson, join_through: "lessons_tags")
many_to_many(:courses, Lesson, join_through: "courses_tags")
end
def find_or_build_tag(tag_name) do
case Repo.get_by(__MODULE__, name: tag_name) do
tag = %__MODULE__{} -> tag
nil -> %__MODULE__{name: tag_name}
end
end
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:name])
|> validate_required([:name])
|> unique_constraint(:name)
end
end