Current section

Files

Jump to
scales_cms lib scales_cms cms cms_page_variants.ex
Raw

lib/scales_cms/cms/cms_page_variants.ex

defmodule ScalesCms.Cms.CmsPageVariants do
@moduledoc """
The Cms context.
"""
import Ecto.Query, warn: false
alias ScalesCms.Cms.CmsPageVariant
import ScalesCms, only: [repo: 0]
@doc """
Returns the list of cms_page_variants.
## Examples
iex> list_cms_page_variants()
[%CmsPageVariant{}, ...]
"""
def list_cms_page_variants do
repo().all(CmsPageVariant)
end
@doc """
Returns the list of cms_page_variants for a page.
## Examples
iex> list_cms_page_variants_for_page(232)
[%CmsPageVariant{}, ...]
"""
def list_cms_page_variants_for_page(page_id) do
CmsPageVariant
|> where([cpv], cpv.cms_page_id == ^page_id)
|> repo().all()
end
@doc """
Returns the list of cms_page_variants for a page and a specified locale.
## Examples
iex> list_cms_page_variants_for_page_and_locale(232, "nl-NL")
[%CmsPageVariant{}, ...]
"""
def list_cms_page_variants_for_page_and_locale(page_id, locale) do
CmsPageVariant
|> where([cpv], cpv.cms_page_id == ^page_id and cpv.locale == ^locale)
|> repo().all()
end
def list_ids_for_page(page_id) do
CmsPageVariant
|> where([cpv], cpv.cms_page_id == ^page_id)
|> select([cpv], cpv.id)
|> repo().all()
end
@doc """
Gets a single cms_page_variant.
Raises `Ecto.NoResultsError` if the Cms page variant does not exist.
## Examples
iex> get_cms_page_variant!(123)
%CmsPageVariant{}
iex> get_cms_page_variant!(456)
** (Ecto.NoResultsError)
"""
def get_cms_page_variant!(id), do: repo().get!(CmsPageVariant, id)
def get_latest_cms_page_variant_for_locale(page_id, locale) do
CmsPageVariant
|> where([cpv], cpv.cms_page_id == ^page_id and cpv.locale == ^locale)
|> order_by([cpv], desc: cpv.version)
|> limit(1)
|> repo().one()
end
@doc """
Creates a cms_page_variant.
## Examples
iex> create_cms_page_variant(%{field: value})
{:ok, %CmsPageVariant{}}
iex> create_cms_page_variant(%{field: bad_value})
{:error, %Ecto.Changeset{}}
"""
def create_cms_page_variant(attrs \\ %{}) do
%CmsPageVariant{}
|> CmsPageVariant.changeset(attrs)
|> repo().insert()
end
@doc """
Updates a cms_page_variant.
## Examples
iex> update_cms_page_variant(cms_page_variant, %{field: new_value})
{:ok, %CmsPageVariant{}}
iex> update_cms_page_variant(cms_page_variant, %{field: bad_value})
{:error, %Ecto.Changeset{}}
"""
def update_cms_page_variant(%CmsPageVariant{} = cms_page_variant, attrs) do
cms_page_variant
|> CmsPageVariant.changeset(attrs)
|> repo().update()
end
@doc """
Deletes a cms_page_variant.
## Examples
iex> delete_cms_page_variant(cms_page_variant)
{:ok, %CmsPageVariant{}}
iex> delete_cms_page_variant(cms_page_variant)
{:error, %Ecto.Changeset{}}
"""
def delete_cms_page_variant(%CmsPageVariant{} = cms_page_variant) do
repo().delete(cms_page_variant)
end
@doc """
Deletes a cms_page_variants.
## Examples
iex> delete_cms_page_variant([1, 2, 3])
{3, [%CmsPageVariant{}, %CmsPageVariant{}, %CmsPageVariant{}]}
iex> delete_cms_page_variant([0])
{:0, []}
"""
def delete_cms_page_variants(ids) do
CmsPageVariant
|> where([cpv], cpv.id in ^ids)
|> repo().delete_all()
end
@doc """
Returns an `%Ecto.Changeset{}` for tracking cms_page_variant changes.
## Examples
iex> change_cms_page_variant(cms_page_variant)
%Ecto.Changeset{data: %CmsPageVariant{}}
"""
def change_cms_page_variant(%CmsPageVariant{} = cms_page_variant, attrs \\ %{}) do
CmsPageVariant.changeset(cms_page_variant, attrs)
end
end