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 adapter_sql_executor.ex
Raw

lib/internals/adapter_sql_executor.ex

defmodule EctoRawSQLHelpers.AdapterSQLExecutor do
alias EctoRawSQLHelpers.NamedParameterTranslator
def adapter_query(repo_or_pid, sql, params \\ [], opts \\ [])
def adapter_query(repo_or_pid, sql, params, opts) when is_map(params) do
{sql, params} = get_database_adapter(repo_or_pid)
|> NamedParameterTranslator.translate_named_parameters(sql, params, opts)
adapter_query(repo_or_pid, sql, params, opts)
end
def adapter_query(repo_or_pid, sql, params, opts) do
{adapter_sql_function, opts} = Keyword.pop(opts, :adapter_sql_function, &Ecto.Adapters.SQL.query/4)
adapter_sql_function.(repo_or_pid, sql, params, opts)
end
defp get_database_adapter(repo_module) when is_atom(repo_module) do
repo_module.__adapter__()
end
defp get_database_adapter(repo_pid) when is_pid(repo_pid) do
Ecto.Adapter.lookup_meta(repo_pid).repo.__adapter__()
end
end