67ef32432e
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
305 lines
5.1 KiB
Elixir
305 lines
5.1 KiB
Elixir
defmodule Eventos.Groups do
|
|
@moduledoc """
|
|
The Groups context.
|
|
"""
|
|
|
|
import Ecto.Query, warn: false
|
|
alias Eventos.Repo
|
|
|
|
alias Eventos.Groups.Group
|
|
|
|
@doc """
|
|
Returns the list of groups.
|
|
|
|
## Examples
|
|
|
|
iex> list_groups()
|
|
[%Group{}, ...]
|
|
|
|
"""
|
|
def list_groups do
|
|
Repo.all(Group)
|
|
end
|
|
|
|
@doc """
|
|
Gets a single group.
|
|
|
|
Raises `Ecto.NoResultsError` if the Group does not exist.
|
|
|
|
## Examples
|
|
|
|
iex> get_group!(123)
|
|
%Group{}
|
|
|
|
iex> get_group!(456)
|
|
** (Ecto.NoResultsError)
|
|
|
|
"""
|
|
def get_group!(id), do: Repo.get!(Group, id)
|
|
|
|
@doc """
|
|
Gets a single group, with all associations loaded.
|
|
"""
|
|
def get_group_full!(id) do
|
|
group = Repo.get!(Group, id)
|
|
Repo.preload(group, [:members, :organized_events])
|
|
end
|
|
|
|
@doc """
|
|
Creates a group.
|
|
|
|
## Examples
|
|
|
|
iex> create_group(%{field: value})
|
|
{:ok, %Group{}}
|
|
|
|
iex> create_group(%{field: bad_value})
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
"""
|
|
def create_group(attrs \\ %{}) do
|
|
%Group{}
|
|
|> Group.changeset(attrs)
|
|
|> Repo.insert()
|
|
end
|
|
|
|
@doc """
|
|
Updates a group.
|
|
|
|
## Examples
|
|
|
|
iex> update_group(group, %{field: new_value})
|
|
{:ok, %Group{}}
|
|
|
|
iex> update_group(group, %{field: bad_value})
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
"""
|
|
def update_group(%Group{} = group, attrs) do
|
|
group
|
|
|> Group.changeset(attrs)
|
|
|> Repo.update()
|
|
end
|
|
|
|
@doc """
|
|
Deletes a Group.
|
|
|
|
## Examples
|
|
|
|
iex> delete_group(group)
|
|
{:ok, %Group{}}
|
|
|
|
iex> delete_group(group)
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
"""
|
|
def delete_group(%Group{} = group) do
|
|
Repo.delete(group)
|
|
end
|
|
|
|
@doc """
|
|
Returns an `%Ecto.Changeset{}` for tracking group changes.
|
|
|
|
## Examples
|
|
|
|
iex> change_group(group)
|
|
%Ecto.Changeset{source: %Group{}}
|
|
|
|
"""
|
|
def change_group(%Group{} = group) do
|
|
Group.changeset(group, %{})
|
|
end
|
|
|
|
alias Eventos.Groups.Member
|
|
|
|
@doc """
|
|
Returns the list of members.
|
|
|
|
## Examples
|
|
|
|
iex> list_members()
|
|
[%Member{}, ...]
|
|
|
|
"""
|
|
def list_members do
|
|
Repo.all(Member)
|
|
end
|
|
|
|
@doc """
|
|
Gets a single member.
|
|
|
|
Raises `Ecto.NoResultsError` if the Member does not exist.
|
|
|
|
## Examples
|
|
|
|
iex> get_member!(123)
|
|
%Member{}
|
|
|
|
iex> get_member!(456)
|
|
** (Ecto.NoResultsError)
|
|
|
|
"""
|
|
def get_member!(id), do: Repo.get!(Member, id)
|
|
|
|
@doc """
|
|
Creates a member.
|
|
|
|
## Examples
|
|
|
|
iex> create_member(%{field: value})
|
|
{:ok, %Member{}}
|
|
|
|
iex> create_member(%{field: bad_value})
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
"""
|
|
def create_member(attrs \\ %{}) do
|
|
%Member{}
|
|
|> Member.changeset(attrs)
|
|
|> Repo.insert()
|
|
end
|
|
|
|
@doc """
|
|
Updates a member.
|
|
|
|
## Examples
|
|
|
|
iex> update_member(member, %{field: new_value})
|
|
{:ok, %Member{}}
|
|
|
|
iex> update_member(member, %{field: bad_value})
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
"""
|
|
def update_member(%Member{} = member, attrs) do
|
|
member
|
|
|> Member.changeset(attrs)
|
|
|> Repo.update()
|
|
end
|
|
|
|
@doc """
|
|
Deletes a Member.
|
|
|
|
## Examples
|
|
|
|
iex> delete_member(member)
|
|
{:ok, %Member{}}
|
|
|
|
iex> delete_member(member)
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
"""
|
|
def delete_member(%Member{} = member) do
|
|
Repo.delete(member)
|
|
end
|
|
|
|
@doc """
|
|
Returns an `%Ecto.Changeset{}` for tracking member changes.
|
|
|
|
## Examples
|
|
|
|
iex> change_member(member)
|
|
%Ecto.Changeset{source: %Member{}}
|
|
|
|
"""
|
|
def change_member(%Member{} = member) do
|
|
Member.changeset(member, %{})
|
|
end
|
|
|
|
alias Eventos.Groups.Request
|
|
|
|
@doc """
|
|
Returns the list of requests.
|
|
|
|
## Examples
|
|
|
|
iex> list_requests()
|
|
[%Request{}, ...]
|
|
|
|
"""
|
|
def list_requests do
|
|
Repo.all(Request)
|
|
end
|
|
|
|
@doc """
|
|
Gets a single request.
|
|
|
|
Raises `Ecto.NoResultsError` if the Request does not exist.
|
|
|
|
## Examples
|
|
|
|
iex> get_request!(123)
|
|
%Request{}
|
|
|
|
iex> get_request!(456)
|
|
** (Ecto.NoResultsError)
|
|
|
|
"""
|
|
def get_request!(id), do: Repo.get!(Request, id)
|
|
|
|
@doc """
|
|
Creates a request.
|
|
|
|
## Examples
|
|
|
|
iex> create_request(%{field: value})
|
|
{:ok, %Request{}}
|
|
|
|
iex> create_request(%{field: bad_value})
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
"""
|
|
def create_request(attrs \\ %{}) do
|
|
%Request{}
|
|
|> Request.changeset(attrs)
|
|
|> Repo.insert()
|
|
end
|
|
|
|
@doc """
|
|
Updates a request.
|
|
|
|
## Examples
|
|
|
|
iex> update_request(request, %{field: new_value})
|
|
{:ok, %Request{}}
|
|
|
|
iex> update_request(request, %{field: bad_value})
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
"""
|
|
def update_request(%Request{} = request, attrs) do
|
|
request
|
|
|> Request.changeset(attrs)
|
|
|> Repo.update()
|
|
end
|
|
|
|
@doc """
|
|
Deletes a Request.
|
|
|
|
## Examples
|
|
|
|
iex> delete_request(request)
|
|
{:ok, %Request{}}
|
|
|
|
iex> delete_request(request)
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
"""
|
|
def delete_request(%Request{} = request) do
|
|
Repo.delete(request)
|
|
end
|
|
|
|
@doc """
|
|
Returns an `%Ecto.Changeset{}` for tracking request changes.
|
|
|
|
## Examples
|
|
|
|
iex> change_request(request)
|
|
%Ecto.Changeset{source: %Request{}}
|
|
|
|
"""
|
|
def change_request(%Request{} = request) do
|
|
Request.changeset(request, %{})
|
|
end
|
|
end
|