philomena/lib/philomena/donations.ex
2019-08-28 12:53:01 -04:00

104 lines
1.8 KiB
Elixir

defmodule Philomena.Donations do
@moduledoc """
The Donations context.
"""
import Ecto.Query, warn: false
alias Philomena.Repo
alias Philomena.Donations.Donation
@doc """
Returns the list of donations.
## Examples
iex> list_donations()
[%Donation{}, ...]
"""
def list_donations do
Repo.all(Donation)
end
@doc """
Gets a single donation.
Raises `Ecto.NoResultsError` if the Donation does not exist.
## Examples
iex> get_donation!(123)
%Donation{}
iex> get_donation!(456)
** (Ecto.NoResultsError)
"""
def get_donation!(id), do: Repo.get!(Donation, id)
@doc """
Creates a donation.
## Examples
iex> create_donation(%{field: value})
{:ok, %Donation{}}
iex> create_donation(%{field: bad_value})
{:error, %Ecto.Changeset{}}
"""
def create_donation(attrs \\ %{}) do
%Donation{}
|> Donation.changeset(attrs)
|> Repo.insert()
end
@doc """
Updates a donation.
## Examples
iex> update_donation(donation, %{field: new_value})
{:ok, %Donation{}}
iex> update_donation(donation, %{field: bad_value})
{:error, %Ecto.Changeset{}}
"""
def update_donation(%Donation{} = donation, attrs) do
donation
|> Donation.changeset(attrs)
|> Repo.update()
end
@doc """
Deletes a Donation.
## Examples
iex> delete_donation(donation)
{:ok, %Donation{}}
iex> delete_donation(donation)
{:error, %Ecto.Changeset{}}
"""
def delete_donation(%Donation{} = donation) do
Repo.delete(donation)
end
@doc """
Returns an `%Ecto.Changeset{}` for tracking donation changes.
## Examples
iex> change_donation(donation)
%Ecto.Changeset{source: %Donation{}}
"""
def change_donation(%Donation{} = donation) do
Donation.changeset(donation, %{})
end
end