Commit graph

1804 commits

Author SHA1 Message Date
Zach Daniel
bae2aa2ad2 fix: only depend on calcs in runtime calcs 2023-07-18 13:02:38 -04:00
Zach Daniel
d98f66da6f fix: handle manual relationships where source field doesn't exist 2023-07-18 07:49:00 -04:00
Zach Daniel
4508d1d469 improvement: support the - unary operator
yknow, because numbers are negative sometimes
2023-07-17 22:22:09 -04:00
Zach Daniel
3af1b8a994 fix: only error on incorrect destination managed relationships when they are resources 2023-07-14 15:33:54 -04:00
Eliel Gordon
216755b275
fix set_tenant spec (#655) 2023-07-14 12:38:56 -04:00
Zach Daniel
fcc319d965 improvement: add ForbiddenField exception 2023-07-13 09:05:04 -04:00
Zach Daniel
94815605b9 improvement: warn on api missing from config 2023-07-13 08:42:52 -04:00
Zach Daniel
9987cb05e8 chore: better error message on resource in no apis 2023-07-13 08:23:13 -04:00
Zach Daniel
c0d8a86987 improvement: support resources directly in API modules
improvement: compile time warning on resources not detected in any apis
2023-07-13 01:38:21 -04:00
Zach Daniel
7114b5efbb improvement: exists type aggregate 2023-07-13 00:08:51 -04:00
Zach Daniel
2634d3d830 improvement: add at/2 function 2023-07-12 16:53:43 -04:00
Zach Daniel
d27e871b8f improvement: add string_split expression 2023-07-12 15:11:21 -04:00
skanderm
925f5c1f9a
fix: incorrect error for casting binary UUID (#653) 2023-07-11 20:35:01 -04:00
Zach Daniel
8e12a14b25 improvement: add field_policy_bypass
fix: fix and improve policy breakdown logs
improvement: optimize field selection/loading when possible
2023-07-11 10:28:07 -04:00
Zach Daniel
07d7dd5491 improvement: deselect fields we know statically are not visible 2023-07-11 09:23:25 -04:00
James Harton
ebbbcca301
fix: incorrect typespec for bulk_create/5. (#646) 2023-07-10 19:31:07 -04:00
Zach Daniel
1d2a04d972 chore: optimize replace_dynamic_loads/4 2023-07-10 09:02:53 -04:00
Barnabas Jovanovics
c442d83534
test: add test for aggregate field policy (#644) 2023-07-10 09:00:55 -04:00
James Harton
13a14674d0
fix: add handle_change/3 and prepare_change/3 to Ash.Type.Union (#642) 2023-07-10 11:55:53 +12:00
Zach Daniel
be75743b13 fix: properly detect selected attributes for changeset field policies 2023-07-06 10:58:09 -04:00
Mariusz Morawski
5ed2109e33
improvement: Add Negate validation (#636)
* Add `Negate` validation
---------

Co-authored-by: Zach Daniel <zachary.s.daniel@gmail.com>
2023-07-05 16:25:51 -04:00
Zach Daniel
93d4f1fd26 fix: run before_action after authorization 2023-07-05 11:51:54 -04:00
Zach Daniel
d9687c7b1f fix: return accumulator to correct state after altering exists 2023-07-04 09:39:12 -04:00
Alan Heywood
4ab7e84e4f
fix: typo in at_most validation message (#640) 2023-07-04 08:59:12 -04:00
Zach Daniel
102522adf7 fix: select attributes in load statement 2023-07-03 22:44:11 -04:00
Zach Daniel
60c96c7a1d fix: don't loan unless we need to for runtime filters 2023-07-03 12:23:35 -04:00
Zach Daniel
835515ecc6 fix: load after all hooks have completed 2023-06-28 21:04:31 -04:00
Zach Daniel
b86c66b505 fix: don't allow is_nil as an expression operator 2023-06-28 16:41:34 -04:00
Zach Daniel
692dae153d fix: proper source field loading on related data 2023-06-28 14:32:05 -04:00
Zach Daniel
4efa2a8ab1 fix: reselect all selected attributes on action loading 2023-06-28 13:31:47 -04:00
Zach Daniel
5abe51070a improvement: better behavior for invalid filter value errors
fix: don't deselect fields on loading for changesets
2023-06-28 13:27:49 -04:00
Zach Daniel
2c129a7ab7 fix: select after setting notification data
resolves a bug where attributes were not selected for create notifications

docs: add validations guide

closes #631
2023-06-28 11:03:51 -04:00
Eduardo B. A
5fe72d4703
feat: Adds Ash.Changeset around_transaction (#632) 2023-06-27 22:13:50 -04:00
Robert Ellen
924b62130d
docs: add missing argument to calculate example (#633) 2023-06-27 21:46:28 -04:00
Zach Daniel
5d20af82c3 improvement: support partial eager evaluation of functions 2023-06-27 19:11:03 -04:00
Zach Daniel
25f899d6f4 improvement: support specifying calculation as an option 2023-06-24 06:55:38 -05:00
Zach Daniel
51a86cd58d fix: fix field policy expressions
fix: handle various inconsistencies in runtime expression runner
2023-06-22 16:26:03 -04:00
Zach Daniel
c93c4b88f7 chore: fix credo/dialyzer 2023-06-22 14:19:40 -04:00
Zach Daniel
0b6d93c7c4 feat: add field_policies
see included documentation for more information on how field policies
work.
2023-06-22 14:00:11 -04:00
Zach Daniel
1a9b2c8406 improvement: fix loading w/ only nil values 2023-06-22 10:37:25 -04:00
Spark Kim
843f561bd5
docs: add question mark (#630) 2023-06-21 22:49:59 -04:00
Abhishek Tripathi
06329b97cf
improvement: add verifier for identity fields. (#626)
* improvement: adds verifier for identity fields.
---------

Co-authored-by: abhishek <abhishek.tripathi@tinymesh.in>
2023-06-20 01:05:41 -04:00
kernel-io
4b08e9865f
updated api functions to use changeset (#628) 2023-06-19 00:11:40 -04:00
Zach Daniel
44be22fa73 improvement: fix problems w/ nested loads using relationship load calcs 2023-06-16 15:07:44 -04:00
Zach Daniel
bb7c2d3b48 fix: check paginability before streaming 2023-06-15 16:56:23 -04:00
Zach Daniel
ae430d0b38 docs: update docs for calculate function 2023-06-15 11:00:55 -04:00
Zach Daniel
a7d069ae30 fix: properly set notification_data from loaded record 2023-06-14 20:40:04 -04:00
Zach Daniel
3f3a588df8 fix: properly handle lazy loaded many to many relationships 2023-06-14 19:52:05 -04:00
Dmitry Maganov
bf293a63c3
docs: :maybe means true in can? by default, not false (#624) 2023-06-14 19:38:03 -04:00
Dmitry Maganov
28dfd0d71c
fix: remove duplicate doc for authorize? in Query.for_read_opts (#623) 2023-06-14 18:37:49 -04:00
Zach Daniel
a451fb9e6b fix: set notification data with loaded result 2023-06-14 18:25:13 -04:00
Dmitry Maganov
1ca4d9870a
fix: honor not_found_error?: true opt in code interface get actions (#620) 2023-06-14 09:43:51 -04:00
Zach Daniel
11404d896d fix: typo on keyset refactor 2023-06-14 07:51:13 -04:00
Zach Daniel
0e12686c61 fix: ensure attributes for keyset pagination are selected 2023-06-14 07:38:43 -04:00
Zach Daniel
b3592aecfd docs: document select and ensure_selected to build/2 docs
closes #510
2023-06-13 12:06:11 -04:00
Dmitry Maganov
984968d8ba
improvement: add support for generic actions in api.can (#617) 2023-06-13 09:35:27 -04:00
Dmitry Maganov
939b25d727
feat: generate some action helpers with code interface (#614) 2023-06-12 22:59:17 -04:00
Zach Daniel
6c4b2fb5ed fix: can_load?/1 -> can_load?/2 2023-06-12 16:57:12 -04:00
Zach Daniel
0eddcda355 fix: handle new load calculations in nested loading? checks 2023-06-12 14:46:36 -04:00
Zach Daniel
0a677ccde1 fix: don't load nil values for runtime types 2023-06-12 12:44:54 -04:00
Zach Daniel
d47dbe239c improvement: properly pass calculation args in keyset filters 2023-06-11 20:48:42 -04:00
Zach Daniel
4ef5911696 fix: properly set upsert_keys on bulk upserts 2023-06-11 20:30:13 -04:00
Dmitry Maganov
b68b816cc7
fix: continue refactor in code interface (#611) 2023-06-11 08:56:23 -04:00
RaspberryLambda
ffaf6d57df
* improvement: add data layer introspection to Ash.Resource.Info (#610)
---------

Co-authored-by: Daniel Stewart <mgdog1@googlemail.com>
2023-06-10 13:17:17 -04:00
Zach Daniel
be57b909b5 fix: honor query limit when streaming 2023-06-10 13:09:45 -04:00
Dmitry Maganov
ab981a79a5
fix: refactor out some repetition in code interface (#609) 2023-06-10 00:02:03 -04:00
Zach Daniel
e804f3c9f9 fix: properly handle loading through list types 2023-06-09 18:21:46 -04:00
Zach Daniel
25acc2d793 improvement: better keyset pagination behavior on first and last pages 2023-06-09 15:08:49 -04:00
Zach Daniel
1442daa667 chore: fix dialyzer 2023-06-09 12:19:02 -04:00
Zach Daniel
f3703f9ebe fix: handle api missing in code interface calls 2023-06-09 12:03:31 -04:00
Zach Daniel
0d32560651 fix: pass empty select statement when loading on changesets
fix: fixes for loading through attributes
2023-06-09 10:18:17 -04:00
Dmitry Maganov
f5238674a4
fix: drop proper opts keys when calling api in code interface (#608) 2023-06-09 10:16:15 -04:00
Zach Daniel
dc58cf8c2e fix: remove validation that was breaking real design patterns 2023-06-09 02:22:56 -04:00
Zach Daniel
d526996669 improvement: optimize LoadRelationship calculation 2023-06-09 00:28:09 -04:00
Zach Daniel
6320dad188 fix: various fixes to data loading
improvement: `Ash.Query.accessing/2` to get a list of fields being accessed
improvement: builting `LoadAttribute` and `LoadRelationship` calculations
2023-06-09 00:16:27 -04:00
Zach Daniel
a52a0a2554 improvement: warn on invalid/impossible policies 2023-06-07 22:35:55 -04:00
Zach Daniel
907aec5e82 improvement: support loading through types
Will document this in a separate PR. The broad strokes are this:

1. to load through an attribtue, `load(attribute: [:nested: :stuff])`
2. to load through a calculation, `load(calculation: {:%{...input}, nested: :stuff})`
3. union types support loading through them, and is done first by keying by the type name, i.e: `load(union: [type_name: [nested: :stuff])`.
4. union types support specifying a load statement for all types with `load(union: [*: [nested: :stuff]])`
2023-06-07 21:54:17 -04:00
Zach Daniel
dfe8bbf5f0 fix: properly set tenant on nested calculation loads 2023-06-07 10:41:33 -04:00
Zach Daniel
0381072c6b fix: properly set calc_name to resource calculation name on aliased calc loads 2023-06-07 10:24:09 -04:00
Zach Daniel
f223855e28 chore: credo/compiler warnings 2023-06-07 10:22:30 -04:00
Zach Daniel
c23cd40ccb chore: continue work on loading through attributes 2023-06-07 10:22:30 -04:00
Zach Daniel
1d6e5b2827 fix: check correct calculation dependency for relationship 2023-06-07 10:11:33 -04:00
Zach Daniel
1e52079416 fix: don't use to_string on the calculation names 2023-06-07 10:05:34 -04:00
Zach Daniel
ffc4ebcff1 chore: output both dependencies in relationship dependency error 2023-06-07 09:33:53 -04:00
Zach Daniel
2eedbdf934 chore: fix debug output from raised error 2023-06-07 09:22:34 -04:00
Zach Daniel
221efb09c9 fix: don't need to check current aggs/calcs in filters anymore 2023-06-07 09:08:29 -04:00
Zach Daniel
cff3c4db91 fix: set query tenant on calc dep loads
chore: set some groundwork for `Ash.Type.load/5`
2023-06-06 14:21:34 -04:00
Zach Daniel
85da9eff6f improvement: properly set tenant from initial data 2023-06-06 11:48:16 -04:00
kernel-io
5b6c81d800
fix: copy tenant to step on flow build (#603) 2023-06-06 09:27:02 -04:00
kernel-io
c4bb198d0c
docs: clarify custom.ex async? documentation (#602) 2023-06-06 09:25:09 -04:00
kernel-io
45dc97cdb4
fix: ensure add_tenant/1 checks the correctkey (#601) 2023-06-06 09:24:30 -04:00
Zach Daniel
c6d1a089a5 fix: properly chain batch to each change in bulk creates 2023-06-05 19:57:36 -04:00
Zach Daniel
aa1f902c50 fix: properly handle failed bulk creates with no errors 2023-06-05 19:07:52 -04:00
Zach Daniel
8e7815388e improvement: handle nils in memory the same way sql would have 2023-06-05 16:50:27 -04:00
Zach Daniel
54569c38e1 improvement: support changeset.load 2023-06-05 13:30:29 -04:00
Barnabas Jovanovics
5477102104
fix: also do not autogenerate values for optional fields that have a generator (#599) 2023-06-05 08:57:22 -04:00
Dmitry Maganov
af307f0504
fix: rename few error files to match module names (#597) 2023-06-03 07:44:33 -04:00
Dmitry Maganov
23bf59822e
chore: remove class and stacktrace from ErrorKind implementations (#596) 2023-06-02 17:57:07 -04:00
Barnabas Jovanovics
1185b615f8
fix: Only create values for attributes that did not get a generator (#595) 2023-06-02 08:18:02 -04:00
Zach Daniel
bf6797619b improvement: verify reserved calc names, support as input 2023-06-01 13:26:54 -04:00
Dmitry Maganov
adb6cefac1
fix: remove field name from string length error message (#594)
* fix: remove field name from string length error message

* fix: remove old unused `Error.Changes.UnknownError`

* fix: do not capitalize ash error messages

* fix: change error kind code for `Ash.Error.Forbidden.Policy`
2023-06-01 02:29:19 -04:00
Zach Daniel
5ab0c08f0f fix: properly load aggregates required for keyset pagination 2023-05-30 22:17:05 -04:00
Zach Daniel
e521048809 fix: properly load depended on source attributes 2023-05-30 21:31:48 -04:00
Zach Daniel
282c8945bb fix: handle pre-hydrated predicates in expressions 2023-05-29 09:57:10 -04:00
Zach Daniel
f6b14d0030 fix: handle nil errors on bulk creates 2023-05-27 20:18:45 -04:00
Dmitry Maganov
77310bb1f6
fix: add :forbidden to error_class, lowercase code for Forbidden (#589) 2023-05-27 11:45:01 -04:00
Zach Daniel
37710af26f fix: proper required value validations in bulk creates
fix: don't use error count in place of errors
2023-05-27 00:22:15 -04:00
Zach Daniel
1ab8d3636e improvement: make loading?/2 smarter 2023-05-26 23:58:35 -04:00
Zach Daniel
6ae41d58e8 fix: properly manage relationships on bulk creates
fix: validations could undo certain changeset changes in bulk creates
2023-05-26 10:25:35 -04:00
Zach Daniel
d2b54fdda9 fix: properly upsert on non batchable rows 2023-05-25 11:34:13 -04:00
Zach Daniel
5af9dc6696 fix: properly honor the return_errors? option 2023-05-25 09:46:27 -04:00
Zach Daniel
958f977139 improvement: better support for multiple code interfaces w/ same name 2023-05-23 19:10:11 -04:00
Zach Daniel
58329a073d fix: properly wrap errored changesets in bulk creates 2023-05-23 13:44:48 -04:00
Zach Daniel
35b1278830 fix: don't notify unless notify?: true in bulk creates 2023-05-23 10:45:31 -04:00
Zach Daniel
d56937aeb6 fix: properly wrap errored changesets in {:error in bulk creates 2023-05-23 10:42:12 -04:00
Zach Daniel
6fb348c162 improvement: handle bulk transaction errors better 2023-05-22 21:01:46 -04:00
Alan Heywood
62ef8ff19c
fix: swap Exception.exception? for Kernel.is_exception (#584) 2023-05-22 16:11:25 -04:00
Shirish Goyal
13f834ad09
docs: Fix for code_interface generated help (#583)
"actor" term was duplicated and one of them was supposed to be "tracer"
2023-05-19 09:06:46 +12:00
739dbb89a1 fix: accidental variable shadowing in calculation loading. 2023-05-18 16:33:01 +12:00
Alan Heywood
1653162041
fix: add missing batch_size opt for bulk_create (#581) 2023-05-18 00:05:29 -04:00
Zach Daniel
6ec06ca867 chore: release version v2.9.9 2023-05-17 22:37:39 -04:00
Zach Daniel
687723730a fix: errors on casting arrays of unions in newtypes 2023-05-17 22:36:47 -04:00
Zach Daniel
66ea912f8c improvement: add unavailable error 2023-05-17 13:15:24 -04:00
Zach Daniel
f7f96bb463 fix: don't require {:data_layer, *} for custom locks 2023-05-16 15:16:40 -04:00
Zach Daniel
c99c36d8c8 docs: update get_and_lock/1 docs 2023-05-16 15:00:16 -04:00
Zach Daniel
7de83e8bb1 improvement: add get_and_lock/1 builtin change 2023-05-16 14:59:47 -04:00
Zach Daniel
ca1769900f fix: don't use :map as storage type for Map 2023-05-15 09:49:30 -04:00
James Harton
7326ca330e
improvement(Ash.Type.Module): Add :module type. (#578) 2023-05-15 07:26:52 -04:00
Zach Daniel
ccacfd78fc improvement: handle ci strings in cast_stored 2023-05-11 15:51:41 -04:00
Zach Daniel
db715f5153 docs: remove reference to filter option in Query.aggregate 2023-05-10 23:17:46 -04:00
Zach Daniel
8fdd319697 chore: small fixes around optimistic locking 2023-05-08 16:10:46 -04:00
Zach Daniel
d1a64a66e5 improvement: better default overflow logic
improvement: custom stale record error
2023-05-08 15:28:50 -04:00
Zach Daniel
4cd5ae2c02 chore: fix dialyzer 2023-05-08 15:16:44 -04:00
Zach Daniel
b09d8781ca improvement: optimistic locking via changeset.filters 2023-05-08 15:13:46 -04:00
bcksl
b9569b57c3 docs: bulk_create does not support automatic upsert_fields 2023-05-08 09:41:21 +12:00
zimt28
7d070e49bb
Correctly map results of inline calculations (#573) 2023-05-06 13:03:40 -04:00
Moxley Stratton
84aff5a999
Improve documentation for Ash.Changeset.add_error/3 (#572) 2023-05-05 20:23:03 -04:00
Zach Daniel
c174713b70 fix: user proper upsert identity for bulk operations 2023-05-04 11:07:44 -04:00
Zach Daniel
ab3267fdc8 chore: credo 2023-05-03 19:58:09 -04:00
Zach Daniel
b376b7267a fix: ecto type of map is just :map 2023-05-03 19:56:42 -04:00
Zach Daniel
f04ffd5ebd improvement: support bulk upserts 2023-05-02 21:56:15 -04:00
Zach Daniel
80820a01fc fix: unbound variable in schema definition 2023-05-02 20:11:31 -04:00
Zach Daniel
e05b5058dc docs: bulk actions docs 2023-05-02 20:08:25 -04:00
Zach Daniel
523452cb94 docs: basic actions -> generic actions 2023-05-02 20:00:18 -04:00
Zach Daniel
5d3235dbf9 fix: fix dialyzer 2023-05-02 19:52:03 -04:00
Zach Daniel
3a6d79e1c6 improvement: bulk create improvements, docs 2023-05-02 19:48:29 -04:00
Zach Daniel
1e61ae2d3c improvement: finishing initial touches on bulk actions 2023-05-02 17:24:24 -04:00
Zach Daniel
0d6a86e54e fix: proper return value for synthesized bulk creates 2023-05-02 14:28:27 -04:00
Zach Daniel
0ced9c7639 fix: assorted bulk create fixes 2023-05-02 14:04:08 -04:00
Zach Daniel
cb99faf918 fix: set upsert context from action on create changesets 2023-05-02 13:37:53 -04:00