Commit graph

2266 commits

Author SHA1 Message Date
Zach Daniel
75d975ea3a fix: properly match return type of Type.new in expr expansion 2024-03-01 15:44:32 -05:00
Zach Daniel
96113c20dc improvement: cast expression calculations if they don't do it 2024-03-01 13:05:49 -05:00
Zach Daniel
7d6ad64e0e fix: properly scope expanded calculations
improvement: aggregate sort replaces query sort
2024-02-29 15:02:20 -05:00
Zach Daniel
b98b39ec89 fix: properly scope expanded calculations 2024-02-29 14:40:59 -05:00
Zach Daniel
9a91937c88 fix: properly add aggregate authorization everywhere 2024-02-29 13:29:01 -05:00
Zach Daniel
650205a9bc fix: ensure calculation arguments are not ignored when parsing filters
fixes #917
2024-02-29 00:41:24 -05:00
Zach Daniel
582e983152 fix: properly authorize aggregates 2024-02-28 22:27:30 -05:00
Zach Daniel
e1c5130adb fix: bad reference in atomic validations 2024-02-27 12:57:36 -05:00
Tw
5ce0ed4d05
fix: prevent leakage of stale async_limiter's pid (#916)
the pid of async_limiter in the query's context will be invalid because we stop it
at the end of reading. So clear it up from query's context before returning back.

BTW, I found this issue according to the following crash:

```
[error] GenServer #PID<0.647.0> terminating
** (stop) exited in: GenServer.call(#PID<0.648.0>, {:get_and_update, #Function<0.21809672/1 in Ash.Actions.Read.AsyncLimiter.async_or_inline/3>}, 5000)
    ** (EXIT) no process: the process is not alive or there's no process currently associated with the given name, possibly because its application isn't started
    (elixir 1.16.0) lib/gen_server.ex:1114: GenServer.call/3
    (ash 2.19.3) lib/ash/actions/read/async_limiter.ex:26: Ash.Actions.Read.AsyncLimiter.async_or_inline/3
    (elixir 1.16.0) lib/enum.ex:1708: anonymous fn/3 in Enum.map/2
    (elixir 1.16.0) lib/enum.ex:4399: anonymous fn/3 in Enum.map/2
    (elixir 1.16.0) lib/stream.ex:1816: anonymous fn/3 in Enumerable.Stream.reduce/3
    (elixir 1.16.0) lib/enum.ex:4842: Enumerable.List.reduce/3
    (elixir 1.16.0) lib/stream.ex:1828: Enumerable.Stream.do_each/4
    (elixir 1.16.0) lib/enum.ex:4399: Enum.map/2
    (ash 2.19.3) lib/ash/actions/read/relationships.ex:39: Ash.Actions.Read.Relationships.fetch_related_records/2
    (ash 2.19.3) lib/ash/actions/read/relationships.ex:23: Ash.Actions.Read.Relationships.load/3
    (ash 2.19.3) lib/ash/actions/read/read.ex:237: Ash.Actions.Read.do_run/3
    (ash 2.19.3) lib/ash/actions/read/read.ex:49: anonymous fn/3 in Ash.Actions.Read.run/3
    (ash 2.19.3) lib/ash/actions/read/read.ex:48: Ash.Actions.Read.run/3
    (ash 2.19.3) lib/ash/api/api.ex:2301: Ash.Api.page/3
    (ash 2.19.3) lib/ash/api/api.ex:2258: Ash.Api.page!/3
...
```

