Commit graph

761 commits

Author SHA1 Message Date
Zach Daniel
808692bbd7 fix: improve non-atomic-upgrade policy handling
fix: ensure we have a primary key for certain kinds of calculations:
2024-05-23 18:34:15 -04:00
Zach Daniel
e63d80e645 fix: handle subquery-requiring calculations in calculate/2 2024-05-23 17:33:29 -04:00
Zach Daniel
feb187bdf6 improvement: add atomic_upgrade? flag to update/destroy actions
improvement: do not do atomic upgrade by default unless `require_atomic?` is `true`
improvement: allow configuring the read action used by atomic upgrades
2024-05-23 11:05:17 -04:00
Zach Daniel
67c6e5e22a fix: ensure that all notifications are sent for bulk destroy/update
closes #1186
2024-05-22 18:42:19 -04:00
danielatdpg
05379e15b2
fix: handle list of atomic conditions (#1194) (#1195) 2024-05-22 11:38:15 -04:00
ab3786ebf6
feat(Ash.Reactor): Add bulk_update step type. (#1185) 2024-05-22 15:26:51 +12:00
Riccardo Binetti
86676cd0fc
feat: allow retrieving the count of paginated relationships (#1183) 2024-05-21 08:48:11 -04:00
Jinkyou Son
aae679f50e
improvement: Implement show_sensitive? config (#1180)
* Refactor with Ash.Helpers.redact/1

* Implement show_sensitive? config

* Use Application.compile_env/3 instead of Application.get_env/3

* Update sensitive-data.md
2024-05-21 08:47:51 -04:00
807ed72e89
chore: run formatter. 2024-05-21 09:17:58 +12:00
1d5d247d7a feat(Ash.Reactor): Add bulk_create step type. 2024-05-21 09:14:02 +12:00
Zach Daniel
a162b52b7f fix: use Ash.Sort.parse_input/3 in Ash.Query.sort_input/2 2024-05-20 09:52:52 -04:00
Riccardo Binetti
9fc5ddfe2b
fix: make Ash.Resource.Validation.Changing work correctly in atomics (#1178)
- Use the correct option key to select the field
- Fail without hitting the data layer if the attribute is not changing
- Allow checking relationships like the non-atomic counterpart
2024-05-16 18:15:35 -05:00
Riccardo Binetti
16b7ea7693
fix: check the where condition before checking validation atomicity (#1177)
:not_atomic was returned for a non-atomic validation even if the where condition
evaluated to false
2024-05-16 15:49:08 -05:00
Zach Daniel
23d7479417 fix: handle nil notification results better
fix: don't emit after batch notifications if `notify?: false`
2024-05-16 11:19:24 -05:00
Riccardo Binetti
65e9f51907
fix: don't require domain for empty stream bulk update and destroy (#1175)
It can't be extracted from an empty list, but it's not actually needed
2024-05-16 09:57:10 -05:00
Rebecca Le
619a0d61ad
bug: Add more failing tests around cascade_destroy functionality (#1173)
Issues occur when there is no data to cascade destroy, or notifications are requested but none are returned
2024-05-16 09:54:22 -05:00
Zach Daniel
7f7c1377cf fix: properly validate input action on bulk destroy
fix: allow setting `authorize?: false`
2024-05-16 00:02:18 -05:00
Rebecca Le
48b458c4fd
bug: Add failing test for verifying bulk destroy actions (#1172)
* bug: Add failing test for verifying bulk destroy actions

* bug: Add failing test for skipping authorization checks on a bulk destroy
2024-05-15 23:24:44 -05:00
Zach Daniel
7ec98ef8ab fix: properly persist simple_notifiers 2024-05-15 16:46:16 -04:00
Zach Daniel
5b18e71738 fix: accept ids in code interfaces again 2024-05-15 15:45:58 -04:00
Zach Daniel
ad0274b0a3 improvement: add pattern matching for clarity on ref/1 and ref/2
chore: remove debug logger configuration from test
2024-05-15 11:25:54 -04:00
Zach Daniel
2681684922 improvement: add can_return_nil?/1 callback to Ash expressions 2024-05-14 17:58:13 -04:00
Zach Daniel
3263ec2ee9 fix: don't show a type error on nil for lists
closes #1166
2024-05-14 17:09:34 -04:00
Davide Briani
449da541e2
Fix: keep data's metadata in atomic update (#1165) 2024-05-14 13:17:51 -04:00
Zach Daniel
23d78ec43f improvement: use the source configuration for attributes in embedded resources
closes #1143
2024-05-14 12:32:25 -04:00
12de8d19a5 fix(cascade_destroy): Always return and explicitly dispatch notifications.
**note** `notify?` option is now `return_notifications?`.
2024-05-13 09:28:20 +12:00
70c1a688f8 feat: Add cascade_destroy to builtin changes. 2024-05-13 09:28:20 +12:00
Zach Daniel
11f0f9aa03 fix: ensure that changeset filters are honored in ETS destroy/update_query
fix: in simulated bulk actions, a stale record should be ignored
fix: don't rollback transactions on stale records
2024-05-12 16:16:39 -04:00
Riccardo Binetti
1f8c27225f
chore: add failing tests for filter on stream bulk update/destroy (#1151) 2024-05-12 15:32:13 -04:00
Zach Daniel
b48c989b15 fix: don't check required belongs to fields until after setting them in bulk creation
docs: fix doc links for code interface guide

fixes #1154
2024-05-12 14:12:24 -04:00
Zach Daniel
32446b0b2e chore: fixes around policy exceptions
docs: add policy how-to guide
2024-05-10 15:26:23 -04:00
Riccardo Binetti
d5ae3f37b6
fix: ignore required pagination for relationships (#1147)
Maintain backwards compatibility
2024-05-10 11:48:10 -04:00
Zach Daniel
b6c8b1c2ec fix: allow calculations to access what would forbidden fields of related items
context for this change:

this requires a potentially risky modification to how field policies are
applied for nested queries and embedded types, which is that we now
apply field policies for nested queries in a post-processing pass.

Bugs in this code could lead to forbidden fields being displayed
when they shouldn't be. Luckily we have tests for this kind of thing :)
2024-05-08 16:22:48 -04:00
Riccardo Binetti
0e899dbbb3
improvement: add tenant to data earlier in read (#1137) 2024-05-08 09:21:01 -04:00
Zach Daniel
0e004ead7a fix: support empty lists as bulk arguments to code interface options
fixes #1126
2024-05-07 16:46:41 -04:00
Zach Daniel
ce559bc018 fix: temporarily disable field policy deselection optimization
also added a test for related field calc dependencies,
commented out until I fix it later
2024-05-07 16:08:56 -04:00
Barnabas Jovanovics
d2bfaff377
test: add test for calc deps that are forbidden (#1128) 2024-05-07 15:39:04 -04:00
Zach Daniel
f5ab6a6bd8 fix: ensure that reuse_values? is honored all the way down the chain 2024-05-07 15:38:03 -04:00
Riccardo Binetti
7f701cfb57
chore: add failing test for calculation reuse across loads (#1127) 2024-05-07 12:28:22 -04:00
Zach Daniel
64ecdad657 fix: properly deduplicate calculations 2024-05-06 20:32:41 -04:00
Riccardo Binetti
c3c330224d
chore: add failing test for calculation loaded twice in Ash.load/3 (#1122) 2024-05-06 19:25:17 -04:00
Pierre Cavin
3cf9fcd8e5
feat: add new remove_nil_items? array type constraint (#1116) 2024-05-05 12:05:04 -04:00
Pierre Cavin
c05544663e
fix: run array type nil check after item constraints (#1115) 2024-05-05 11:49:23 -04:00
Riccardo Binetti
5dfea1df9b
feat: add relationship pagination (#1050) 2024-05-04 05:56:46 -04:00
Riccardo Binetti
7507cdd731
fix: make lateral join filtering in ETS data layer work (#1111)
One of the two branches was using the non-bang version of a function, which
returned `{:ok, filter}`. That value was then directly put in the Query struct,
resulting in an invalid filter that was never applied.
2024-05-03 16:56:18 -04:00
Zach Daniel
a26efe03e1 test: add test for requiring actor in atomic changes 2024-05-03 12:36:20 -04:00
Zach Daniel
6a1359c3d8 fix: various fixes around bulk actions, types, error handling 2024-05-02 23:48:10 -04:00
Zach Daniel
1bdc095b04 fix: fix match validation when performed atomically 2024-05-02 20:30:37 -04:00
Riccardo Binetti
a3418e32ef
fix: ensure only the intended failing test fails (#1105)
It was making also other tests fail
2024-05-02 19:15:26 -04:00
Riccardo Binetti
5ce12e35f8
chore: failing test for bulk update with global validations (#1104) 2024-05-02 17:18:08 -04:00