Current section
Files
Jump to
Current section
Files
lib/pacuare.ex
defmodule Pacuare do
@moduledoc """
An Elixir client for the [Pacuare](https://pacuare.dev) API.
"""
defstruct [:api_key, :req]
@type t() :: %__MODULE__{api_key: String.t(), req: Req.Request.t()}
@doc """
Create a client.
## Examples
iex> Pacuare.new("your_api_key")
{:ok, %Pacuare{api_key: "your_api_key"}}
"""
@spec new(String.t(), String.t()) :: Pacuare.t()
def new(api_key, base \\ "https://api.pacuare.dev/v1") do
%Pacuare{
api_key: api_key,
req: Req.new(base_url: base, headers: %{authorization: "Bearer #{api_key}"})
}
end
@doc """
Query from the Pacuare dataset.
"""
@spec query(Pacuare.t(), String.t(), list(any())) :: {:ok, Explorer.DataFrame.t()}
def query(client, sql, params) do
%Pacuare{req: req} = client
{:ok, resp} = Req.post(req, url: "/query", json: %{query: sql, params: params})
res = %Pacuare.Result{columns: resp.body["columns"], values: resp.body["values"]}
{:ok, Explorer.DataFrame.new(res)}
end
end