Packages

A terminal-based todo app that uses Elixir and Fauna. You can use this as a reference for how to access and use Fauna in your projects.

Current section

Files

Jump to
faunadoo lib faunadoo.ex
Raw

lib/faunadoo.ex

defmodule Faunadoo do
alias HTTPoison
def query(fql_expression, key) do
url = "https://db.fauna.com/query/1"
headers = [
{"accept", "application/json, text/plain, */*"},
{"authorization", "Bearer #{key}"},
{"x-format", "simple"},
{"x-typecheck", "false"}
]
body = %{
"query" => fql_expression,
"arguments" => %{}
}
case HTTPoison.post(url, Jason.encode!(body), headers, hackney: [ssl: [{:versions, '[tlsv1.2]'}]]) do
{:ok, %{status_code: 200, body: response_body}} ->
{:ok, decode_response(response_body)}
{:error, reason} ->
{:error, "Failed to execute query: #{reason}"}
end
end
defp decode_response(body) do
{:ok, Jason.decode!(body)["data"]}
end
end