Current section
Files
Jump to
Current section
Files
lib/adbc_result.ex
defmodule Adbc.Result do
@moduledoc """
A struct returned as result from queries.
It has two fields:
* `:data` - a list of `Adbc.Column`
* `:num_rows` - the number of rows returned, if returned
by the database
"""
defstruct [:num_rows, :data]
@type t :: %Adbc.Result{
num_rows: non_neg_integer() | nil,
data: [%Adbc.Column{}]
}
@doc """
Returns a map of columns as a result.
"""
def to_map(%Adbc.Result{data: data}) do
Map.new(data, fn %Adbc.Column{name: name, type: type, data: data} ->
case type do
:list -> {name, Enum.map(data, &list_to_map/1)}
_ -> {name, data}
end
end)
end
defp list_to_map(%Adbc.Column{name: name, type: type, data: data}) do
case type do
:list ->
list = Enum.map(data, &list_to_map/1)
if name == "item" do
list
else
{name, list}
end
_ ->
if name == "item" do
data
else
{name, data}
end
end
end
end