Signed-off-by: Tw <tw19881113@gmail.com>
2024-02-27 09:03:46 -05:00
Zach Daniel
3b89f8fbaa chore: fix dialyzer 2024-02-26 13:04:43 -05:00
Zach Daniel
1a99098f52 fix: ensure that policies are applied to aggregates referenced in calculations 2024-02-26 13:00:12 -05:00
Zach Daniel
e238804b46 fix: ensure records are returned from bulk actions in atomic upgrades 2024-02-25 21:06:10 -05:00
Zach Daniel
93ae8f17a5 fix: handle small logic error in notification sending for bulk actions 2024-02-25 16:13:41 -05:00
Zach Daniel
0e1fe24f46 fix: ensure actor context is set in filter 2024-02-25 08:24:19 -05:00
Zach Daniel
eab194fac5 fix: properly handle limit/offset for aggregates 2024-02-24 20:21:13 -05:00
Zach Daniel
adbac1b7da improvement: don't duplicate base filter in aggregates 2024-02-24 19:24:51 -05:00
Zach Daniel
993355f938 fix: don't use Aggregate.new for builtin aggregates 2024-02-24 19:17:35 -05:00
Zach Daniel
4d39ab8a80 fix: merge root query into aggregate queries, don't apply both 2024-02-24 18:10:26 -05:00
Zach Daniel
240e809437 fix: return proper pattern from select builtin change 2024-02-24 09:27:12 -05:00
Zach Daniel
80be80c151 fix: properly catch errors in atomic changeset casting 2024-02-23 19:16:31 -05:00
Zach Daniel
81fee97306 fix: use Ash.Changeset.set_context on changesets 2024-02-22 17:39:52 -05:00
Zach Daniel
825a3a945d fix: properly fail early on missing actor in policies
fix: handle `:continue` case in authorizer
fix: validations run regardless of if the relevant fields are changing
2024-02-22 10:53:32 -05:00
Zach Daniel
c08aa2507b chore: detect a resource given as a module 2024-02-22 08:11:49 -05:00
Zach Daniel
701f9b4cc6 fix: honor soft destroys for atomic bulk destroys 2024-02-22 08:02:01 -05:00
Zach Daniel
7b5a3267be chore: walk back change to set context on query 2024-02-21 08:17:24 -05:00
Zach Daniel
c36f3ba2ab fix: properly set context on query and changeset 2024-02-21 08:16:23 -05:00
Zach Daniel
3027afe5fc fix: pass correct options into Api.stream! for bulk_destroy 2024-02-21 08:09:20 -05:00
Zach Daniel
9619c2fbda Revert "fix: check attributes after arguments for present?"
This reverts commit 85f8af2f8b.
2024-02-19 17:58:53 -05:00
Zach Daniel
85f8af2f8b fix: check attributes after arguments for present? 2024-02-19 17:53:17 -05:00
Dmitry Maganov
08008102d0
fix: correct for_read calls in update and destroy actions (#907) 2024-02-19 09:52:21 -05:00
Zach Daniel
944f69b16e fix: properly annotate run_flow's recursive DSL tag
docs: update spark & docs
2024-02-16 21:25:18 -05:00
Zach Daniel
3e82d05edb fix: ensure that to-many relationships are loaded as lists 2024-02-16 20:17:59 -05:00
Zach Daniel
a06912f9b0 fix: honor not_found_error? in read_one
improvement: pass `tenant` to context in custom changes
improvement: `Ash.context_to_opts` now checks for a `tenant`
2024-02-16 17:56:23 -05:00
Zach Daniel
31714e1979 docs: fix docs for manual reads
fixes #903
2024-02-16 16:10:07 -05:00
Dmitry Maganov
b1b6ee96df
fix: remove unneeded code for calculations in a filter (#904) 2024-02-16 16:05:40 -05:00
Zach Daniel
3924ddfa45 improvement: handle stale update/destroys 2024-02-15 23:48:45 -05:00
Zach Daniel
610b785fd8 fix: restore not_found_error? behavior in Ash.Flow 2024-02-15 23:34:38 -05:00
Zach Daniel
159e8ff377 fix: handle cases where no primary keys are present better 2024-02-15 21:24:21 -05:00
Zach Daniel
f324e7385b chore: use .has_expression/2 in one more place 2024-02-15 16:54:14 -05:00
Zach Daniel
52e0fb8ba6 fix: ensure that filters are parsed from policy authorizer ahead of time 2024-02-15 10:50:10 -05:00
Zach Daniel
36274a7369 fix: check if query is a query before calling .__validated_for_action__
fixes #896
2024-02-15 09:02:57 -05:00
Zach Daniel
5ecfe71b81 fix: properly authorize actions in flow
this was broken in the recent refactor
2024-02-15 09:00:15 -05:00
Zach Daniel
dcbccec7c3 improvement: support authorize_query_with for bulk updates/destroys
improvement: support `authorize_changeset_with` for bulk updates/destroys
2024-02-14 17:50:05 -05:00
Dmitry Maganov
76a0b0f7f3
chore: format some with clauses to be on a single line (#893) 2024-02-14 15:44:37 -05:00
Dmitry Maganov
ae58f0c118
fix: handle warning about incompatible types (#892) 2024-02-14 15:13:02 -05:00
Zach Daniel
1ee5c9a50a fix: properly refer to attributes in changing_attributes/1 2024-02-14 15:01:21 -05:00
Dmitry Maganov
b4dc2eae71
fix: remove unneeded code for calculations in a filter (#891) 2024-02-14 14:35:12 -05:00
Zach Daniel
1171e9fb03 fix: evaluate templates to unknown at ref 2024-02-14 14:33:45 -05:00
Zach Daniel
f23f0a29fe fix: handle atomic_ref templates and changing_attributes/1 2024-02-14 13:55:19 -05:00
Zach Daniel
e9d2d8c575 chore: add some defensive coding for policies 2024-02-14 11:03:38 -05:00