From ba116c40ddb5eae5083a4b646417d1ea083ada98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Buszkiewicz?= Date: Wed, 3 Dec 2025 21:13:35 +0100 Subject: [PATCH] fix: loader now carries over entire resolution context --- lib/permit/resolver.ex | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/lib/permit/resolver.ex b/lib/permit/resolver.ex index 8eacd7c..c36bb2e 100644 --- a/lib/permit/resolver.ex +++ b/lib/permit/resolver.ex @@ -80,7 +80,7 @@ defmodule Permit.Resolver do Types.resource_module(), Types.action_group(), Types.subject(), - map(), + Types.resolution_context(), :all | :one ) :: [struct()] | struct() | nil defp fetch_resource( @@ -88,15 +88,18 @@ defmodule Permit.Resolver do resource_module, action, subject, - %{loader: loader, params: params}, + %{loader: loader} = meta, :all ) do - case loader.(%{ - action: action, - resource_module: resource_module, - subject: subject, - params: params - }) do + loader_arg = + %{ + action: action, + resource_module: resource_module, + subject: subject + } + |> Map.merge(meta) + + case loader.(loader_arg) do list when is_list(list) -> list nil -> [] other_item -> [other_item] @@ -108,15 +111,18 @@ defmodule Permit.Resolver do resource_module, action, subject, - %{loader: loader, params: params}, + %{loader: loader} = meta, :one ) do - case loader.(%{ - action: action, - resource_module: resource_module, - subject: subject, - params: params - }) do + loader_arg = + %{ + action: action, + resource_module: resource_module, + subject: subject + } + |> Map.merge(meta) + + case loader.(loader_arg) do [record | _] -> record [] -> nil record -> record