Ecto v3.0.6 Ecto.Adapter.Schema behaviour View Source

Specifies the schema API required from adapters.

Link to this section Summary

Types

Proxy type to the adapter meta

Ecto.Schema metadata fields

Callbacks

Called to autogenerate a value for id/embed_id/binary_id

Deletes a single struct with the given filters

Updates a single struct with the given filters

Link to this section Types

Proxy type to the adapter meta

Link to this type constraints() View Source
constraints() :: Keyword.t()
Link to this type on_conflict() View Source
on_conflict() ::
  {:raise, list(), []}
  | {:nothing, list(), [atom()]}
  | {[atom()], list(), [atom()]}
  | {Ecto.Query.t(), list(), [atom()]}
Link to this type returning() View Source
returning() :: [atom()]
Link to this type schema_meta() View Source
schema_meta() :: %{
  autogenerate_id:
    {schema_field :: atom(), source_field :: atom(), Ecto.Type.t()},
  context: term(),
  prefix: binary() | nil,
  schema: atom(),
  source: binary()
}

Ecto.Schema metadata fields

Link to this section Callbacks

Link to this callback autogenerate(field_type) View Source
autogenerate(field_type :: :id | :binary_id | :embed_id) :: term() | nil

Called to autogenerate a value for id/embed_id/binary_id.

Returns the autogenerated value, or nil if it must be autogenerated inside the storage or raise if not supported.

Link to this callback delete(adapter_meta, schema_meta, filters, options) View Source
delete(adapter_meta(), schema_meta(), filters(), options()) ::
  {:ok, fields()} | {:invalid, constraints()} | {:error, :stale}

Deletes a single struct with the given filters.

While filters can be any record column, it is expected that at least the primary key (or any other key that uniquely identifies an existing record) be given as a filter. Therefore, in case there is no record matching the given filters, {:error, :stale} is returned.

Link to this callback insert(adapter_meta, schema_meta, fields, on_conflict, returning, options) View Source
insert(
  adapter_meta(),
  schema_meta(),
  fields(),
  on_conflict(),
  returning(),
  options()
) :: {:ok, fields()} | {:invalid, constraints()}

Inserts a single new struct in the data store.

Autogenerate

The primary key will be automatically included in returning if the field has type :id or :binary_id and no value was set by the developer or none was autogenerated by the adapter.

Link to this callback insert_all(adapter_meta, schema_meta, header, list, on_conflict, returning, options) View Source
insert_all(
  adapter_meta(),
  schema_meta(),
  header :: [atom()],
  [[{atom(), term() | {Ecto.Query.t(), list()}}]],
  on_conflict(),
  returning(),
  options()
) :: {integer(), [[term()]] | nil}

Inserts multiple entries into the data store.

In case an Ecto.Query given as any of the field values by the user, it will be sent to the adapter as a tuple with in the shape of {query, params}.

Link to this callback update(adapter_meta, schema_meta, fields, filters, returning, options) View Source
update(
  adapter_meta(),
  schema_meta(),
  fields(),
  filters(),
  returning(),
  options()
) :: {:ok, fields()} | {:invalid, constraints()} | {:error, :stale}

Updates a single struct with the given filters.

While filters can be any record column, it is expected that at least the primary key (or any other key that uniquely identifies an existing record) be given as a filter. Therefore, in case there is no record matching the given filters, {:error, :stale} is returned.