Last active
March 24, 2017 14:41
-
-
Save wulymammoth/9b54c7ad9eff33c1bb4024d4114ba32c to your computer and use it in GitHub Desktop.
Example of new 1.3 Phoenix module generator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # foo/lib/foo/accounts/accounts.ex | |
| defmodule Foo.Accounts do | |
| @moduledoc """ | |
| The boundary for the Accounts system. | |
| """ | |
| import Ecto.{Query, Changeset}, warn: false | |
| alias Foo.Repo | |
| alias Foo.Accounts.User | |
| @doc """ | |
| Returns the list of users. | |
| ## Examples | |
| iex> list_users() | |
| [%User{}, ...] | |
| """ | |
| def list_users do | |
| Repo.all(User) | |
| end | |
| @doc """ | |
| Gets a single user. | |
| Raises `Ecto.NoResultsError` if the User does not exist. | |
| ## Examples | |
| iex> get_user!(123) | |
| %User{} | |
| iex> get_user!(456) | |
| ** (Ecto.NoResultsError) | |
| """ | |
| def get_user!(id), do: Repo.get!(User, id) | |
| @doc """ | |
| Creates a user. | |
| ## Examples | |
| iex> create_user(%{field: value}) | |
| {:ok, %User{}} | |
| iex> create_user(%{field: bad_value}) | |
| {:error, %Ecto.Changeset{}} | |
| """ | |
| def create_user(attrs \\ %{}) do | |
| %User{} | |
| |> user_changeset(attrs) | |
| |> Repo.insert() | |
| end | |
| @doc """ | |
| Updates a user. | |
| ## Examples | |
| iex> update_user(user, %{field: new_value}) | |
| {:ok, %User{}} | |
| iex> update_user(user, %{field: bad_value}) | |
| {:error, %Ecto.Changeset{}} | |
| """ | |
| def update_user(%User{} = user, attrs) do | |
| user | |
| |> user_changeset(attrs) | |
| |> Repo.update() | |
| end | |
| @doc """ | |
| Deletes a User. | |
| ## Examples | |
| iex> delete_user(user) | |
| {:ok, %User{}} | |
| iex> delete_user(user) | |
| {:error, %Ecto.Changeset{}} | |
| """ | |
| def delete_user(%User{} = user) do | |
| Repo.delete(user) | |
| end | |
| @doc """ | |
| Returns an `%Ecto.Changeset{}` for tracking user changes. | |
| ## Examples | |
| iex> change_user(user) | |
| %Ecto.Changeset{source: %User{}} | |
| """ | |
| def change_user(%User{} = user) do | |
| user_changeset(user, %{}) | |
| end | |
| defp user_changeset(%User{} = user, attrs) do | |
| user | |
| |> cast(attrs, [:email, :name]) | |
| |> validate_required([:email, :name]) | |
| end | |
| end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment