Packages

An Ecto Persistence Adapter for ECSx

Current section

Files

Jump to
ecsx_persistence_ecto lib ecsx persistence ecto components.ex
Raw

lib/ecsx/persistence/ecto/components.ex

defmodule ECSx.Persistence.Ecto.Components do
@moduledoc """
The Components context.
"""
import Ecto.Query, warn: false
alias ECSx.Persistence.Ecto.Component
def repo do
ECSx.Persistence.Ecto.repo()
end
@doc """
Returns the list of components.
## Examples
iex> list_components()
[%Component{}, ...]
"""
def list_components do
repo().all(Component)
end
@doc """
Gets a single component.
Raises `Ecto.NoResultsError` if the Component does not exist.
## Examples
iex> get_component!(123)
%Component{}
iex> get_component!(456)
** (Ecto.NoResultsError)
"""
def get_component!(id), do: repo().get!(Component, id)
@doc """
Creates a component.
## Examples
iex> create_component(%{field: value})
{:ok, %Component{}}
iex> create_component(%{field: bad_value})
{:error, %Ecto.Changeset{}}
"""
def create_component(attrs \\ %{}) do
%Component{}
|> Component.changeset(attrs)
|> repo().insert()
end
@doc """
Updates a component.
## Examples
iex> update_component(component, %{field: new_value})
{:ok, %Component{}}
iex> update_component(component, %{field: bad_value})
{:error, %Ecto.Changeset{}}
"""
def update_component(%Component{} = component, attrs) do
component
|> Component.changeset(attrs)
|> repo().update()
end
@doc """
Deletes a component.
## Examples
iex> delete_component(component)
{:ok, %Component{}}
iex> delete_component(component)
{:error, %Ecto.Changeset{}}
"""
def delete_component(%Component{} = component) do
repo().delete(component)
end
@doc """
Returns an `%Ecto.Changeset{}` for tracking component changes.
## Examples
iex> change_component(component)
%Ecto.Changeset{data: %Component{}}
"""
def change_component(%Component{} = component \\ %Component{}, attrs) do
Component.changeset(component, attrs)
end
end