Ecto.Adapters.SQL.Connection behaviour (Ecto SQL v3.7.0) View Source

Specifies the behaviour to be implemented by all SQL connections.

Link to this section Summary

Types

The cached query which is a DBConnection Query

The query name

The SQL statement

Callbacks

Receives a query and must return a SELECT query.

Receives options and returns DBConnection supervisor child specification.

Receives a query result and returns a list of logs.

Returns a DELETE for the filters returning the given returning.

Receives a query and must return a DELETE query.

Receives a DDL command and returns a query that executes it.

Executes an EXPLAIN query or similar depending on the adapter to obtains statistics of the given query.

Returns an INSERT for the given rows in table returning the given returning.

Runs the given statement as query.

Returns a stream that prepares and executes the given query with DBConnection.

Returns a queryable to check if the given table exists.

Receives the exception returned by query/4.

Returns an UPDATE for the given fields in table filtered by filters returning the given returning.

Receives a query and values to update and must return an UPDATE query.

Link to this section Types

Specs

cached() :: map()

The cached query which is a DBConnection Query

Specs

connection() :: DBConnection.conn()

Specs

name() :: String.t()

The query name

Specs

params() :: [term()]

Specs

statement() :: String.t()

The SQL statement

Link to this section Callbacks

Specs

all(query :: Ecto.Query.t()) :: iodata()

Receives a query and must return a SELECT query.

Specs

child_spec(options :: Keyword.t()) :: {module(), Keyword.t()}

Receives options and returns DBConnection supervisor child specification.

Specs

ddl_logs(result :: term()) :: [
  {Logger.level(), Logger.message(), Logger.metadata()}
]

Receives a query result and returns a list of logs.

Link to this callback

delete(prefix, table, filters, returning)

View Source

Specs

delete(
  prefix :: String.t(),
  table :: String.t(),
  filters :: [atom()],
  returning :: [atom()]
) :: iodata()

Returns a DELETE for the filters returning the given returning.

Specs

delete_all(query :: Ecto.Query.t()) :: iodata()

Receives a query and must return a DELETE query.

Link to this callback

execute(connection, cached, params, options)

View Source

Specs

execute(connection(), cached(), params(), options :: Keyword.t()) ::
  {:ok, cached(), term()} | {:ok, term()} | {:error | :reset, Exception.t()}

Executes a cached query.

Specs

execute_ddl(command :: Ecto.Adapter.Migration.command()) ::
  String.t() | [iodata()]

Receives a DDL command and returns a query that executes it.

Link to this callback

explain_query(connection, query, params, opts)

View Source

Specs

explain_query(
  connection(),
  query :: String.t(),
  params :: Keyword.t(),
  opts :: Keyword.t()
) :: {:ok, term()} | {:error, Exception.t()}

Executes an EXPLAIN query or similar depending on the adapter to obtains statistics of the given query.

Receives the connection, query, params for the query, and all opts including those related to the EXPLAIN statement and shared opts.

Must execute the explain query and return the result.

Link to this callback

insert(prefix, table, header, rows, on_conflict, returning, placeholders)

View Source

Specs

insert(
  prefix :: String.t(),
  table :: String.t(),
  header :: [atom()],
  rows :: [[atom() | nil]],
  on_conflict :: Ecto.Adapter.Schema.on_conflict(),
  returning :: [atom()],
  placeholders :: [term()]
) :: iodata()

Returns an INSERT for the given rows in table returning the given returning.

Link to this callback

prepare_execute(connection, name, statement, params, options)

View Source

Specs

prepare_execute(
  connection(),
  name(),
  statement(),
  params(),
  options :: Keyword.t()
) :: {:ok, cached(), term()} | {:error, Exception.t()}

Prepares and executes the given query with DBConnection.

Link to this callback

query(connection, statement, params, options)

View Source

Specs

query(connection(), statement(), params(), options :: Keyword.t()) ::
  {:ok, term()} | {:error, Exception.t()}

Runs the given statement as query.

Link to this callback

stream(connection, statement, params, options)

View Source

Specs

stream(connection(), statement(), params(), options :: Keyword.t()) :: Enum.t()

Returns a stream that prepares and executes the given query with DBConnection.

Link to this callback

table_exists_query(table)

View Source

Specs

table_exists_query(table :: String.t()) :: {iodata(), [term()]}

Returns a queryable to check if the given table exists.

Link to this callback

to_constraints(exception, options)

View Source

Specs

to_constraints(exception :: Exception.t(), options :: Keyword.t()) ::
  Keyword.t()

Receives the exception returned by query/4.

The constraints are in the keyword list and must return the constraint type, like :unique, and the constraint name as a string, for example:

[unique: "posts_title_index"]

Must return an empty list if the error does not come from any constraint.

Link to this callback

update(prefix, table, fields, filters, returning)

View Source

Specs

update(
  prefix :: String.t(),
  table :: String.t(),
  fields :: [atom()],
  filters :: [atom()],
  returning :: [atom()]
) :: iodata()

Returns an UPDATE for the given fields in table filtered by filters returning the given returning.

Specs

update_all(query :: Ecto.Query.t()) :: iodata()

Receives a query and values to update and must return an UPDATE query.