Packages

EctoRawSQLHelpers aims to improve raw SQL support in Ecto by providing helper functions, such as: - Named parameters support - Response parsing (getting query results as lists of maps, number of rows affected on statements, etc) - Stream support for dealing with big result sets

Current section

Files

Jump to
ecto_raw_sql_helpers lib internals database_response_parser.ex
Raw

lib/internals/database_response_parser.ex

defmodule EctoRawSQLHelpers.DatabaseResponseParser do
alias EctoRawSQLHelpers.Helpers
def rows_as_maps({:ok, %{columns: columns, rows: rows}}, options) do
rows
|> Stream.map(&convert_row_to_map(&1, columns, options))
end
def rows_as_maps(anything_else, _options) do
anything_else
end
def number_of_affected_rows({:ok, %{num_rows: rows}}) do
rows
end
def number_of_affected_rows(anything_else) do
anything_else
end
def convert_row_to_map(row, columns, options) do
columns
|> Enum.map(&Helpers.string_to_atom_if_enabled(&1, options))
|> Enum.zip(row)
|> Enum.into(%{})
end
end