mirror of
https://github.com/ash-project/ash.git
synced 2024-09-20 13:33:20 +12:00
improvement: properly set tenant from initial data
This commit is contained in:
parent
5b6c81d800
commit
85da9eff6f
1 changed files with 24 additions and 5 deletions
|
@ -741,20 +741,38 @@ defmodule Ash.Actions.Read do
|
||||||
pkey_value =
|
pkey_value =
|
||||||
record |> Map.take(Ash.Resource.Info.primary_key(query.resource)) |> Map.to_list()
|
record |> Map.take(Ash.Resource.Info.primary_key(query.resource)) |> Map.to_list()
|
||||||
|
|
||||||
Ash.Query.filter(query, ^pkey_value)
|
query = Ash.Query.filter(query, ^pkey_value)
|
||||||
|
|
||||||
|
if tenant = record.__metadata__[:tenant] do
|
||||||
|
Ash.Query.set_tenant(query, tenant)
|
||||||
|
else
|
||||||
|
query
|
||||||
|
end
|
||||||
|
|
||||||
{:ok, %{} = record} ->
|
{:ok, %{} = record} ->
|
||||||
pkey_value =
|
pkey_value =
|
||||||
record |> Map.take(Ash.Resource.Info.primary_key(query.resource)) |> Map.to_list()
|
record |> Map.take(Ash.Resource.Info.primary_key(query.resource)) |> Map.to_list()
|
||||||
|
|
||||||
Ash.Query.filter(query, ^pkey_value)
|
query = Ash.Query.filter(query, ^pkey_value)
|
||||||
|
|
||||||
{:ok, records} when is_list(records) ->
|
if tenant = record.__metadata__[:tenant] do
|
||||||
|
Ash.Query.set_tenant(query, tenant)
|
||||||
|
else
|
||||||
|
query
|
||||||
|
end
|
||||||
|
|
||||||
|
{:ok, [record | _] = records} ->
|
||||||
pkey = Ash.Resource.Info.primary_key(query.resource)
|
pkey = Ash.Resource.Info.primary_key(query.resource)
|
||||||
pkey_value = Enum.map(records, fn record -> record |> Map.take(pkey) |> Map.to_list() end)
|
pkey_value = Enum.map(records, fn record -> record |> Map.take(pkey) |> Map.to_list() end)
|
||||||
|
|
||||||
filter = [or: pkey_value]
|
filter = [or: pkey_value]
|
||||||
Ash.Query.filter(query, ^filter)
|
query = Ash.Query.filter(query, ^filter)
|
||||||
|
|
||||||
|
if tenant = record.__metadata__[:tenant] do
|
||||||
|
Ash.Query.set_tenant(query, tenant)
|
||||||
|
else
|
||||||
|
query
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1501,7 +1519,8 @@ defmodule Ash.Actions.Read do
|
||||||
[
|
[
|
||||||
actor: request_opts[:actor],
|
actor: request_opts[:actor],
|
||||||
authorize?: authorize?,
|
authorize?: authorize?,
|
||||||
tracer: request_opts[:tracer]
|
tracer: request_opts[:tracer],
|
||||||
|
tenant: request_opts[:tenant]
|
||||||
],
|
],
|
||||||
dep,
|
dep,
|
||||||
path,
|
path,
|
||||||
|
|
Loading…
Reference in a new issue