Instream v0.11.0 Instream.Connection behaviour

Connection (pool) definition.

All database connections will be made using a user-defined extension of this module.

Example Module

defmodule MyConnection do
  use Instream.Connection, otp_app: :my_application
end

Example Configuration

config :my_application, MyConnection,
  auth:      [ method: :basic, username: "root", password: "root" ]
  hosts:     [ "primary.example.com", "secondary.example.com" ],
  http_opts: [ insecure: true, proxy: "http://company.proxy" ],
  loggers:   [{ LogModule, :log_fun, [ :additional, :args ] }],
  password:  "pass",
  pool:      [ max_overflow: 10, size: 5 ],
  port:      8086,
  scheme:    "http",
  username:  "user"

Summary

Callbacks

Sends a log entry to all configured loggers

Returns the (internal) pool module

Returns a supervisable pool child_spec

Returns the connection configuration

Executes a query

Pings a server in the connected cluster

Executes a reading query

Checks the status of a connection (= cluster)

Executes a writing query

Types

Callbacks

__log__(log_entry)

Specs

__log__(log_entry) :: log_entry

Sends a log entry to all configured loggers.

__pool__()

Specs

__pool__ :: module

Returns the (internal) pool module.

child_spec()

Specs

child_spec :: Supervisor.Spec.spec

Returns a supervisable pool child_spec.

config()

Specs

config :: Keyword.t

Returns the connection configuration.

execute(query, opts)

Specs

execute(query :: query_type, opts :: Keyword.t) :: any

Executes a query.

Passing [async: true] in the options always returns :ok. The command will be executed asynchronously.

ping(host, opts)

Specs

ping(host :: String.t, opts :: Keyword.t) ::
  :pong |
  :error

Pings a server in the connected cluster.

By default the first server in your connection configuration will be pinged.

The server passed does not necessarily need to be a member of your cluster. Only the connection details (scheme, port, …) will be used to determine the exact url to send the ping request to.

query(query, opts)

Specs

query(query :: String.t, opts :: Keyword.t) :: any

Executes a reading query.

See Instream.Connection.execute/2 and Instream.Data.Read.query/2 for a complete list of available options.

status(opts)

Specs

status(opts :: Keyword.t) :: :ok | :error

Checks the status of a connection (= cluster).

write(payload, opts)

Specs

write(payload :: map | [map], opts :: Keyword.t) :: any

Executes a writing query.

See Instream.Connection.execute/2 and Instream.Data.Write.query/2 for a complete list of available options.