defmodule Memex.Steps do @moduledoc """ The Steps context. """ import Ecto.Query, warn: false alias Memex.Repo alias Memex.Steps.Step @doc """ Returns the list of steps. ## Examples iex> list_steps() [%Step{}, ...] """ def list_steps do Repo.all(Step) end @doc """ Gets a single step. Raises `Ecto.NoResultsError` if the Step does not exist. ## Examples iex> get_step!(123) %Step{} iex> get_step!(456) ** (Ecto.NoResultsError) """ def get_step!(id), do: Repo.get!(Step, id) @doc """ Creates a step. ## Examples iex> create_step(%{field: value}) {:ok, %Step{}} iex> create_step(%{field: bad_value}) {:error, %Ecto.Changeset{}} """ def create_step(attrs \\ %{}) do %Step{} |> Step.changeset(attrs) |> Repo.insert() end @doc """ Updates a step. ## Examples iex> update_step(step, %{field: new_value}) {:ok, %Step{}} iex> update_step(step, %{field: bad_value}) {:error, %Ecto.Changeset{}} """ def update_step(%Step{} = step, attrs) do step |> Step.changeset(attrs) |> Repo.update() end @doc """ Deletes a step. ## Examples iex> delete_step(step) {:ok, %Step{}} iex> delete_step(step) {:error, %Ecto.Changeset{}} """ def delete_step(%Step{} = step) do Repo.delete(step) end @doc """ Returns an `%Ecto.Changeset{}` for tracking step changes. ## Examples iex> change_step(step) %Ecto.Changeset{data: %Step{}} """ def change_step(%Step{} = step, attrs \\ %{}) do Step.changeset(step, attrs) end end