From 4f5312a08961b4b6aff4b6998197edff5456d20b Mon Sep 17 00:00:00 2001 From: Zach Daniel Date: Thu, 16 Nov 2023 08:31:50 -0500 Subject: [PATCH] fix: add calculation context to calculation expressions --- lib/expr.ex | 18 ++++++++++++++++++ mix.exs | 2 +- mix.lock | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/expr.ex b/lib/expr.ex index c8716935..5c65b695 100644 --- a/lib/expr.ex +++ b/lib/expr.ex @@ -792,6 +792,15 @@ defmodule AshPostgres.Expr do } ) do {:ok, expression} -> + expression = + Ash.Actions.Read.add_calc_context_to_filter( + expression, + calculation.context[:actor], + calculation.context[:authorize?], + calculation.context[:tenant], + calculation.context[:tracer] + ) + do_dynamic_expr( query, expression, @@ -975,6 +984,15 @@ defmodule AshPostgres.Expr do } ) do {:ok, hydrated} -> + hydrated = + Ash.Actions.Read.add_calc_context_to_filter( + hydrated, + calculation.context[:actor], + calculation.context[:authorize?], + calculation.context[:tenant], + calculation.context[:tracer] + ) + expr = do_dynamic_expr( query, diff --git a/mix.exs b/mix.exs index f2e3fba0..1e0323e4 100644 --- a/mix.exs +++ b/mix.exs @@ -204,7 +204,7 @@ defmodule AshPostgres.MixProject do {:ecto, "~> 3.9"}, {:jason, "~> 1.0"}, {:postgrex, ">= 0.0.0"}, - {:ash, ash_version("~> 2.15 and >= 2.15.18")}, + {:ash, ash_version("~> 2.17 and >= 2.17.2")}, {:benchee, "~> 1.1", only: [:dev, :test]}, {:git_ops, "~> 2.5", only: [:dev, :test]}, {:ex_doc, github: "elixir-lang/ex_doc", only: [:dev, :test], runtime: false}, diff --git a/mix.lock b/mix.lock index e6b1fdce..8414bcfc 100644 --- a/mix.lock +++ b/mix.lock @@ -1,5 +1,5 @@ %{ - "ash": {:hex, :ash, "2.17.1", "728a917baab9599b4bed4156009b3465fa5a24a9511dab212894b044d13d1a36", [:mix], [{:comparable, "~> 1.0", [hex: :comparable, repo: "hexpm", optional: false]}, {:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:earmark, "~> 1.4", [hex: :earmark, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: false]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:spark, ">= 1.1.50 and < 2.0.0-0", [hex: :spark, repo: "hexpm", optional: false]}, {:stream_data, "~> 0.6", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d45d8c6a9c99a0088ec5451692e46e03556d00575bfe00497a2e32f90163763f"}, + "ash": {:hex, :ash, "2.17.2", "04b7c3b6340720d525a1410c05a854461bc487a43459718f3cdd705581d48b43", [:mix], [{:comparable, "~> 1.0", [hex: :comparable, repo: "hexpm", optional: false]}, {:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:earmark, "~> 1.4", [hex: :earmark, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: false]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:spark, ">= 1.1.50 and < 2.0.0-0", [hex: :spark, repo: "hexpm", optional: false]}, {:stream_data, "~> 0.6", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "fbcf8e18cf640612bbaa356cc1749d2521211e9d116cd296ef785ab48dacf685"}, "benchee": {:hex, :benchee, "1.1.0", "f3a43817209a92a1fade36ef36b86e1052627fd8934a8b937ac9ab3a76c43062", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}, {:statistex, "~> 1.0", [hex: :statistex, repo: "hexpm", optional: false]}], "hexpm", "7da57d545003165a012b587077f6ba90b89210fd88074ce3c60ce239eb5e6d93"}, "bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"}, "certifi": {:hex, :certifi, "2.9.0", "6f2a475689dd47f19fb74334859d460a2dc4e3252a3324bd2111b8f0429e7e21", [:rebar3], [], "hexpm", "266da46bdb06d6c6d35fde799bcb28d36d985d424ad7c08b5bb48f5b5cdd4641"},