# This code has been auto-generated # Changes to this file will be lost on next generation defmodule <%= @module_name %> do @moduledoc """ This module contains functions to parse output from db's stored procedure's calls """ require Logger def <%= @parse_function_name %>({:error, reason} = err) do Logger.error("Error occured while calling stored procedure", procedure: "<%= @function_name %>", reason: inspect(reason)) err end def <%= @parse_function_name %>({:ok, %Postgrex.Result{rows: rows}}) do Logger.debug("Parsing successful response from database") parsed_results = rows |> Enum.map(&<%= @parse_function_name_result_row %>/1) # todo: Handle rows that could not be parsed successful_results = parsed_results |> Enum.filter(&(elem(&1, 0) == :ok)) |> Enum.map(&(elem(&1, 1))) {:ok, successful_results} end def <%= @parse_function_name_result_row %>([<%= @output_params %>]) do { :ok, <%= if @routine_has_complex_data do %> %<%= @routine_result_item_module_name %>{ <%= for {%{name: param}, index} <- @output_routine_params |> Enum.with_index() do %> <%= param %>: <%= param %><%= if index != Enum.count(@output_routine_params) do %>, <% end %> <% end %> } <% else %> <%= @output_params %> <% end %> } end def <%= @parse_function_name_result_row %>(unknown_row) do Logger.warn("Found result row that does not have valid number of columns" <%= if @include_sensitive_data do %> , unknown_row: unknown_row <% end %> ) {:error, :einv_columns} end end