fix: hide __metadata__ field on inspect

fix: load relationships required for calculations (optimize later)
This commit is contained in:
Zach Daniel 2021-06-08 16:37:47 -04:00
parent 1e124295ed
commit 786047c3e7
2 changed files with 15 additions and 3 deletions

View file

@ -662,7 +662,19 @@ defmodule Ash.Actions.Load do
defp read(query, action) do defp read(query, action) do
action = action || primary_read(query) action = action || primary_read(query)
Ash.Actions.Read.unpaginated_read(query, action) query
|> load_for_calcs()
|> Ash.Actions.Read.unpaginated_read(action)
end
defp load_for_calcs(query) do
Enum.reduce(query.calculations || %{}, query, fn {_, calc}, query ->
calc.module.load(
query,
calc.opts,
Map.put(calc.context, :context, query.context)
)
end)
end end
defp primary_read(query) do defp primary_read(query) do

View file

@ -31,7 +31,7 @@ defmodule Ash.Schema do
field(:aggregates, :map, virtual: true, default: %{}) field(:aggregates, :map, virtual: true, default: %{})
field(:calculations, :map, virtual: true, default: %{}) field(:calculations, :map, virtual: true, default: %{})
field(:__metadata__, :map, virtual: true, default: %{}) field(:__metadata__, :map, virtual: true, default: %{}, redact: true)
for aggregate <- Ash.Resource.Info.aggregates(__MODULE__) do for aggregate <- Ash.Resource.Info.aggregates(__MODULE__) do
{:ok, type} = Aggregate.kind_to_type(aggregate.kind, :string) {:ok, type} = Aggregate.kind_to_type(aggregate.kind, :string)
@ -86,7 +86,7 @@ defmodule Ash.Schema do
field(:aggregates, :map, virtual: true, default: %{}) field(:aggregates, :map, virtual: true, default: %{})
field(:calculations, :map, virtual: true, default: %{}) field(:calculations, :map, virtual: true, default: %{})
field(:__metadata__, :map, virtual: true, default: %{}) field(:__metadata__, :map, virtual: true, default: %{}, redact: true)
for aggregate <- Ash.Resource.Info.aggregates(__MODULE__) do for aggregate <- Ash.Resource.Info.aggregates(__MODULE__) do
{:ok, type} = Aggregate.kind_to_type(aggregate.kind, :string) {:ok, type} = Aggregate.kind_to_type(aggregate.kind, :string)