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