mirror of
https://github.com/ash-project/ash.git
synced 2024-09-20 05:23:03 +12:00
improvement: set context once, early
This commit is contained in:
parent
534774e1d2
commit
e0cbe591ee
2 changed files with 7 additions and 12 deletions
|
@ -862,6 +862,7 @@ defmodule Ash.Actions.Read do
|
|||
:distinct,
|
||||
:select
|
||||
])
|
||||
|> Ash.Query.set_context(%{action: ash_query.action})
|
||||
|> Ash.Query.data_layer_query(only_validate_filter?: true)
|
||||
|
||||
ash_query =
|
||||
|
@ -901,12 +902,6 @@ defmodule Ash.Actions.Read do
|
|||
{path, ash_query.tenant, data}
|
||||
),
|
||||
filter <- update_aggregate_filters(filter, data, path),
|
||||
{:ok, query} <-
|
||||
Ash.DataLayer.set_context(
|
||||
ash_query.resource,
|
||||
query,
|
||||
Map.put(ash_query.context, :action, ash_query.action)
|
||||
),
|
||||
{:ok, query} <-
|
||||
Ash.DataLayer.select(
|
||||
query,
|
||||
|
|
|
@ -1946,6 +1946,12 @@ defmodule Ash.Query do
|
|||
aggregates = Enum.uniq_by(filter_aggregates ++ sort_aggregates, & &1.name)
|
||||
|
||||
with {:ok, query} <-
|
||||
Ash.DataLayer.set_context(
|
||||
resource,
|
||||
query,
|
||||
Map.put(ash_query.context, :action, ash_query.action)
|
||||
),
|
||||
{:ok, query} <-
|
||||
add_tenant(query, ash_query),
|
||||
{:ok, query} <-
|
||||
add_aggregates(query, ash_query, aggregates),
|
||||
|
@ -1957,12 +1963,6 @@ defmodule Ash.Query do
|
|||
Ash.DataLayer.limit(query, ash_query.limit, resource),
|
||||
{:ok, query} <-
|
||||
Ash.DataLayer.offset(query, ash_query.offset, resource),
|
||||
{:ok, query} <-
|
||||
Ash.DataLayer.set_context(
|
||||
resource,
|
||||
query,
|
||||
Map.put(ash_query.context, :action, ash_query.action)
|
||||
),
|
||||
{:ok, query} <- Ash.DataLayer.select(query, ash_query.select, ash_query.resource) do
|
||||
if opts[:no_modify?] || !ash_query.action || !ash_query.action.modify_query do
|
||||
{:ok, query}
|
||||
|
|
Loading…
Reference in a new issue