Packages

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

Current section

Files

Jump to
servicex_matching lib servicex_matching_web controller_base.ex
Raw

lib/servicex_matching_web/controller_base.ex

defmodule Servicex.ControllerBase do
alias AppExUtils.Json.ErrorHelper
alias Ecto.Multi
require Logger
def transaction_flow(conn, controler_atom, module, function_atom, attr \\ [%{}]) do
repo = Application.get_env(:servicex, :repo)
with {:ok, result} <- Multi.new
|> Multi.run(function_atom, module, function_atom, attr)
|> repo.transaction() do
result_map = Map.new([{controler_atom, result[function_atom]}])
conn
|> Plug.Conn.put_status(:created)
|> Phoenix.Controller.render("show.json", result_map)
end
end
def update_flow(conn, controler_atom, module, function_atom, struct, attr \\ %{}) do
repo = Application.get_env(:servicex, :repo)
with {:ok, result} <- Multi.new
|> Multi.run(function_atom, module, function_atom, [struct, attr])
|> repo.transaction() do
result_map = Map.new([{controler_atom, result[function_atom]}])
conn
|> Plug.Conn.put_status(:created)
|> Phoenix.Controller.render("show.json", result_map)
end
end
end