defmodule Cake.Accounts do @moduledoc """ The Accounts context. """ import Ecto.Query, warn: false alias Cake.Repo alias Cake.Accounts.Role @doc """ Returns the list of roles. ## Examples iex> list_roles() [%Role{}, ...] """ def list_roles do Repo.all(Role) end @doc """ Gets a single role. Raises `Ecto.NoResultsError` if the Role does not exist. ## Examples iex> get_role!(123) %Role{} iex> get_role!(456) ** (Ecto.NoResultsError) """ def get_role!(id), do: Repo.get!(Role, id) @doc """ Creates a role. ## Examples iex> create_role(%{field: value}) {:ok, %Role{}} iex> create_role(%{field: bad_value}) {:error, %Ecto.Changeset{}} """ def create_role(attrs \\ %{}) do %Role{} |> Role.changeset(attrs) |> Repo.insert() end @doc """ Updates a role. ## Examples iex> update_role(role, %{field: new_value}) {:ok, %Role{}} iex> update_role(role, %{field: bad_value}) {:error, %Ecto.Changeset{}} """ def update_role(%Role{} = role, attrs) do role |> Role.changeset(attrs) |> Repo.update() end @doc """ Deletes a role. ## Examples iex> delete_role(role) {:ok, %Role{}} iex> delete_role(role) {:error, %Ecto.Changeset{}} """ def delete_role(%Role{} = role) do Repo.delete(role) end @doc """ Returns an `%Ecto.Changeset{}` for tracking role changes. ## Examples iex> change_role(role) %Ecto.Changeset{data: %Role{}} """ def change_role(%Role{} = role, attrs \\ %{}) do Role.changeset(role, attrs) end alias Cake.Accounts.User @doc """ Returns the list of users. ## Examples iex> list_users() [%User{}, ...] """ def list_users do Repo.all(User) end @doc """ Gets a single user. Raises `Ecto.NoResultsError` if the User does not exist. ## Examples iex> get_user!(123) %User{} iex> get_user!(456) ** (Ecto.NoResultsError) """ def get_user!(id), do: Repo.get!(User, id) @doc """ Creates a user. ## Examples iex> create_user(%{field: value}) {:ok, %User{}} iex> create_user(%{field: bad_value}) {:error, %Ecto.Changeset{}} """ def create_user(attrs \\ %{}) do %User{} |> User.changeset(attrs) |> Repo.insert() end @doc """ Updates a user. ## Examples iex> update_user(user, %{field: new_value}) {:ok, %User{}} iex> update_user(user, %{field: bad_value}) {:error, %Ecto.Changeset{}} """ def update_user(%User{} = user, attrs) do user |> User.changeset(attrs) |> Repo.update() end @doc """ Deletes a user. ## Examples iex> delete_user(user) {:ok, %User{}} iex> delete_user(user) {:error, %Ecto.Changeset{}} """ def delete_user(%User{} = user) do Repo.delete(user) end @doc """ Returns an `%Ecto.Changeset{}` for tracking user changes. ## Examples iex> change_user(user) %Ecto.Changeset{data: %User{}} """ def change_user(%User{} = user, attrs \\ %{}) do User.changeset(user, attrs) end end