Spec-Zone.ru › Phoenix

Ecto.Adapter.Queryable поведение

Исходный код

Определяет API запросов, который требуется от адаптеров.

Если ваш адаптер может обрабатывать только одну или несколько функций запросов, добавьте собственные реализации этих функций непосредственно в Repo, используя вместо этого Ecto.Adapter.__before_compile__/1.

Сводка

Типы

adapter_meta()

Прокси-тип для метаданных адаптера

cached()
options()
prepared()
query_cache()

Метаданные запроса, передаваемые в execute/5, для кеширования.

query_meta()

Поля метаданных Ecto.Query (хранятся в кеше)

selected()

Обратные вызовы

execute(adapter_meta, query_meta, query_cache, params, options)

Выполняет предварительно подготовленный запрос.

prepare(atom, query)

Команды, вызываемые для подготовки запроса.

stream(adapter_meta, query_meta, query_cache, params, options)

Передаёт поток предварительно подготовленного запроса.

Функции

plan_query(operation, adapter, queryable)

Планирует запрос с помощью указанного адаптера.

prepare_query(operation, repo_name_or_pid, queryable, opts \\ [])

Планирует и подготавливает запрос для указанного репозитория, используя его кеш запросов.

Типы

adapter_meta()Исходный код

@type adapter_meta() :: Ecto.Adapter.adapter_meta()

Прокси-тип для метаданных адаптера

cached()Исходный код

@type cached() :: term()

options()Исходный код

@type options() :: Keyword.t()

prepared()Исходный код

@type prepared() :: term()

query_cache()Исходный код

@type query_cache() ::
  {:nocache, prepared()}
  | {:cache, cache_function :: (cached() -> :ok), prepared()}
  | {:cached, update_function :: (cached() -> :ok),
     reset_function :: (prepared() -> :ok), cached()}

Метаданные запроса, передаваемые в execute/5, для кеширования.

Кеш может находиться в одном из 3 состояний, описанных ниже.

Если задано {:nocache, prepared}, это означает, что запрос не был и не может быть закеширован. Значение prepared — это значение, возвращённое prepare/2.

Если задано {:cache, cache_function, prepared}, это означает, что запрос можно кешировать и его необходимо закешировать, вызвав функцию cache_function с выбранной вами записью кеша. После вызова cache_function при следующей передаче того же запроса в execute/5 он получит кортеж :cached.

Если задано {:cached, update_function, reset_function, cached}, это означает, что запрос уже закеширован. При необходимости обновить закешированный результат можно вызвать update_function/1. Также можно вызвать reset_function/1 с новым подготовленным запросом, чтобы принудительно закешировать запрос заново. Если вызвано reset_function/1, при следующей передаче того же запроса в execute/5 он получит кортеж :cache.

query_meta()Исходный код

@type query_meta() :: %{sources: tuple(), preloads: term(), select: map()}

Поля метаданных Ecto.Query (хранятся в кеше)

selected()Исходный код

@type selected() :: term()

Обратные вызовы

execute(adapter_meta, query_meta, query_cache, params, options)Исходный код

@callback execute(
  adapter_meta(),
  query_meta(),
  query_cache(),
  params :: list(),
  options()
) ::
  {non_neg_integer(), [[selected()]] | nil}

Выполняет предварительно подготовленный запрос.

Поле query_meta — это карта, содержащая некоторые поля структуры Ecto.Query после нормализации. Например, значения selected запросом, которые затем необходимо вернуть, можно найти в query_meta.

query_cache и его состояние описаны в query_cache/0.

params — это список параметров запроса. Например, для запроса вида from Post, where: [id: ^123] значение params будет равно [123].

Наконец, options — это список ключевых слов с параметрами, переданными операции Repo, которая инициировала вызов адаптера. Допускается любой параметр: это механизм, позволяющий пользователям Ecto настраивать поведение адаптера для каждой операции.

Функция должна возвращать кортеж, содержащий количество записей и набор результатов в виде списка списков. Содержимое записей в самом списке зависит от того, что было выбрано запросом. Набор результатов также может быть nil, если никакие значения не выбираются.

prepare(atom, query)Исходный код

@callback prepare(atom :: :all | :update_all | :delete_all, query :: Ecto.Query.t()) ::
  {:cache, prepared()} | {:nocache, prepared()}

Команды, вызываемые для подготовки запроса.

Используется в Ecto.Repo.all/2, Ecto.Repo.update_all/3 и Ecto.Repo.delete_all/2. Возвращает кортеж, указывающий, можно ли кешировать этот запрос, и запрос prepared. Запрос prepared — это любой термин, который будет передан адаптеру в execute/5.

stream(adapter_meta, query_meta, query_cache, params, options)Исходный код

@callback stream(adapter_meta(), query_meta(), query_cache(), params :: list(), options()) ::
  Enumerable.t()

Передаёт поток предварительно подготовленного запроса.

Описание аргументов см. в execute/5.

Возвращает поток значений.

Функции

plan_query(operation, adapter, queryable)Исходный код

Планирует запрос с помощью указанного адаптера.

Для этой функции не требуется репозиторий, поэтому кеш не используется.

prepare_query(operation, repo_name_or_pid, queryable, opts \\ [])Исходный код

Планирует и подготавливает запрос для указанного репозитория, используя его кеш запросов.

Эта операция использует кеш запросов, если он доступен, кроме случаев, когда в качестве параметра передано query_cache: false: тогда кеш запросов не используется.

Пакет Hex Предпросмотр Hex Просмотреть llms.txt Скачать версию ePub

Создано с помощью ExDoc (v0.40.2) для языка программирования Elixir

© 2014 Chris McCord
Licensed under the MIT License.
https://ecto.hexdocs.pm/Ecto.Adapter.Queryable.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API