Commit graph

2239 commits

Author SHA1 Message Date
Zach Daniel
2888fea33b chore: format 2024-01-25 13:55:09 -05:00
Zach Daniel
b494c76a92 fix: deselect known forbidden fields *after* query authorization is complete 2024-01-25 11:19:52 -05:00
Zach Daniel
a68a628839 improvement: always define merge_load/4 2024-01-25 10:45:08 -05:00
Dmitry Maganov
c8b1eaa8f0
fix: soft? in destroy action options is a boolean, not an atom (#851) 2024-01-24 14:52:31 -05:00
Barnabas Jovanovics
cfec396f99
fix: load fails because of empty list instead of query (#847) 2024-01-24 11:18:51 -05:00
Zach Daniel
66295c4efb improvement: derive source_attribute_on_join_resource for many to many 2024-01-23 23:43:02 -05:00
Zach Daniel
13bff0a9cd fix: don't attempt to derive destination_attribute_on_join_resource 2024-01-23 23:38:52 -05:00
Zach Daniel
1f96993e1b chore: fix typo accessing action 2024-01-23 23:22:39 -05:00
Zach Daniel
fe3215cc07 improvement: atomic implementation for relate_actor
improvement: include a message along with the non-atomic signifier
2024-01-23 22:41:15 -05:00
Zach Daniel
3e87e6220f improvement: support transactions on bulk destroys 2024-01-23 22:10:14 -05:00
Zach Daniel
bf81f8c8a5 chore: format 2024-01-23 21:48:38 -05:00
Zach Daniel
1807523ba2 improvement: support transactions in bulk updates 2024-01-23 21:36:17 -05:00
Zach Daniel
878011bd3e improvement: count_nils/1 function
improvement: `present/absent` atomic implementation
improvement: add `atomic_ref/1` template helper
2024-01-23 19:13:14 -05:00
Jinkyou Son
2368fe82b6
improvement: Change typespec of tenant from String.t() to term() (#845) 2024-01-23 13:16:04 -05:00
Dmitry Maganov
91c34c3939
fix: join_relationship in many to many can make through optional (#846) 2024-01-23 13:15:51 -05:00
Barnabas Jovanovics
c60c5111ae
fix: make sure query has action (#844) 2024-01-23 10:42:34 -05:00
Barnabas Jovanovics
f25d7edc2f
fix: pass in actor to api.can call (#843)
* fix: pass in actor to api.can call

* only call api.can if authorize? is true
2024-01-23 09:22:19 -05:00
Nduati Kuria
d229ade9fc
Add :decimal aggregate support to DataLayer.Ets [WIP] (#841)
* Add `:decimal` aggregate support to `DataLayer.Ets`

* Add regression test

* Fix dialyzer

* Handle nils in `:avg` calculation

* Refactor nested ifs

* Refactor test
2024-01-22 16:03:34 -05:00
Barnabas Jovanovics
4ffd3cfa11
fix: do not check primary key fields in filter (#839) 2024-01-22 11:31:20 -05:00
Barnabas Jovanovics
20880691fb
fix: add page opts to context again (#838) 2024-01-22 11:29:13 -05:00
Zach Daniel
7b40917516 fix: return errors with query from read action
closes #837
2024-01-21 13:55:01 -05:00
Zach Daniel
ecf4893b64 fix: properly set defaults on upsert in mnesia 2024-01-21 12:06:16 -05:00
Zach Daniel
45be2a34eb chore: format 2024-01-21 01:27:08 -05:00
Zach Daniel
ce4c3cb2c1 fix: don't load through attributes twice, but also don't miss any 2024-01-21 01:26:22 -05:00
Zach Daniel
d013818c0a improvement: handle pkey-less resources when attaching fields
improvement: set lazy defaults when applying changeset attributes
2024-01-21 00:45:35 -05:00
Zach Daniel
a08582ed0f chore: remove IO.inspect 2024-01-20 21:50:14 -05:00
Zach Daniel
5af5702efb improvement: add prepend?: true option to add_change 2024-01-20 21:48:57 -05:00
Zach Daniel
fc522ff6c5 fix: handle errors properly from invalid loads 2024-01-20 19:39:35 -05:00
Zach Daniel
892cd7c845 fix: handle data layer calculations for missing records 2024-01-20 18:52:36 -05:00
Zach Daniel
7aaea7bd55 fix: only load through calculations in the correct order 2024-01-20 13:53:35 -05:00
Zach Daniel
aa227b8a6a chore: format 2024-01-19 21:17:22 -05:00
Zach Daniel
e646be5393 fix: properly detect cyclic dependencies in calculation runner
fix: properly annotate in-query calculations as complete for dependency calculation
2024-01-19 21:10:48 -05:00
Zach Daniel
e49f42a195 fix: fix present? and load_through bugs 2024-01-19 17:26:13 -05:00
Zach Daniel
21de0fe882 chore: fix typo 2024-01-19 16:27:36 -05:00
Zach Daniel
b654c0cd5c chore: remove IO.inspect 2024-01-19 16:26:51 -05:00
Zach Daniel
70918d42c5 chore: remove unused variables/aliases 2024-01-19 15:51:18 -05:00
Zach Daniel
1140771f74 fix: don't require pagination in incorrect cases 2024-01-19 15:50:35 -05:00
Zach Daniel
e5d78ae074 fix: get tests passing for bulk creates again 2024-01-19 10:49:26 -05:00
Zach Daniel
3db822d775 improvement: optimize embedded resource creation 2024-01-19 09:58:54 -05:00
Zach Daniel
c48cb08026
improvement: rewrite read actions to not use Ash.Engine (#836) 2024-01-19 00:05:42 -05:00
Zach Daniel
fc583b1d1e docs: remove old docs 2024-01-18 09:20:16 -05:00
Zach Daniel
4c96fdd40f fix: don't ignore stream batch size 2024-01-13 21:48:11 -05:00
Zach Daniel
6f56f3c4db chore: use ash_query as base count aggregate query 2024-01-12 14:18:01 -05:00
Zach Daniel
4200b5df50 chore: fix dialyzer/credo 2024-01-12 14:14:08 -05:00
Zach Daniel
072486bebd docs: revamp hexdocs
fix: use current read action for counting
2024-01-12 14:07:35 -05:00
Zach Daniel
0ca7393417 chore: undo typo 2024-01-12 08:40:34 -05:00
Zach Daniel
76cfe55a2a improvement: add all_tenants? option to identities 2024-01-12 08:36:06 -05:00
Zach Daniel
59e50f8dfa fix: set tenant attribute in bulk create
fixes: #830
2024-01-12 08:19:55 -05:00
Zach Daniel
db7e42713c docs: add a docstring for expr_sort 2024-01-12 07:49:58 -05:00
Jechol Lee
250c4ab8c8
improvement: support Ash.CiString in string_join (#832) 2024-01-12 00:21:30 -05:00
Jechol Lee
6b0e9fe1b3
improvement: Add code interface support in Info and Builder. (#828) 2024-01-12 00:19:51 -05:00
Zach Daniel
bbd866956d improvement: authorize each related join using join_filters 2024-01-12 00:17:37 -05:00
Rebecca Le
0a4a7c057d
feat: Allow :self as an option when requesting a relative page from a given page (#833) 2024-01-12 00:16:41 -05:00
Zach Daniel
3fac46e65b chore: fix shadowed variable 2024-01-11 17:08:05 -05:00
Zach Daniel
df94bfe0b6 chore: dialyzer 2024-01-11 16:27:43 -05:00
Zach Daniel
55219a0dfb chore: can't enumerate :unknown 2024-01-11 16:19:36 -05:00
Zach Daniel
f564e47fb8 fix: fix runtime filter parsing & make last arg optional 2024-01-11 15:45:47 -05:00
Zach Daniel
2e2d2c404c fix: undo incorrect behaviour in runtime evaluation 2024-01-11 15:35:49 -05:00
Zach Daniel
6b74072ada chore: formatter, cheat sheets, credo 2024-01-11 15:05:25 -05:00
Zach Daniel
35573a6f4e improvement: support join_filters in aggregates 2024-01-11 14:57:22 -05:00
Jechol Lee
5eaec735f8
fix: fix typespecs and cleanup Ash.Resource.Builder (#827) 2024-01-11 11:44:04 -05:00
Zach Daniel
5b82ce293f fix: authorize aggregate references in calculations 2024-01-10 07:11:02 -05:00
Zach Daniel
63c15bbfe9 improvement: error on using relate_actor with :many cardinality relationships 2024-01-10 05:56:22 -05:00
Robert Graff
fc9132e75b
docs: metadata docs improvement (#823) 2024-01-09 19:27:16 -05:00
Alan Heywood
dbb4a38ea3
fix: only put keywords to be interpolated in message in error vars (#821)
* fix: only put keywords to be interpolated in message in error vars
---------

Co-authored-by: Zach Daniel <zachary.s.daniel@gmail.com>
2024-01-08 18:08:17 -05:00
Zach Daniel
d617f42daf improvement: append new entities in Ash.Resource.Builder 2024-01-08 16:19:36 -05:00
Zach Daniel
c1fd67f22c fix: ignore empty relationship paths when authorizing relationships 2024-01-08 15:47:48 -05:00
Zach Daniel
4652a8237e fix: properly build query from opts in aggregates 2024-01-08 15:40:27 -05:00
Zach Daniel
a12131cf70 improvement: simplify aggregate loading, remove Ash.Engine from it
improvement: add atomic implementation for builtin `increment` change
improvement: simplify related path authorization, use same tool as aggregates now use
2024-01-08 15:31:09 -05:00
Robert Graff
b35f30fb6f
docs: Fix typo in page_requires_pagination.ex (#819) 2024-01-05 19:15:52 -05:00
Zach Daniel
80d117ed1e chore: remove IO.inspect 2024-01-05 12:41:58 -05:00
Zach Daniel
16818f1f14 fix: don't consider ash field signals as present 2024-01-05 12:30:59 -05:00
Zach Daniel
c4fd06aea0 improvement: refactor filter requests to not use Ash.Engine 2024-01-04 12:46:38 -05:00
Zach Daniel
af9c78c2f6 chore: fix typo 2024-01-04 01:01:44 -05:00
Zach Daniel
fadecf3ee9 improvement: atomic validation implementations for most validations
improvement: support type operator overloading
2024-01-04 00:52:46 -05:00
Zach Daniel
6061a2a16a improvement: add some atomic implementations 2024-01-03 16:48:15 -05:00
Zach Daniel
746fc5df53 fix: add required check for stream pagination 2024-01-01 01:22:12 -05:00
Zach Daniel
fe2156a9ac imorovement: support bulk action callbacks in the data layer 2023-12-31 00:49:22 -05:00
Zach Daniel
44761e7e3f improvement: support :no_rollback and return_query/2 callback 2023-12-29 21:43:15 -05:00
Zach Daniel
b600b23803 improvement: add a return_query/2 callback for data layers 2023-12-29 17:33:23 -05:00
Zach Daniel
4dfa140ec9 improvement: support {:error, :no_rollback, error} from data layer callbacks 2023-12-29 17:23:13 -05:00
Zach Daniel
c3e192c6d8 improvement: always update the join relationship 2023-12-28 15:04:00 -05:00
Zach Daniel
40aa17eab8 fix: ensure __source__ is set on nested embedded attributes 2023-12-28 14:47:40 -05:00
Zach Daniel
259b48e5ea improvement: use new api option in Ash.Query.for_read/4 2023-12-27 18:15:20 -05:00
Zach Daniel
4ee80297d7 improvement: support using the new api option in actions 2023-12-27 18:14:29 -05:00
Zach Daniel
e90842f141 improvement: accept api option in Ash.Changeset.for_* functions 2023-12-27 17:53:23 -05:00
Zach Daniel
3e296a4bba Revert "chore: comment out test for now
This reverts commit cc21661559.
2023-12-27 17:47:50 -05:00
Zach Daniel
034642ffda improvement: update Ash interface for working with new style resources 2023-12-27 17:35:30 -05:00
Zach Daniel
cc21661559 chore: comment out test for now 2023-12-27 17:28:52 -05:00
Zach Daniel
af3d2b321d chore: use unused variable 2023-12-27 16:38:41 -05:00
Zach Daniel
26160e446b chore: require name for ash.codegen 2023-12-27 10:12:19 -05:00
Zach Daniel
19d18c5fcc improvement: better formatting of nested expressions
improvement: helpful errors when misusing `.` in expressions
2023-12-22 22:22:59 -05:00
Zach Daniel
0f8bb664ab fix: properly move maps & lists to expression paths
fix: set tenant when running authorization queries

closes: #812
2023-12-22 21:09:00 -05:00
Zach Daniel
d390d65146 improvement: simplify used aggregate detection
improvement: add `lazy/1` to expressions
docs: add expression docs
2023-12-22 19:06:13 -05:00
Zach Daniel
3a1923fdeb improvement: support providing an input key in predicate maps 2023-12-21 17:17:43 -05:00
Zach Daniel
eb05e9be63 improvement: support streaming without keyset pagination
use the new `allow_stream_with` and `stream_with` options to control
what strategy may be used to stream query results.
2023-12-21 08:35:49 -05:00
Zach Daniel
0932cf32a7 improvement: add callbacks for bulk actions on manual actions 2023-12-20 21:23:13 -05:00
Zach Daniel
ed887413d7 improvement: base case iterative bulk destroy implemented 2023-12-20 21:08:40 -05:00
Zach Daniel
8c17434803 improvement: add iterative, streaming implementation for bulk updates 2023-12-20 17:33:43 -05:00
Rebecca Le
ba6eb773b8
docs: Fill out shortdoc for generate_policy_charts mix task (#808)
This is the one-liner that is shown when running `mix help` to list tasks
2023-12-19 22:51:13 -05:00
Zach Daniel
ff1a590f46 fix: empty milliseconds for utc datetime must have precision 6
fix: ensure actor & authorize? contexts are set even if not provided
2023-12-18 20:14:36 -05:00
Zach Daniel
867c786388 chore: remove unused variables 2023-12-18 16:02:39 -05:00
Zach Daniel
e3605bd80f improvement: detect impending manage_relationship calls when checking attribute presence 2023-12-18 12:47:49 -05:00
Zach Daniel
3ee3279d2f fix: ignore load/limit/offset in aggregate queries, instead of raising
closes #806
2023-12-18 08:28:52 -05:00
Zach Daniel
5f3556e27f fix: properly set changed? for all changesets 2023-12-16 19:22:52 -05:00
Zach Daniel
ca792548ba chore: properly pin values in attribute_equals atomic validation 2023-12-16 13:46:12 -05:00
Zach Daniel
e7513e6e32 improvement: add stacktrace context to errors better 2023-12-16 13:36:49 -05:00
Zach Daniel
575fe52b06 chore: fix integer atomic update casting 2023-12-16 10:41:21 -05:00
Zach Daniel
2233a33523 improvement: support tenancy on manual actions
docs: update cheat shets
fix: honor tenant option on aggregates

closes #805
2023-12-16 10:33:10 -05:00
Zach Daniel
3be83d6ca4 improvement: lay the groundwork for fully atomic actions 2023-12-16 10:14:02 -05:00
Zach Daniel
1acca3d8e1 chore: return proper authorization errors from actions on failure 2023-12-15 20:12:26 -05:00
Zach Daniel
8e5f628286 fix: pass proper context into manual actions, remove unnecessary changeset code 2023-12-15 18:43:29 -05:00
Zach Daniel
e22c6c7927 fix: ensure actions always raise an error class 2023-12-15 15:33:10 -05:00
Zach Daniel
ad22eeb7e9 improvement: rewrite creates to not use Ash.Engine 2023-12-15 15:10:01 -05:00
Zach Daniel
4cfdb0d635 chore: remove commented out code 2023-12-15 10:15:49 -05:00
Zach Daniel
9103781379 improvement: remove Ash.Engine from update/destroy actions 2023-12-15 10:14:40 -05:00
Zach Daniel
d6ff670e0a chore: fix typespec for Ash.Query.Function 2023-12-15 08:46:18 -05:00
Zach Daniel
5b39ff8e04 improvement: add Ash.Error.from_json/2
improvement: accept expressions in `Ash.Query.calculate`
2023-12-14 16:52:34 -05:00
Thales Grilo
9d2da58fb2
improvement: Adds %Ash.NotSelected{} to ash 3 (!634) (#804)
*  create Ash.NotSelected, add test

*  add ash_three test

* 👌 fix formatting

* 👌 add missing field value

---------

Co-authored-by: thales <thales@uplearn.co.uk>
2023-12-14 16:14:15 -05:00
Zach Daniel
cdb5db9c07 fix: properly unnested union values passed into Ash.Type.Union.prepare_change_array 2023-12-14 09:24:22 -05:00
Zach Daniel
0763335650 docs: update error.ex docs 2023-12-14 09:06:07 -05:00
Zach Daniel
d09c694132 fix: thread context through when setting source constraint on embeds 2023-12-13 17:11:52 -05:00
Zach Daniel
d118d90d51 chore: fix dialyzer issue and corresponding bug from last commit 2023-12-13 15:29:12 -05:00
Zach Daniel
7298a4b51b improvement: honor field policies in sort expressions 2023-12-13 15:08:39 -05:00
Zach Daniel
3b20fba309 fix: don't create invalid datetimes when scrubbing microseconds 2023-12-12 20:35:59 -05:00
Zach Daniel
352e27a153 fix: prepare change with nil old value on union type change 2023-12-12 18:10:34 -05:00
Zach Daniel
839937bf6e fix: properly prepare union value changes when old & new are union structs 2023-12-12 18:07:40 -05:00
Zach Daniel
955ba4987b chore: credo/tasks 2023-12-12 08:51:18 -05:00
Zach Daniel
f790f3a529 improvement: additional atomic callbacks
fix: fix `dump_to_embedded_array`
2023-12-12 08:45:38 -05:00
Zach Daniel
a7c41b2bc8 improvement: add warn_on_transaction_hooks?: false config 2023-12-11 16:27:46 -05:00
Zach Daniel
9bc6370d7d improvement: accept an action input in Ash.Error.to_ash_error/3 2023-12-11 11:43:03 -05:00
Zach Daniel
3800c360ad chore: update typespecs 2023-12-11 08:09:55 -05:00
Zach Daniel
852f27dfb6 improvement: include tenant in change context 2023-12-11 08:08:23 -05:00
Zach Daniel
c38cba51b0 fix: test failures and credo issue 2023-12-10 13:13:06 -05:00
Zach Daniel
22ba69db70 fix: add back in api level verifiers
I have no idea how or why these were removed, but it shouldn't have happened
2023-12-10 12:59:32 -05:00
Zach Daniel
e8da3bfd5c improvement: support nil values in struct type callbacks 2023-12-07 23:28:44 -05:00
Zach Daniel
8ce6e065ce fix: don't apply default limit unless pagination is required 2023-12-06 21:37:43 -05:00
Zach Daniel
618b706e48 fix: properly handle union changes for lists of embeds
at the moment, this only works properly for tagged maps
2023-12-06 13:02:44 -05:00
Zach Daniel
c7e6133317 improvement: support embed_nil_values? for trimming down stored embeds 2023-12-06 10:29:39 -05:00
Zach Daniel
e7d4f29598 fix: honor default_limit option in pagination 2023-12-05 22:59:48 -05:00
Zach Daniel
fa311a936a chore: restore another removed callback 2023-12-05 19:25:35 -05:00
Zach Daniel
9551010adf chore: restore removed predicate 2023-12-05 19:22:51 -05:00
Zach Daniel
2c9bfb187a chore: add comment 2023-12-05 19:15:21 -05:00
Zach Daniel
4641becb9e improvement: use loaded calculation values in expressions 2023-12-05 19:13:16 -05:00
Zach Daniel
095e6c9237 fix: add back in builtin_predicate_operators/0 2023-12-05 01:38:49 -05:00
Jechol Lee
86e171a0c1
test: various test improvements (#795) 2023-12-05 01:34:21 -05:00
Zach Daniel
08a72acc6b fix: various runtime expression evaluation fixes
the issue is that the expression parser didn't support the fact
that some operators accept `nil` values and other operators do not.
2023-12-03 13:43:35 -05:00
Igor Barakaiev
0ae14bdf71
docs: Clarify how to use Enums in attributes (#790) 2023-12-02 22:34:23 -05:00
mrdotb
e9afdcf39f
docs: update example Flow Step transaction (#787) 2023-11-30 10:16:18 -05:00
Zach Daniel
9c0a66b154 fix: honor read action for Api.get calls. 2023-11-29 20:16:04 -05:00