defmodule Bbox.Parties do
@moduledoc """
Parties module.
"""
alias Bbox.Repo
alias Bbox.Parties.Party
@doc """
Create a new party.
"""
@spec insert(map()) :: {:ok, %Party{}}
def insert(params \\ %{}) do
{:ok, party} =
%Party{}
|> Party.changeset(params)
|> Repo.insert()
:telemetry.execute([:bbox, :parties, :insert!], %{party: party})
{:ok, party}
end
@doc """
List all parties.
"""
@spec list!() :: [%Party{}]
def list!() do
parties =
Party
|> Repo.all()
:telemetry.execute([:bbox, :parties, :list!], %{parties: parties})
parties
end
@doc """
Get party by initials.
"""
@spec get_by_initials!(charlist()) :: %Party{}
def get_by_initials!(initials) do
Party
|> Repo.get_by!(initials: initials)
end
end