Recall.Repo (Recall v0.1.0)

Copy Markdown View Source

A drop-in replacement for use Ecto.Repo that adds Recall's read fast-path.

defmodule MyApp.Repo do
  use Recall.Repo, otp_app: :my_app
end

This is exactly use Ecto.Repo, adapter: Ecto.Adapters.Recall, plus an override of all/2 that, for the bare Repo.all(Schema) case on a load_free? schema, assembles structs directly from the stored Mnesia records instead of routing every field through Ecto's per-field loader. See Ecto.Adapters.Recall.FastRead for which queries qualify and why it's equivalent to the standard path.

Everything else behaves identically to Ecto.Repo. The fast-path can be disabled per call with Repo.all(query, recall_fast: false) — used by the benchmark to measure the standard path through the same repo.