Ecto SQL v3.0.4 Ecto.Adapters.SQL.Connection behaviour 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

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

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

The cached query which is a DBConnection Query

The query name

Link to this type params() View Source
params() :: [term()]
Link to this type statement() View Source
statement() :: String.t()

The SQL statement

Link to this section Callbacks

Receives a query and must return a SELECT query.

Link to this callback child_spec(options) View Source
child_spec(options :: Keyword.t()) :: {module(), Keyword.t()}

Receives options and returns DBConnection supervisor child specification.

Link to this callback ddl_logs(result) View Source
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
delete(
  prefix :: String.t(),
  table :: String.t(),
  filters :: [atom()],
  returning :: [atom()]
) :: iodata()

Returns a DELETE for the filters returning the given returning.

Link to this callback delete_all(query) View Source
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
execute(connection(), cached(), params(), options :: Keyword.t()) ::
  {:ok, cached(), term()} | {:ok, term()} | {:error | :reset, Exception.t()}

Executes a cached query.

Link to this callback execute_ddl(command) View Source
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 insert(prefix, table, header, rows, on_conflict, returning) View Source
insert(
  prefix :: String.t(),
  table :: String.t(),
  header :: [atom()],
  rows :: [[atom() | nil]],
  on_conflict :: Ecto.Adapter.on_conflict(),
  returning :: [atom()]
) :: 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
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
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
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 to_constraints(exception) View Source
to_constraints(exception :: Exception.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
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.

Link to this callback update_all(query) View Source
update_all(query :: Ecto.Query.t()) :: iodata()

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