227 lines
4.2 KiB
Elixir
227 lines
4.2 KiB
Elixir
defmodule Runosaari.Schedule do
|
|
@moduledoc """
|
|
The Schedule context.
|
|
"""
|
|
|
|
import Ecto.Query, warn: false
|
|
alias Runosaari.Repo
|
|
|
|
alias Runosaari.Schedule.Performance
|
|
|
|
@doc """
|
|
Returns the list of performances.
|
|
|
|
## Examples
|
|
|
|
iex> list_performances()
|
|
[%Performance{}, ...]
|
|
|
|
"""
|
|
def list_performances do
|
|
Repo.all(Performance)
|
|
end
|
|
|
|
@doc """
|
|
Returns the list of performances sorted by seqnum.
|
|
|
|
## Examples
|
|
|
|
iex> list_sorted_performances()
|
|
[%Performance{}, ...]
|
|
|
|
"""
|
|
def list_sorted_performances do
|
|
Repo.all(Performance |> where([p], not is_nil(p.seqnum)) |> order_by(:seqnum))
|
|
end
|
|
|
|
@doc """
|
|
Gets a single performance.
|
|
|
|
Raises `Ecto.NoResultsError` if the Performance does not exist.
|
|
|
|
## Examples
|
|
|
|
iex> get_performance!(123)
|
|
%Performance{}
|
|
|
|
iex> get_performance!(456)
|
|
** (Ecto.NoResultsError)
|
|
|
|
"""
|
|
def get_performance!(id), do: Repo.get!(Performance, id)
|
|
|
|
@doc """
|
|
Creates a performance.
|
|
|
|
## Examples
|
|
|
|
iex> create_performance(%{field: value})
|
|
{:ok, %Performance{}}
|
|
|
|
iex> create_performance(%{field: bad_value})
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
"""
|
|
def create_performance(attrs \\ %{}) do
|
|
%Performance{}
|
|
|> Performance.changeset(attrs)
|
|
|> Repo.insert()
|
|
end
|
|
|
|
@doc """
|
|
Updates a performance.
|
|
|
|
## Examples
|
|
|
|
iex> update_performance(performance, %{field: new_value})
|
|
{:ok, %Performance{}}
|
|
|
|
iex> update_performance(performance, %{field: bad_value})
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
"""
|
|
def update_performance(%Performance{} = performance, attrs) do
|
|
performance
|
|
|> Performance.changeset(attrs)
|
|
|> Repo.update()
|
|
end
|
|
|
|
@doc """
|
|
Deletes a performance.
|
|
|
|
## Examples
|
|
|
|
iex> delete_performance(performance)
|
|
{:ok, %Performance{}}
|
|
|
|
iex> delete_performance(performance)
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
"""
|
|
def delete_performance(%Performance{} = performance) do
|
|
Repo.delete(performance)
|
|
end
|
|
|
|
@doc """
|
|
Returns an `%Ecto.Changeset{}` for tracking performance changes.
|
|
|
|
## Examples
|
|
|
|
iex> change_performance(performance)
|
|
%Ecto.Changeset{data: %Performance{}}
|
|
|
|
"""
|
|
def change_performance(%Performance{} = performance, attrs \\ %{}) do
|
|
Performance.changeset(performance, attrs)
|
|
end
|
|
|
|
alias Runosaari.Schedule.Workshop
|
|
|
|
@doc """
|
|
Returns the list of workshops.
|
|
|
|
## Examples
|
|
|
|
iex> list_workshops()
|
|
[%Workshop{}, ...]
|
|
|
|
"""
|
|
def list_workshops do
|
|
Repo.all(Workshop)
|
|
end
|
|
|
|
@doc """
|
|
Returns the list of workshops.
|
|
|
|
## Examples
|
|
|
|
iex> list_workshops()
|
|
[%Workshop{}, ...]
|
|
|
|
"""
|
|
def list_sorted_workshops do
|
|
Repo.all(Workshop |> order_by(:seqnum))
|
|
end
|
|
|
|
@doc """
|
|
Gets a single workshop.
|
|
|
|
Raises `Ecto.NoResultsError` if the Workshop does not exist.
|
|
|
|
## Examples
|
|
|
|
iex> get_workshop!(123)
|
|
%Workshop{}
|
|
|
|
iex> get_workshop!(456)
|
|
** (Ecto.NoResultsError)
|
|
|
|
"""
|
|
def get_workshop!(id), do: Repo.get!(Workshop, id)
|
|
|
|
@doc """
|
|
Creates a workshop.
|
|
|
|
## Examples
|
|
|
|
iex> create_workshop(%{field: value})
|
|
{:ok, %Workshop{}}
|
|
|
|
iex> create_workshop(%{field: bad_value})
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
"""
|
|
def create_workshop(attrs \\ %{}) do
|
|
%Workshop{}
|
|
|> Workshop.changeset(attrs)
|
|
|> Repo.insert()
|
|
end
|
|
|
|
@doc """
|
|
Updates a workshop.
|
|
|
|
## Examples
|
|
|
|
iex> update_workshop(workshop, %{field: new_value})
|
|
{:ok, %Workshop{}}
|
|
|
|
iex> update_workshop(workshop, %{field: bad_value})
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
"""
|
|
def update_workshop(%Workshop{} = workshop, attrs) do
|
|
workshop
|
|
|> Workshop.changeset(attrs)
|
|
|> Repo.update()
|
|
end
|
|
|
|
@doc """
|
|
Deletes a workshop.
|
|
|
|
## Examples
|
|
|
|
iex> delete_workshop(workshop)
|
|
{:ok, %Workshop{}}
|
|
|
|
iex> delete_workshop(workshop)
|
|
{:error, %Ecto.Changeset{}}
|
|
|
|
"""
|
|
def delete_workshop(%Workshop{} = workshop) do
|
|
Repo.delete(workshop)
|
|
end
|
|
|
|
@doc """
|
|
Returns an `%Ecto.Changeset{}` for tracking workshop changes.
|
|
|
|
## Examples
|
|
|
|
iex> change_workshop(workshop)
|
|
%Ecto.Changeset{data: %Workshop{}}
|
|
|
|
"""
|
|
def change_workshop(%Workshop{} = workshop, attrs \\ %{}) do
|
|
Workshop.changeset(workshop, attrs)
|
|
end
|
|
end
|