Packages

This library is a summary of the functions that are generally required for Web service development.

Current section

Files

Jump to
materia lib materia_web controllers account_controller.ex
Raw

lib/materia_web/controllers/account_controller.ex

defmodule MateriaWeb.AccountController do
use MateriaWeb, :controller
alias Materia.Accounts
alias Materia.Accounts.Account
alias MateriaWeb.ControllerBase
action_fallback MateriaWeb.FallbackController
def index(conn, _params) do
accounts = Accounts.list_accounts()
render(conn, "index.json", accounts: accounts)
end
def list_accounts_by_params(conn, params) do
accounts = Accounts.list_accounts_by_params(params)
render(conn, "index.json", accounts: accounts)
end
def create(conn, account_params) do
with {:ok, %Account{} = account} <-Accounts.create_account(account_params) do
conn
|> put_status(:created)
|> put_resp_header("location", account_path(conn, :show, account))
|> render("show.json", account: account)
end
end
def show(conn, %{"id" => id}) do
account = Accounts.get_account!(id)
render(conn, "show.json", account: account)
end
def show_my_account(conn, _params) do
id = ControllerBase.get_account_id(conn)
account = Accounts.get_account!(id)
render(conn, "show.json", account: account)
end
def update(conn, account_params) do
account = Accounts.get_account!(account_params["id"])
with {:ok, %Account{} = account} <- Accounts.update_account(account, account_params) do
render(conn, "show.json", account: account)
end
end
def delete(conn, %{"id" => id}) do
account = Accounts.get_account!(id)
with {:ok, %Account{}} <- Accounts.delete_account(account) do
send_resp(conn, :no_content, "")
end
end
end