Commit graph

2750 commits

Author SHA1 Message Date
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
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
Zach Daniel
c8e93877ea improvement: support atomics, update_query, destroy_query in ETS data layer 2024-04-25 22:18:54 -04:00
Barnabas Jovanovics
00ee13143b
fix: handle resource being passed as query code_interface.ex (#1057)
* handle resource being passed as query code_interface.ex

This bit me today because I had code  like this 

```elixir
                Resource
                |> filter_board_codes(board_codes)
                |> filter_min_price(min_price)
                |> filter_max_price(max_price)
                |> filter_refundable_only(refundable_only)
```

and all the `filter_*` functions looked like this

```elixir
def filter_something(query, nil), do: query

def filter_something(query, something) do
  query
  |> Ash.Query.filter(....)
end
```

* Update lib/ash/code_interface.ex

* add another case

---------

Co-authored-by: Zach Daniel <zach@zachdaniel.dev>
2024-04-25 10:37:44 -04:00
Barnabas Jovanovics
02c10c9216
fix: do not use Enum.map_join (#1058)
values are only a flat list of values, and map_join would need a function as the third argument if you specify a `joiner`
2024-04-25 07:53:52 -04:00
Pierre Le Gall
65e26cbc16
feat: Ash.create and Ash.update oneliner (#1055)
* feat: Ash.create and Ash.update oneliner

See #1015.

* fix: opts dispatch for create and update

* chore: shorten arguments by args
2024-04-24 15:28:26 -04:00
Zach Daniel
f146258159 improvement: remove after_atomic and instead support after_batch
supporting `after_batch` allows things like `archive_related` in `ash_archival`
to dispatch batches of cascading archives
2024-04-24 11:56:36 -04:00
Jechol Lee
56b10be097
fix: use Splode.ErrorClass for error classes (#1054) 2024-04-24 06:14:55 -04:00
Jechol Lee
44c38277e5
improvement: Add attributes_present, attributes_absent. (#1046)
* Add attribute_present, attribute_absent.

* Refactor

* plural name: attributes_present/absent

* Fix conflict
2024-04-23 22:01:35 -04:00
Zach Daniel
dad4d5effc fix: ensure that errors for nested forms are transformed 2024-04-23 14:03:40 -04:00
Jechol Lee
184dfb3642
fix: Set tenant for managed relationship changeset (#1044) 2024-04-23 10:40:19 -04:00
Zach Daniel
5ff767a1aa fix: don't carry over all changes during atomic upgrade
Doing this was causing us to carry over changes that were produced
as part of running the changes in the original changeset build

fixes #1042
2024-04-22 19:01:05 -04:00
Frank Dugan III
35961a793d
feat: leverage resource domain for eager/pre checking (#1040)
closes #1022
2024-04-22 17:15:27 -04:00
Zach Daniel
7e86b971a4 chore: fix migrate task file name 2024-04-22 12:27:43 -04:00
Zach Daniel
34470d4494 improvement: make extension discovery faster 2024-04-21 11:16:33 -04:00
Zach Daniel
8317e6fca9 fix: properly pin Enum.join in atomic for enum types
fixes #1033
2024-04-20 15:50:11 +01:00
Zach Daniel
d49f991021 fix: ensure actor is set when building queries in filter 2024-04-20 15:46:49 +01:00
Zach Daniel
c7991ec8a7 fix: don't eager evaluate type because it breaks data layers 2024-04-19 16:09:42 +01:00
Rebecca Le
7c75e5c102
refactor: Move opt schema definitions for built-in changes and validations to their specific modules (#1036)
* refactor: Move Spark opts definitions for built-in changes to the relevant change modules

This allows the change modules to be read and grokked standalone, without
needing to refer back to the `Builtins` module just for the opts

* refactor: Move Spark opts definitions for built-in validations to the relevant validation modules

This allows the change modules to be read and grokked standalone, without
needing to refer back to the `Builtins` module just for the opts
2024-04-19 15:43:35 +01:00
Zach Daniel
94f319a5f4 chore: invert code interface for simpler checking 2024-04-19 14:19:49 +01:00
Zach Daniel
89f15103c8 fix: ensure __union_tag__ is set when calling sub-union types 2024-04-19 13:41:05 +01:00
Zach Daniel
a2ac66093c fix: handle more &Mod.fun/n variations in fragments 2024-04-17 16:12:55 +01:00
Zach Daniel
28136ec43f chore: format 2024-04-17 15:08:29 +01:00
Zach Daniel
45b66f539b chore: remove atomic
fix: ensure validations are considered atomic
2024-04-17 15:07:15 +01:00
Zach Daniel
8e1fd3b833 improvement: better eager expression parsing and atomic error anticipation 2024-04-17 02:34:33 +01:00
Zach Daniel
ccb06b1628 fix: ensure tenant and actor are properly set in Ash.can?
fixes #1027
2024-04-17 00:14:31 +01:00
Zach Daniel
f960e69437 chore: remove IO.inspect 2024-04-16 21:49:59 +01:00
Zach Daniel
70cd40065b fix: ensure changeset filter is parsed for templates 2024-04-16 21:03:25 +01:00
Zach Daniel
65675ef337 fix: properly parse additional changeset expression 2024-04-16 20:45:43 +01:00
Zach Daniel
371c2d1515 fix: properly parse changeset template for filters 2024-04-16 20:41:19 +01:00
Zach Daniel
3044339396 fix: properly parse changeset filter 2024-04-16 20:35:30 +01:00
Zach Daniel
4b50550149 chore: fix typo 2024-04-16 20:31:57 +01:00
Zach Daniel
3b8a15fd34 fix: ensure changeset filters are applied on bulk destroy/update 2024-04-16 20:27:42 +01:00
Zach Daniel
a147062523 improvement: add Ash.read_first 2024-04-16 18:19:20 +01:00
Zach Daniel
77ee3686eb improvement: helpful output in mix tasks helper 2024-04-16 17:37:15 +01:00
Riccardo Binetti
6d209e8836
feat: configurable multitenancy on read actions (#1030)
Allow making specific read actions able to optionally or totally bypass
multitenancy
2024-04-16 12:09:13 +01:00
Dmitry Maganov
8bcbfc5b17
fix: support all calculate opts in code interface methods (#1026) 2024-04-15 22:34:33 +01:00
Riccardo Binetti
11de5dd64f
improvement: use explicit read actions when reading relationships (#1029)
While filter, sorts etc are already copied from the read action into the query,
using the right action is relevant, for example, when it's checked against in
policies, or in preparations that check the action name from the query
2024-04-15 22:33:56 +01:00
Riccardo Binetti
3338b343ac
improvement: use cached to_tenant when setting tenant attribute (#1021) 2024-04-14 11:53:09 -04:00
Zach Daniel
3519a85cee fix: ensure to_tenant is copied to aggregate query 2024-04-13 20:47:01 -04:00
Zach Daniel
bc69f904e2 improvement: support require_reference?: false on code interfaces
improvement: support `:filter` option on bulk create/destroy
2024-04-13 17:21:43 -04:00
Riccardo Binetti
9c74e52bd8
improvement: make match/1 overridable in Ash.Type.Enum (#1020)
Allow handling additional inputs to map them to one of the enum values
2024-04-13 14:07:23 -04:00
Zach Daniel
0e2b392413 fix: compilation time improvements (hopefully) 2024-04-12 14:14:14 -04:00
Lukas Ender
10e3722446
fix: code_interface actions accept @context (#1016) 2024-04-12 10:26:46 -04:00
Zach Daniel
8ea51ec506 fix: ensure tenant is set to opts in action helpers 2024-04-11 23:33:22 -04:00
Zach Daniel
47dde10329 improvement: adding domain to embedded resource is an error 2024-04-11 22:28:47 -04:00
Zach Daniel
0416ce1d0d fix: ensure more consistent use of Ash.Tenant.to_tenant/2 2024-04-11 11:41:29 -04:00
Zach Daniel
dc1205a48f fix: ensure that strict loads are applied at all nesting levels 2024-04-11 10:16:24 -04:00
Zach Daniel
2474fbed44 improvement: raise more sensible error on unsupported pagination 2024-04-11 09:38:49 -04:00
Zach Daniel
752320c139 fix: properly load depended on fields for relationships even if public?: false 2024-04-11 08:04:20 -04:00
Jechol Lee
0b79515f69
fix: fix date_add query function (#1010) 2024-04-11 07:42:11 -04:00
Zach Daniel
e1a0b48172 fix: pass name through to underlying tasks 2024-04-10 19:02:42 -04:00
Zach Daniel
829f6d6e49 improvement: support builder options in read code interfaces 2024-04-10 15:57:30 -04:00
Zach Daniel
268b335946 chore: fix return type matching for generic actions 2024-04-10 13:58:22 -04:00
Zach Daniel
bae263ca12 improvement: support omitting generic action return types 2024-04-10 13:46:44 -04:00
Riccardo Binetti
9f2b4ab8ba
improvement: call ToTenant protocol when setting tenant in actions (#1004) 2024-04-10 09:35:39 -04:00
Rebecca Le
3fce34cda6
fix: Validate all conditions in a numericality validation instead of only the last (#997)
The previous `reduce` loop did not break on the first failure and
return the error, it returned the last iteration of the loop

Some more work may need to be done on the atomic side of the validation,
I'm not familiar with how they work!
2024-04-10 09:25:42 -04:00
Zach Daniel
f504ab6a67 chore: fix domain behaviour impl 2024-04-10 07:55:37 -04:00
Riccardo Binetti
8eb98bc663
fix: swap the parameters in Ash.ToTenant.to_tenant/2 (#1003)
This is technically a breaking change, but without this the protocol would never
work as intended since the funtion gets dispatched based on the type of the
first parameter and the resource parameter will always be an atom (precisely, an
alias) so the implementation for Atom will always be called
2024-04-10 06:58:53 -04:00
Zach Daniel
2f28bd9ee7 chore: better use Ash.Resource options
chore: atom -> module
2024-04-09 22:55:26 -04:00
Zach Daniel
46ed97dd10 improvement: add ash.rollback mix task
chore: fix some naming/mix task steps
2024-04-09 20:24:08 -04:00
Zach Daniel
4f26773fe0 improvement: add ash.rollback task 2024-04-09 14:54:44 -04:00
139058d4c0 fix(Ash.Reactor): crash when calling an ash reactor for the first time.
Thanks to @carlgleisner for the [detailed reproduction](https://github.com/carlgleisner/reactor_notification_worker_issue).

The problem was caused by an attempt to not have nested reactors indepdently publish their notifications separate to the parents but contained a logic flaw which caused the agent to not start, but only the first time you try and use a given reactor.

The fix involves _always_ starting a notification agent for each reactor, but nesting them.  When a reactor completes it either publishes it's notifications to the parent reactor or to ash if there are no parent reactors.
2024-04-10 06:19:38 +12:00