Current section
Files
Jump to
Current section
Files
lib/exdgraph/query.ex
defmodule ExDgraph.Query do
@moduledoc """
Provides the functions for the callbacks from the DBConnection behaviour.
"""
alias ExDgraph.{Exception, QueryStatement, Transform}
@doc false
def query(conn, statement) do
case query_commit(conn, statement) do
{:error, f} -> {:error, code: Map.get(f, :code, Map.get(f, :status)), message: f.message}
r -> {:ok, r}
end
end
@doc false
def query!(conn, statement) do
case query(conn, statement) do
{:ok, r} ->
r
{:error, code: code, message: message} ->
raise Exception, code: code, message: message
end
end
defp query_commit(conn, statement) do
exec = fn conn ->
q = %QueryStatement{statement: statement}
case DBConnection.execute(conn, q, %{}) do
{:ok, resp} -> Transform.transform_query(resp)
other -> other
end
end
DBConnection.run(conn, exec, run_opts())
end
defp run_opts do
[pool: ExDgraph.config(:pool), timeout: ExDgraph.config(:timeout)]
end
end