Ecto.Adapter.Schema поведение
Исходный кодОпределяет API схемы, необходимый адаптерам.
Краткое описание
- adapter_meta()
Тип-прокси для метаданных адаптера
- schema_meta()
Поля метаданных Ecto.Schema
Типы
- autogenerate(field_type)
Вызывается для автоматической генерации значения id/embed_id/binary_id.
- delete(adapter_meta, schema_meta, filters, returning, options)
Удаляет одну структуру по заданным фильтрам.
- insert(adapter_meta, schema_meta, fields, on_conflict, returning, options)
Добавляет одну новую структуру в хранилище данных.
- insert_all(adapter_meta, schema_meta, header, list, on_conflict, returning, placeholders, options)
Добавляет несколько записей в хранилище данных.
- update(adapter_meta, schema_meta, fields, filters, returning, options)
Обновляет одну структуру по заданным фильтрам.
Обратные вызовы
Типы
adapter_meta()Исходный код
@type adapter_meta() :: Ecto.Adapter.adapter_meta()
Тип-прокси для метаданных адаптера
constraints()Исходный код
@type constraints() :: Keyword.t()
fields()Исходный код
@type fields() :: Keyword.t()
filters()Исходный код
@type filters() :: Keyword.t()
on_conflict()Исходный код
@type on_conflict() ::
{:raise, list(), []}
| {:nothing, list(), [atom()]}
| {[atom()], list(), [atom()]}
| {Ecto.Query.t(), list(), [atom()]} options()Исходный код
@type options() :: Keyword.t()
placeholders()Исходный код
@type placeholders() :: [term()]
returning()Исходный код
@type returning() :: [atom()]
schema_meta()Исходный код
@type schema_meta() :: %{
autogenerate_id:
{schema_field :: atom(), source_field :: atom(), Ecto.Type.t()},
context: term(),
prefix: binary() | nil,
schema: atom(),
source: binary()
} Поля метаданных Ecto.Schema
Обратные вызовы
autogenerate(field_type)Исходный код
@callback autogenerate(field_type :: :id | :binary_id | :embed_id) :: term() | nil
Вызывается для автоматической генерации значения id/embed_id/binary_id.
Возвращает сгенерированное значение или nil, если оно должно быть сгенерировано в хранилище, либо вызывает исключение, если эта возможность не поддерживается.
delete(adapter_meta, schema_meta, filters, returning, options)Исходный код
@callback delete(adapter_meta(), schema_meta(), filters(), returning(), options()) ::
{:ok, fields()} | {:invalid, constraints()} | {:error, :stale} Удаляет одну структуру по заданным фильтрам.
Хотя filters может быть любым столбцом записи, ожидается, что в качестве фильтра будет указан как минимум первичный ключ (или любой другой ключ, уникально идентифицирующий существующую запись). Поэтому, если запись, соответствующая заданным фильтрам, отсутствует, возвращается {:error, :stale}.
insert(adapter_meta, schema_meta, fields, on_conflict, returning, options)Исходный код
@callback insert(
adapter_meta(),
schema_meta(),
fields(),
on_conflict(),
returning(),
options()
) ::
{:ok, fields()} | {:invalid, constraints()} Добавляет одну новую структуру в хранилище данных.
Автоматическая генерация
Первичный ключ будет автоматически включён в returning, если поле имеет тип :id или :binary_id и разработчик не задал значение либо адаптер не сгенерировал его.
insert_all(adapter_meta, schema_meta, header, list, on_conflict, returning, placeholders, options)Исходный код
@callback insert_all(
adapter_meta(),
schema_meta(),
header :: [atom()],
[[{atom(), term() | {Ecto.Query.t(), list()}}]],
on_conflict(),
returning(),
placeholders(),
options()
) :: {non_neg_integer(), [[term()]] | nil} Добавляет несколько записей в хранилище данных.
Если пользователь передаст Ecto.Query в качестве одного из значений поля, оно будет передано адаптеру в виде кортежа формата {query, params}.
update(adapter_meta, schema_meta, fields, filters, returning, options)Исходный код
@callback update(
adapter_meta(),
schema_meta(),
fields(),
filters(),
returning(),
options()
) ::
{:ok, fields()} | {:invalid, constraints()} | {:error, :stale} Обновляет одну структуру по заданным фильтрам.
Хотя filters может быть любым столбцом записи, ожидается, что в качестве фильтра будет указан как минимум первичный ключ (или любой другой ключ, уникально идентифицирующий существующую запись). Поэтому, если запись, соответствующая заданным фильтрам, отсутствует, возвращается {:error, :stale}.
© 2014 Chris McCord
Licensed under the MIT License.
https://ecto.hexdocs.pm/Ecto.Adapter.Schema.html