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