Packages

A way to increase Elixir projects readability and maintenance based on Use Cases and Interactors.

Current section

Files

Jump to
use_case priv templates use_case.gen.phx_resource context.eex
Raw

priv/templates/use_case.gen.phx_resource/context.eex

defmodule <%= @context_inflected[:base] %>.<%= @context_inflected[:scoped] %> do
@moduledoc false
alias <%= @context_inflected[:base] %>.Schemas.<%= @schema.alias %>
alias <%= @context_inflected[:base] %>.Repo
def list do
Repo.all(<%= @schema.alias %>)
end
def get!(id), do: Repo.get!(<%= @schema.alias %>, id)
def create(attrs \\ %{}) do
%<%= @schema.alias %>{}
|> <%= @schema.alias %>.changeset(attrs)
|> Repo.insert()
end
def update(%<%= @schema.alias %>{} = <%= @schema.singular %>, attrs) do
<%= @schema.singular %>
|> <%= @schema.alias %>.changeset(attrs)
|> Repo.update()
end
def delete(%<%= @schema.alias %>{} = <%= @schema.singular %>) do
Repo.delete(<%= @schema.singular %>)
end
def new_changeset do
<%= @schema.alias %>.changeset(%<%= @schema.alias %>{}, %{})
end
def edit_changeset(%<%= @schema.alias %>{} = <%= @schema.singular %>) do
<%= @schema.alias %>.changeset(<%= @schema.singular %>, %{})
end
end