Packages
servicex_matching
0.0.1
This library is a summary of the functions that are generally required for Matching Web service development.
Current section
Files
Jump to
Current section
Files
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