Current section

Files

Jump to
imagine_cms lib imagine cms_pages cms_page_version.ex
Raw

lib/imagine/cms_pages/cms_page_version.ex

defmodule Imagine.CmsPages.CmsPageVersion do
@moduledoc """
CmsPageVersion - a single version of CmsPage
"""
use Ecto.Schema
import Ecto.Changeset
alias Imagine.CmsPages.CmsPage
alias Imagine.CmsTemplates.CmsTemplate
@derive {Jason.Encoder,
only: [
:version,
:path,
:name,
:title,
:published_date,
:article_date,
:article_end_date,
:expiration_date,
:summary,
:thumbnail_path,
:feature_image_path,
:position
]}
schema "cms_page_versions" do
belongs_to :cms_page, CmsPage
has_many :versions, through: [:cms_page, :versions]
has_many :objects, through: [:cms_page, :objects]
has_many :tags, through: [:cms_page, :tags]
belongs_to :cms_template, CmsTemplate
field :cms_template_version, :integer
belongs_to :parent, CmsPage
has_many :sub_pages, CmsPage, foreign_key: :parent_id, where: [discarded_at: nil]
field :version, :integer
field :path, :string
field :name, :string
field :title, :string
field :layout, :string
field :published_version, :integer
field :published_date, :naive_datetime
field :article_date, :naive_datetime
field :article_end_date, :naive_datetime
field :expiration_date, :naive_datetime
field :expires, :boolean, default: false
field :summary, :string
field :html_head, :string
field :thumbnail_path, :string
field :feature_image_path, :string
field :redirect_enabled, :boolean, default: false
field :redirect_to, :string
field :position, :integer
field :comment_count, :integer
field :search_index, :string
field :updated_by, :integer
field :updated_by_username, :string
field :discarded_at, :naive_datetime
timestamps(inserted_at: :created_on, updated_at: :updated_on)
end
@doc false
def changeset(cms_page_version, %CmsPage{} = cms_page) do
cms_page_version
|> cast(Map.from_struct(cms_page), [
:version,
:cms_template_id,
:cms_template_version,
:parent_id,
:path,
:name,
:title,
:layout,
:published_version,
:published_date,
:article_date,
:article_end_date,
:expiration_date,
:expires,
:summary,
:html_head,
:thumbnail_path,
:feature_image_path,
:redirect_enabled,
:redirect_to,
:position,
:search_index,
:updated_by,
:updated_by_username
])
|> put_change(:cms_page_id, cms_page.id)
|> validate_required([:cms_page_id, :version, :title])
end
end