View Source Ecto.Adapters.SQL.Connection behaviour (Ecto SQL v3.12.0)
Specifies the behaviour to be implemented by all SQL connections.
Summary
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.
Executes a cached 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
.
Prepares and executes the given query with DBConnection
.
Runs the given statement as a query.
Runs the given statement as a multi-result 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.
Types
@type cached() :: map()
The cached query which is a DBConnection Query
@type connection() :: DBConnection.conn()
@type name() :: String.t()
The query name
@type params() :: [term()]
@type statement() :: String.t()
The SQL statement
Callbacks
@callback all(query :: Ecto.Query.t()) :: iodata()
Receives a query and must return a SELECT query.
@callback child_spec(options :: Keyword.t()) :: :supervisor.child_spec() | {module(), Keyword.t()}
Receives options and returns DBConnection
supervisor child
specification.
@callback ddl_logs(result :: term()) :: [ {Logger.level(), Logger.message(), Logger.metadata()} ]
Receives a query result and returns a list of logs.
@callback delete( prefix :: String.t(), table :: String.t(), filters :: [atom()], returning :: [atom()] ) :: iodata()
Returns a DELETE for the filters
returning the given returning
.
@callback delete_all(query :: Ecto.Query.t()) :: iodata()
Receives a query and must return a DELETE query.
@callback execute(connection(), cached(), params(), options :: Keyword.t()) :: {:ok, cached(), term()} | {:ok, term()} | {:error | :reset, Exception.t()}
Executes a cached query.
@callback execute_ddl(command :: Ecto.Adapter.Migration.command()) :: String.t() | [iodata()]
Receives a DDL command and returns a query that executes it.
@callback 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.
insert(prefix, table, header, rows, on_conflict, returning, placeholders)
View Source@callback 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
.
@callback prepare_execute( connection(), name(), statement(), params(), options :: Keyword.t() ) :: {:ok, cached(), term()} | {:error, Exception.t()}
Prepares and executes the given query with DBConnection
.
@callback query(connection(), statement(), params(), options :: Keyword.t()) :: {:ok, term()} | {:error, Exception.t()}
Runs the given statement as a query.
@callback query_many(connection(), statement(), params(), options :: Keyword.t()) :: {:ok, term()} | {:error, Exception.t()}
Runs the given statement as a multi-result query.
@callback stream(connection(), statement(), params(), options :: Keyword.t()) :: Enum.t()
Returns a stream that prepares and executes the given query with
DBConnection
.
Returns a queryable to check if the given table
exists.
@callback 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.
@callback 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
.
@callback update_all(query :: Ecto.Query.t()) :: iodata()
Receives a query and values to update and must return an UPDATE query.