README.md

# ReqTrino

[Req](https://github.com/wojtekmach/req) plugin for [Trino](https://trino.io/).

ReqTrino makes it easy to make Trino queries. Query results are decoded into the `ReqTrino.Result` struct.
The struct implements the `Table.Reader` protocol and thus can be efficiently traversed by rows or columns.

*This is a project that was created based on the code from ReqAthena.*

We only supports Basic Authentication!


## Usage

```elixir
Mix.install([
  {:req, "~> 0.3.5"},
  {:req_trino, "~> 0.1.0"}
])

opts = [
  host: my.trino.host,
  user: trino_user,
  password: *******,
  catalog: "raw"
]

req = Req.new() |> ReqTrino.attach(opts)

query = \"""
SHOW TABLES FROM system.runtime;
\"""

Req.post!(req, trino: query).body
#=>
# %ReqTrino.Result{
#   columns: [],
#   query_id: "a034610b-daaf-4c8d-aa61-d1a706231062",
#   rows: [],
#   statement_name: nil
# }

# With plain string query
query = "SELECT id, type, tags, members, timestamp, visible FROM planet WHERE id = 470454 and type = 'relation'"

Req.post!(req, trino: query).body
#=>
# %ReqTrino.Result{
#   columns: ["id", "type", "tags", "members", "timestamp", "visible"],
#   query_id: "c594d5df-9879-4bf7-8796-780e0b87a673",
#   rows: [
#     [470454, "relation",
#      "{ref=17229A, site=geodesic, name=Mérignac A, source=©IGN 2010 dans le cadre de la cartographie réglementaire, type=site, url=http://geodesie.ign.fr/fiches/index.php?module=e&action=fichepdf&source=carte&sit_no=17229A, network=NTF-5}",
#      "[{type=node, ref=670007839, role=}, {type=node, ref=670007840, role=}]",
#      ~N[2017-01-21 12:51:34.000], true]
#   ],
#   statement_name: nil
# }
```