Commit graph

2611 commits

Author SHA1 Message Date
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
Zach Daniel
5ef8de03f3 fix: fix simple_equality in attribute type 2024-04-28 00:41:57 -04:00
Zach Daniel
2f1a0fec71 fix: set resource option in bulk interfaces 2024-04-27 23:56:11 -04:00
Zach Daniel
69f844dc69 chore: fix typo 2024-04-27 23:35:12 -04:00
Zach Daniel
fa6c2ade6d fix: check resource match below checking query input 2024-04-27 23:33:04 -04:00
Zach Daniel
26225fc7f5 fix: only use Map.new for inputs if input is keyword in code interface 2024-04-27 23:21:34 -04:00
Zach Daniel
65c6f66b91 fix: properly set action type on changeset 2024-04-27 11:20:03 -04:00
Zach Daniel
8c4e9c44d6 fix: set changed? context on bulk actions 2024-04-27 10:43:53 -04:00
Zach Daniel
3f977ff98d improvement: simplifications and clarifications around bulk callback behavior 2024-04-27 10:14:31 -04:00
Zach Daniel
75b63917c7 improvement: don't add autogenerated_id to embeds by default
one list *very mild* breaking change
2024-04-27 00:53:22 -04:00
Zach Daniel
69295daf78 improvement: allow skipping primary keys on embedded resources 2024-04-27 00:41:12 -04:00
Zach Daniel
41f68ca4a4 improvement: support changeset filters in ets 2024-04-27 00:33:00 -04:00
Zach Daniel
03b1579d9c fix: properly handle atomic upgrade when policies can't be strict checked 2024-04-26 23:53:54 -04:00
Jinkyou Son
1acbce4ebb
improvement: Treat asterisk as a single arguemnt in accept (#1062) 2024-04-26 03:26:15 -04:00
Zach Daniel
2d0b73af96 chore: set authorization context ahead of query build 2024-04-26 03:15:46 -04:00
Zach Daniel
726c6c3f0f fix: various fixes around bulk action upgrades, atomics 2024-04-26 03:13:22 -04:00
Zach Daniel
41c951d2e5 chore: fix missing clause andhydrate atomic refs 2024-04-25 23:46:11 -04:00
Zach Daniel
ad076735ae chore: fix batch size detection while streaming 2024-04-25 22:56:41 -04:00