defmodule Cake.Layers do @moduledoc """ The Layers context. """ import Ecto.Query, warn: false alias Cake.Repo alias Cake.Layers.Template @doc """ Returns the list of layer_templates. ## Examples iex> list_layer_templates() [%Template{}, ...] """ def list_layer_templates do Repo.all(Template) end @doc """ Gets a single template. Raises `Ecto.NoResultsError` if the Template does not exist. ## Examples iex> get_template!(123) %Template{} iex> get_template!(456) ** (Ecto.NoResultsError) """ def get_template!(id), do: Repo.get!(Template, id) @doc """ Creates a template. ## Examples iex> create_template(%{field: value}) {:ok, %Template{}} iex> create_template(%{field: bad_value}) {:error, %Ecto.Changeset{}} """ def create_template(attrs \\ %{}) do %Template{} |> Template.changeset(attrs) |> Repo.insert() end @doc """ Updates a template. ## Examples iex> update_template(template, %{field: new_value}) {:ok, %Template{}} iex> update_template(template, %{field: bad_value}) {:error, %Ecto.Changeset{}} """ def update_template(%Template{} = template, attrs) do template |> Template.changeset(attrs) |> Repo.update() end @doc """ Deletes a template. ## Examples iex> delete_template(template) {:ok, %Template{}} iex> delete_template(template) {:error, %Ecto.Changeset{}} """ def delete_template(%Template{} = template) do Repo.delete(template) end @doc """ Returns an `%Ecto.Changeset{}` for tracking template changes. ## Examples iex> change_template(template) %Ecto.Changeset{data: %Template{}} """ def change_template(%Template{} = template, attrs \\ %{}) do Template.changeset(template, attrs) end alias Cake.Layers.Record @doc """ Returns the list of layer_records. ## Examples iex> list_layer_records() [%Record{}, ...] """ def list_layer_records do Repo.all(Record) end @doc """ Gets a single record. Raises `Ecto.NoResultsError` if the Record does not exist. ## Examples iex> get_record!(123) %Record{} iex> get_record!(456) ** (Ecto.NoResultsError) """ def get_record!(id), do: Repo.get!(Record, id) @doc """ Creates a record. ## Examples iex> create_record(%{field: value}) {:ok, %Record{}} iex> create_record(%{field: bad_value}) {:error, %Ecto.Changeset{}} """ def create_record(attrs \\ %{}) do %Record{} |> Record.changeset(attrs) |> Repo.insert() end @doc """ Updates a record. ## Examples iex> update_record(record, %{field: new_value}) {:ok, %Record{}} iex> update_record(record, %{field: bad_value}) {:error, %Ecto.Changeset{}} """ def update_record(%Record{} = record, attrs) do record |> Record.changeset(attrs) |> Repo.update() end @doc """ Deletes a record. ## Examples iex> delete_record(record) {:ok, %Record{}} iex> delete_record(record) {:error, %Ecto.Changeset{}} """ def delete_record(%Record{} = record) do Repo.delete(record) end @doc """ Returns an `%Ecto.Changeset{}` for tracking record changes. ## Examples iex> change_record(record) %Ecto.Changeset{data: %Record{}} """ def change_record(%Record{} = record, attrs \\ %{}) do Record.changeset(record, attrs) end end