legendary-doc-site/apps/content/lib/content/term_relationship.ex

40 lines
1.2 KiB
Elixir
Raw Normal View History

defmodule Legendary.Content.TermRelationship do
2020-07-20 22:04:04 +00:00
@moduledoc """
Maintains the relationship between a term_taxonomy and a post / page / or object.
"""
use Ecto.Schema
import Ecto.Changeset
alias Legendary.Content.{Post}
2020-07-20 22:04:04 +00:00
@primary_key {:object_id, :integer, []}
@primary_key {:term_taxonomy_id, :integer, []}
2020-07-28 15:54:24 +00:00
schema "term_relationships" do
2020-07-20 22:04:04 +00:00
field :term_order, :integer
belongs_to :post, Post, foreign_key: :object_id, references: :id
2020-07-20 22:04:04 +00:00
belongs_to :term_taxonomy,
Legendary.Content.TermTaxonomy,
2020-07-20 22:04:04 +00:00
foreign_key: :term_taxonomy_id,
define_field: false
belongs_to :category,
Legendary.Content.TermTaxonomy,
2020-07-20 22:04:04 +00:00
foreign_key: :term_taxonomy_id,
define_field: false,
where: [taxonomy: "category"]
belongs_to :tag,
Legendary.Content.TermTaxonomy,
2020-07-20 22:04:04 +00:00
foreign_key: :term_taxonomy_id,
define_field: false,
where: [taxonomy: "post_tag"]
2020-07-28 15:54:24 +00:00
belongs_to :format,
Legendary.Content.TermTaxonomy,
2020-07-20 22:04:04 +00:00
foreign_key: :term_taxonomy_id,
define_field: false,
where: [taxonomy: "post_format"]
end
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:object_id, :term_taxonomy_id, :term_order])
end
end