Current section

Files

Jump to
ecto_foundationdb lib ecto adapters foundationdb ecto_adapter.ex
Raw

lib/ecto/adapters/foundationdb/ecto_adapter.ex

defmodule Ecto.Adapters.FoundationDB.EctoAdapter do
@moduledoc false
@behaviour Ecto.Adapter
@impl Ecto.Adapter
defmacro __before_compile__(_env), do: :this_is_never_called
@impl Ecto.Adapter
def ensure_all_started(_config, type), do: Application.ensure_all_started(:erlfdb, type)
@impl Ecto.Adapter
def init(config) do
# Pulled from QLC
log = Keyword.get(config, :log, :debug)
stacktrace = Keyword.get(config, :stacktrace, nil)
telemetry_prefix = Keyword.fetch!(config, :telemetry_prefix)
telemetry = {config[:repo], log, telemetry_prefix ++ [:query]}
{:ok, Ecto.Adapters.FoundationDB.Supervisor.child_spec([config]),
%{telemetry: telemetry, stacktrace: stacktrace, opts: config}}
end
@impl Ecto.Adapter
def checkout(%{pid: pid}, _config, fun) do
Process.put({__MODULE__, pid}, true)
result = fun.()
Process.delete({__MODULE__, pid})
result
end
@impl Ecto.Adapter
def checked_out?(%{pid: pid}) do
Process.get({__MODULE__, pid}) != nil
end
@impl Ecto.Adapter
def loaders(_primitive_type, ecto_type) do
[ecto_type]
end
@impl Ecto.Adapter
def dumpers(_primitive_type, ecto_type) do
[ecto_type]
end
end