From 32ce0028943be5255b552e2835173fa5e4038d80 Mon Sep 17 00:00:00 2001 From: Andy Kirkpatrick Date: Tue, 5 Mar 2024 02:55:47 +0000 Subject: [PATCH] Transfer {dynamic_repo_module, dynamic_repo} across processes This allows for the info used in Ecto.Repo.put_dynamic_repo\1 to carry over to the process actually performing the query. --- lib/ash/process_helpers.ex | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/ash/process_helpers.ex b/lib/ash/process_helpers.ex index 672d8e6cb..81c4e3570 100644 --- a/lib/ash/process_helpers.ex +++ b/lib/ash/process_helpers.ex @@ -14,6 +14,16 @@ defmodule Ash.ProcessHelpers do actor = Process.get(:ash_actor) authorize? = Process.get(:ash_authorize?) tenant = Process.get(:ash_tenant) + + dynamic_repo = + case context[:dynamic_repo_module] do + module when is_atom(module) -> + {module, module.get_dynamic_repo()} + + _ -> + nil + end + tracer = Process.get(:ash_tracer) tracer_context = @@ -28,6 +38,7 @@ defmodule Ash.ProcessHelpers do context: context, actor: actor, tenant: tenant, + dynamic_repo: dynamic_repo, authorize?: authorize?, tracer: tracer, tracer_context: tracer_context @@ -40,6 +51,7 @@ defmodule Ash.ProcessHelpers do context: context, actor: actor, tenant: tenant, + dynamic_repo: dynamic_repo, authorize?: authorize?, tracer: tracer, tracer_context: tracer_context @@ -62,6 +74,14 @@ defmodule Ash.ProcessHelpers do :ok end + case dynamic_repo do + {dynamic_repo_module, dynamic_repo} -> + dynamic_repo_module.put_dynamic_repo(dynamic_repo) + + _ -> + :ok + end + case authorize? do {:authorize?, authorize?} -> Ash.set_authorize?(authorize?)