Commit graph

2728 commits

Author SHA1 Message Date
Riccardo Binetti
d71718c691
fix: use correct boolean operation names in Filter.find/4 (#1214) 2024-05-30 07:59:11 -05:00
Zach Daniel
fbcafa1bfa fix: when hydrating nested aggregates, use correct related resource/path pair
closes #1213
2024-05-30 00:12:12 -05:00
Zach Daniel
4ab37a18f5 chore: fix 1.17 warning 2024-05-29 17:07:30 -04:00
Zach Daniel
2a304a581b fix: check if in transaction before trying to roll it back 2024-05-29 15:21:08 -04:00
Zach Daniel
1c21e390be fix: retain ref_path when authorizing aggregates 2024-05-29 14:03:33 -04:00
Zach Daniel
e9897eb50f fix: ensure that belongs_to relationships are properly not reloaded with lazy?: true
closes #1208
2024-05-29 12:59:10 -04:00
Zach Daniel
49b69628f8 improvement: compatibility with elixir 1.17 2024-05-29 09:20:44 -04:00
Jechol Lee
99cc10a9c7
Ash.can? to be boolean | no_return (#1210) 2024-05-29 07:32:32 -04:00
Jechol Lee
5dbf8fc0ed
fix get_domain (#1209) 2024-05-29 07:31:18 -04:00
Zach Daniel
2d9ffe7fab fix: implement rollback on after hooks for bulk actions 2024-05-28 14:57:49 -04:00
Zach Daniel
bfdb8f9bab chore: format 2024-05-28 14:32:30 -04:00
Zach Daniel
4b873438dd fix: missing else caused manual updates not to work with bulk_update
closes #1205
2024-05-28 14:30:41 -04:00
Zach Daniel
6de8e765a9 improvement: verify notifiers all use the Ash.Notifier behaviour 2024-05-26 13:00:15 -04:00
Zach Daniel
b5dce2494a chore: optimize strict check fact checking 2024-05-24 23:07:46 -04:00
Zach Daniel
adda85297c fix: multiple filter-checks in policy conditions were not composing properly 2024-05-24 22:58:05 -04:00
Zach Daniel
c45ecbfa49 fix: properly honor trailing policies that are constantly false 2024-05-24 21:03:06 -04:00
Zach Daniel
dc94f3a743 improvement: support nils_distinct? on identities
improvement: support `where` option on `identities`
improvement: allow calculations in identity keys

closes #1001
closes #1182
2024-05-24 00:24:42 -04:00
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
Joel Kociolek
d0ffc55924
fix: mixup between atomic upsert vs update capability of datalayers (#1198) 2024-05-23 12:19:20 -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
73a2ef4852 fix: only use Mix.deps_tree if defined
fixes #1197
2024-05-23 10:00:46 -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
Zach Daniel
9b3eace611 fix: properly hydrate and scope sorts
improvement: support anonymous aggregates and calculations in queries
2024-05-22 17:47:03 -04:00
danielatdpg
05379e15b2
fix: handle list of atomic conditions (#1194) (#1195) 2024-05-22 11:38:15 -04:00
Barnabas Jovanovics
3e7f691add
fix: handle nil value for old_values (#1191) 2024-05-22 09:01:35 -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
Zach Daniel
3f6e5c8ee8 fix: allow all strategies for bulk actions in code interfaces by default 2024-05-20 18:06:04 -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
720f08f2eb chore: remove unnecessary line from docs 2024-05-20 10:25:06 -04: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
Zach Daniel
d84062f676 fix: improve Ash.Domain.Info typespecs
improvement: support `filter_input` and `sort_input` in `Ash.Query.build/2`
2024-05-18 10:27:12 -05: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
6c2d34753c improvement: add template_requires_actor check for changesets
improvement: don't use queries for streaming if they have hooks
2024-05-16 11:53:29 -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
Barnabas Jovanovics
51512f7218
fix: prefer resource domain over option domain (#1176) 2024-05-16 10:38:51 -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
Zach Daniel
d053db0736 improvement: consider from: nil in changing_attributes/1 check 2024-05-16 09:55:01 -05:00
Barnabas Jovanovics
b4cf231be2
fix: only return valid non nil values items from generator (#1121) 2024-05-16 08:26:56 -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
Zach Daniel
b74ef1e83e chore: set default value for get?: true 2024-05-15 23:36:40 -05:00
Zach Daniel
13c57a6b7e fix: honor get? for bulk update/bulk destroy 2024-05-15 23:25:18 -05:00
Alan Heywood
4214522302
^ref argument order fixes (#1171) 2024-05-15 19:56:06 -04: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
835187df49 fix: ensure that the changed? context is set in after action hooks on batches 2024-05-15 14:08:19 -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
8481873ed5 fix: allow for inferred domains when authorizing join queries
closes #1167
2024-05-15 09:48:24 -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
576c729bba improvement: raise argument error on unknown options in Ash.Type.NewType
closes #1142
2024-05-14 12:34:25 -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
Zach Daniel
124a3c734e improvement: better types for checks, for spark autocomplete
chore: update spark
2024-05-14 11:38:33 -04:00
Zach Daniel
5392a3ae78 improvement: added a did_you_mean field and error message for NoSuchInput 2024-05-14 10:36:46 -04:00
Zach Daniel
fa172b3be2 fix: don't eager evaluate exists erroneously 2024-05-14 10:11:27 -04:00
Barnabas Jovanovics
0dfad7c228
fix: handle nil case (#1163) 2024-05-14 06:16:07 -04:00
Zach Daniel
7b1b26943c fix: don't attempt to traverse not loaded and forbidden values when rewriting policies 2024-05-13 15:56:47 -04:00
Barnabas Jovanovics
de0bd815e8
fix: add __source__ to union inner_constraints (#1160) 2024-05-13 18:45:31 +02:00
Barnabas Jovanovics
3e27ca9df5
fix: copy context for the other destroy calls too (#1159) 2024-05-13 09:43:43 -04:00
Barnabas Jovanovics
f755af2228
fix: inifite recursion if query is empty (#1158) 2024-05-13 09:20:27 -04:00
Simon Nyström
f69e946a7d
docs: Fix incorrect documentation for Ash.create (#1157) 2024-05-13 09:11:13 -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
e7c8edc8f3 fix: Seems like we shouldn't just throw away notifications without being upset about it. 2024-05-13 09:28:20 +12:00
55e625e63a chore: code gardening. 2024-05-13 09:28:20 +12:00
89db4ac154 fix: incorrect result matching in bulk destroy.
Transactions return an ok/error tuple, so we need to handle it and simulate an bulk result error on error.
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
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
Riccardo Binetti
69ba0f7ce3
fix: check require_reference? when generating update code interface (#1152) 2024-05-11 20:11:44 -04:00
Zach Daniel
32446b0b2e chore: fixes around policy exceptions
docs: add policy how-to guide
2024-05-10 15:26:23 -04:00
Zach Daniel
334dc2dc04 chore: don't apply policy verifier to domains 2024-05-10 12:36:46 -04:00
Zach Daniel
7bcf64f879 improvement: warn on authorizer being added to extensions list, not authorizers
improvement: make type generator handle allow_nil? properly
docs: add testing resources how to guide

closes #968
2024-05-10 12:08:42 -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
dbf848e264 fix: property tests should allow private attributes that are accepted 2024-05-10 10:39:26 -04:00
Zach Daniel
bc3463e135 docs: document Ash.can 2024-05-09 20:43:49 -04:00
Zach Daniel
b3a34d0d65 fix: ensure source_context is a map
fixes #1141
2024-05-09 08:49:39 -04:00
Zach Daniel
7bb914444e fix: get underlying type before calling rewrite on it 2024-05-08 21:03:44 -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
Barnabas Jovanovics
aecd421a29
fix: access to change context in get_and_lock(_for_update) changes (#1135) 2024-05-08 09:22:12 -04:00
Riccardo Binetti
0e899dbbb3
improvement: add tenant to data earlier in read (#1137) 2024-05-08 09:21:01 -04:00
Zach Daniel
078cc4f28b improvement: reintroduce deslection of known forbidden fields
this was an optimization that was temporarily removed, but can now
safely be added because we track depended on fields
2024-05-07 22:42:23 -04:00
Zach Daniel
797a0bf50b fix: properly upgrade static expression calculations to literal calculations 2024-05-07 22:33:05 -04:00
Zach Daniel
04b4769e87 improvement: always reselect positionally on embedded resources 2024-05-07 22:05:50 -04:00
Zach Daniel
48c6438212 improvement: change default timeout to :infinity, for efficiency 2024-05-07 17:01:11 -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
Zach Daniel
f5ab6a6bd8 fix: ensure that reuse_values? is honored all the way down the chain 2024-05-07 15:38:03 -04:00
Barnabas Jovanovics
9d16ca07dc
feat: check global changes and validations for atomicity during compile time (#1129) 2024-05-07 12:09:12 -04:00
Zach Daniel
09cff72d03 chore: ensure changeset is set on atomic upgraded errors
docs: update livebook
2024-05-06 21:57:11 -04:00
Zach Daniel
1d519e37e0 chore: better inspecting for error classes 2024-05-06 20:58:39 -04:00
Zach Daniel
64ecdad657 fix: properly deduplicate calculations 2024-05-06 20:32:41 -04:00
Zach Daniel
b810e2e55b fix: better performance and ability to add a stream to runtime sort logic 2024-05-06 13:05:34 -04:00
Zach Daniel
36308a9e4f chore: reword some docs 2024-05-06 10:52:17 -04:00
Moxley Stratton
aa09589fbd
docs: Add documentation for Ash.Filter, linking to Expressions guide (#1114)
* Add documentation for Ash.Filter, linking to Ash.Filter.Functions.*

* Update PR: Rename section to "Expressions"
2024-05-06 07:47:35 -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
Zach Daniel
a802e04a93 docs: rework ash state machine cook book, clean up both cookbooks 2024-05-05 09:30:42 -04:00
Zach Daniel
6882d15098 chore: fixes around inspect logic and cookbook 2024-05-04 07:03:03 -04:00
Riccardo Binetti
5dfea1df9b
feat: add relationship pagination (#1050) 2024-05-04 05:56:46 -04:00
Zach Daniel
e03e4379a9 fix: small logic fixes for optimistic locking error case
chore: a bunch of QoL fixes around inspecting expressions
2024-05-04 01:10:04 -04:00
Zach Daniel
3b85451289 fix: more fixes for atomic changeset context setting 2024-05-03 20:39:10 -04:00
Jechol Lee
70f5264f17
Fix: missing tenant for many_to_many read (#1107)
* Fix missing tenant for many_to_many read

* Set tenant earlier
2024-05-03 18:51:52 -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
28c8c6565a chore: fix typo 2024-05-03 12:45:50 -04:00
Zach Daniel
2ab788fd35 fix: properly retain context from initial changeset in fully atomic changeset 2024-05-03 12:14:26 -04:00
Rebecca Le
9d7bb3b184
docs: Fix syntax error in builtin change documentation (#1108) 2024-05-03 10:41:48 -04:00
Zach Daniel
a49b951d32 fix: ensure transaction is rolled back on data layer errors during streaming 2024-05-03 10:33:36 -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
Sergey Moiseev
0efa1a0a10
fix: trim spaces from codegen name (#1106) 2024-05-02 19:14:10 -04:00
Zach Daniel
7fd063239f fix: set notify?: true when return_notifications?: true is set
closes #1100
2024-05-02 14:51:35 -04:00
Dmitry Maganov
e1188aa552
improvement: normalise List.wrap usage for policy checks (#1103) 2024-05-02 14:11:47 -04:00
Dmitry Maganov
712078877c
fix: fix changing_attributes for multiple attributes (#1101) 2024-05-02 11:42:18 -04:00
Frank Dugan III
09af174e4c
docs: clarify functionality of notify? and return_notifications? (#1099) 2024-05-02 11:36:28 -04:00
Zach Daniel
245ee998b4 fix: use InvalidReturnType, not AssumptionFailed for callback returns 2024-05-02 09:27:08 -04:00
Zach Daniel
5ad47c10cf fix: enforce that transaction hooks are not added from other hooks
closes #1096
2024-05-02 09:23:41 -04:00
Dmitry Maganov
1e2baf7809
fix: fixes to some atomic validations (#1094) 2024-05-02 08:59:01 -04:00
Zach Daniel
b8c01596cb fix: multiple small bugs when loading for calculate
closes 1091
2024-05-02 00:29:01 -04:00
Zach Daniel
c1354d503e fix: run changesets w/ after_transaction hooks through standard logic 2024-05-02 00:06:31 -04:00
Zach Daniel
0273b7d949 chore: fix remove after_transaction hooks after processing them 2024-05-01 20:29:58 -04:00
Zach Daniel
ec7e6905da fix: properly hydrate refs in related query 2024-05-01 17:18:24 -04:00
Frank Dugan III
718adb4891
feat: add read_action option to bulk actions (#1088) 2024-05-01 16:26:33 -04:00
Moxley Stratton
65ad0c6039
docs: Add doc text to the default option (#1077)
* Add doc text to  option

* Second version of the change

* Adjust docs for `:default`, and generate .md files

* Fix type
2024-05-01 16:03:09 -04:00
Zach Daniel
1f32fad9a8 chore: update data layer docs tagline 2024-05-01 14:16:34 -04:00
Zach Daniel
b224cc1134 chore: remove an unnecessary note 2024-05-01 14:14:11 -04:00
Zach Daniel
34ab8d4082 fix: properly express not atomic reason in bulk updates 2024-05-01 11:27:23 -04:00
Zach Daniel
ccd2043d4e fix: properly set actor on query in bulk update 2024-05-01 10:21:27 -04:00
Zach Daniel
be2caade74 fix: no need to restrict sorting on arrays 2024-05-01 09:35:26 -04:00
Zach Daniel
65395c37c6 fix: properly execute before_batch callbacks in bulk actions 2024-05-01 08:59:03 -04:00
Zach Daniel
6f0524d67d fix: missing pattern match on error query in read
closes #1084
2024-05-01 08:00:22 -04:00
Zach Daniel
fa7cfe5488 improvement: add pre_flight option for Ash.can 2024-04-30 22:55:32 -04:00
Zach Daniel
723276f41a fix: remove debugging code
improvement: make `Ash.Filter.map` more consistent
improvement: better inspect behavior for calculations
improvement: better inspect behavior for fragments
fix: don't call `Keyword` functions on maps in unions
2024-04-30 13:31:33 -04:00
Riccardo Binetti
c50d047614
fix: streaming with limit/offset and no pagination (#1080)
If there were 0 results, it just kept reading and reading forever
2024-04-30 13:03:49 -04:00
Pierre Le Gall
4ddc91be51
improvement: better create/update first argument (#1060)
* improvement: better create/update first argument

First argument of Ash.create (with a resource)
and Ash.update (with a record) no longer are in a tuple
with its arguments.

Arguments are moved in the input option.

* improvement: create/update params no more an opts

`Ash.create(User, %{name: "Yasmine"})` 🎉

* improvement: raise if changeset already validated

Raise an argument error for already validated changeset
when params are given.
2024-04-30 13:02:27 -04:00
Riccardo Binetti
09238490c4
fix: don't pass an error tuple to rollback in bulk update (#1079) 2024-04-30 06:40:42 -04:00
Jeremy Grant
45b76c209d
fix: union array argument/attribute handling when current attribute is (#1023) 2024-04-29 22:24:44 -04:00
Sergey Moiseev
417d39e7de
Add documentation on disabling pagination (#1076) 2024-04-29 20:40:19 -04:00
Zach Daniel
28c75df7b8 improvement: support new data layer capability calculate/3
fix: solve for custom expressions and one-off calculations
2024-04-29 16:58:37 -04:00
Zach Daniel
0fa257e7ea chore: don't add atomic allow nil hooks to primary key attributes
improvement: add debug logging for ets data layer
2024-04-29 15:43:47 -04:00
Dmitry Maganov
3ee24da7eb
improvement: pass context to anonymous validate functions (#1070) 2024-04-29 12:53:45 -04:00
Jechol Lee
ae3f632157
Fix is_belongs_to_rel_being_managed? to match list with more than 2 elements (#1072) 2024-04-29 12:49:26 -04:00
Zach Daniel
ca7b0824d7 fix: properly intercept thrown errors in Ash.bulk_create 2024-04-29 09:12:03 -04:00
Zach Daniel
a24fdcfe59 docs: fix code interface example 2024-04-29 07:49:25 -04:00
Jechol Lee
856ac698b7
fix: Changeset.present? to be false when belongs_to is set to nil (#1067)
* Changeset.present? to be false when belongs_to is set to nil

* match empty list

* match empty list 2
2024-04-29 07:38:06 -04:00
Jechol Lee
caf1c5ee2a
Improvement: Changeset.attributes_present? to attribute_present? (#1066) 2024-04-29 06:51:14 -04:00