Commit graph

1704 commits

Author SHA1 Message Date
Zach Daniel
e5df4aefd5 fix: don't overwrite keyset when loading data 2023-02-16 17:29:16 -05:00
Zach Daniel
2abcf14403 fix: properly return {:ok, page} in all cases 2023-02-16 16:34:03 -05:00
Zach Daniel
b89d6ce8f6 fix: authorize?: true by default on flows, pass actor through 2023-02-16 15:07:24 -05:00
Zach Daniel
af3d416877 fix: pass actor into engine 2023-02-16 14:51:54 -05:00
Zach Daniel
1e76e74f4f fix: properly handle optional args in code interface 2023-02-14 23:08:51 -05:00
Zach Daniel
83d0e05bdc fix: handle cases where union type is already atom 2023-02-14 16:26:31 -05:00
Zach Daniel
f53ca78f5c fix: various union fixes 2023-02-14 13:34:35 -05:00
Zach Daniel
b7c720fb3f fix: make depend_on_resources more reliable 2023-02-14 12:30:27 -05:00
Zach Daniel
2342126a2d chore: fix dialyzer for union types 2023-02-13 23:57:36 -05:00
Zach Daniel
46b509def4 docs: add moduledocs 2023-02-13 23:50:56 -05:00
Zach Daniel
0c767d0fa1 chore: allow page: [] in new pagination error 2023-02-13 23:44:58 -05:00
Zach Daniel
9924cfc7c0 chore: fix page detection error 2023-02-13 23:38:02 -05:00
Zach Daniel
b911d3a334 chore: just check if page is set to non nil/false value 2023-02-13 23:32:15 -05:00
Kevin Mathew
0e6763d8cc
improvement: Add error message when page is added but pagination is not enabled (#511) 2023-02-13 23:20:40 -05:00
Zach Daniel
0de50e132b improvement: add union type and some tests around it 2023-02-13 22:59:39 -05:00
Zach Daniel
c770e28aa2 improvement: add union short name 2023-02-13 20:40:10 -05:00
Zach Daniel
cbde118903 improvement: add union type 2023-02-13 20:39:45 -05:00
Zach Daniel
d18448f78a improvement: better operator type casting and expression fixes 2023-02-12 19:14:06 -05:00
Zach Daniel
2c8b07fd0b docs: add load/3 to calculation docs 2023-02-12 10:52:27 -05:00
Zach Daniel
27e91c4fa4 fix: use load/3 for builtin concat calc 2023-02-12 10:38:13 -05:00
Zach Daniel
f1d61a601b fix: fix non-optional pagination 2023-02-11 19:33:54 -05:00
Zach Daniel
ef26b122c8 docs: fix unnecessary section in the getting started guide
improvement: add warning on usage of transaction hooks when in a surrounding transaction
2023-02-11 16:57:52 -05:00
Zach Daniel
85a66b1d85 improvement: add before_transaction and after_transaction 2023-02-10 14:12:19 -05:00
Zach Daniel
8ad1778763 fix: pagination behavior is incorrect 2023-02-09 21:21:58 -05:00
Zach Daniel
d72e00fc9c chore: remove bad deprecation warning
fix: `nil` as page_opts is acceptable
2023-02-09 17:50:06 -05:00
Zach Daniel
732728236e fix: fix aggregate.uniq? 2023-02-09 16:04:13 -05:00
Zach Daniel
e4004de15e improvement: support uniq? for count/list attributes 2023-02-09 15:42:43 -05:00
zimt28
91c9b2219f
fix: Type error: Suggest custom short type names as well (#508) 2023-02-09 09:21:52 -05:00
Zach Daniel
b425b243f5 improvement: update spark for latest doc improvements 2023-02-05 18:08:01 -05:00
Zach Daniel
ae46b27f04 fix: handle {:ref, ...} tuple in static syntax 2023-02-05 17:16:59 -05:00
Zach Daniel
2dd54324af chore: sobelow 2023-02-04 01:54:42 -05:00
Zach Daniel
0eca30fb32 chore: more Api.aggregate fixes 2023-02-04 01:53:33 -05:00
Zach Daniel
4f4bd4a436 fix: various fast follows to api aggregate functions 2023-02-04 01:24:58 -05:00
Zach Daniel
8835924901 fix: pattern match problem in aggregate action 2023-02-04 00:55:10 -05:00
Zach Daniel
30eaf1c6e8 feat: initial (and slightly experimental) Api.aggregate support 2023-02-04 00:47:15 -05:00
Zach Daniel
a043e26116 fix: properly handle nested array type constraint validation 2023-02-03 10:32:05 -05:00
Zach Daniel
33bb4a2861 fixs: don't persist calculations in the db 2023-02-02 11:35:47 -05:00
Zach Daniel
54f3a47326 improvement: better description of action_type check 2023-02-01 11:37:37 -05:00
Zach Daniel
850b543cc9 improvement: add more builders
improvement: stop running preparations if one of them returns an error
2023-02-01 02:02:10 -05:00
Zach Daniel
d51d26a472 chore: fix dsl builder typespecs 2023-02-01 00:30:09 -05:00
Zach Daniel
7bbd5a2162 fix: load lazily after action when results are set
When using `Ash.Query.set_result/2` to preempt the data layer action,
we can end up in a position where the action has decided that some number
of aggregates & calculations would be attached to the query. But its
extremely unlikely that the data set with `set_result/2` would actually
have handled loading/calculating things from the query, so we lazily load
it after we get the data if that happens.
2023-01-31 23:43:45 -05:00
Rebecca Le
e8563a03eb
docs: Render api_short_name visibly in the Monitoring guide (#500) 2023-01-31 23:20:51 -05:00
Zach Daniel
bd46571762 docs: remove old documented limitation 2023-01-31 14:42:51 -05:00
Zach Daniel
820d445631 fix: fix typespec for Ash.set_tenant/1 2023-01-31 12:12:04 -05:00
Zach Daniel
e900d00de8 ci: remove tweets/switch to standardized CI pipeline 2023-01-31 11:15:09 -05:00
Zach Daniel
d101c05918 fix: set proper query aggregate when fetching aggregate values 2023-01-30 21:31:16 -05:00
Zach Daniel
ce6b44525f improvement: registry resource validations transformers -> verifiers
improvement: better error message on unknown relationship
2023-01-30 16:10:15 -05:00
Zach Daniel
9f057c057d fix: use destination query for aggregates, join auth to come later 2023-01-30 13:26:50 -05:00
Zach Daniel
c9d63d2936 fix: check changeset.valid? properly on destroys 2023-01-30 13:23:35 -05:00
Zach Daniel
dbb9dd4c98 fix: properly halt on action errors in before_action hooks 2023-01-30 11:52:35 -05:00
Zach Daniel
28b7def5c9 improvement: no async loads except when loading on initial data 2023-01-30 00:06:34 -05:00
Zach Daniel
d7841a90db improvement: support length constraints on array embeds 2023-01-29 20:46:56 -05:00
Zach Daniel
20a2ed8c1f improvement: simplify aggregate loading, fix bug with auth query resource 2023-01-29 18:12:05 -05:00
Rebecca Le
2dfff4476a
docs: Policy tweaks (#490) 2023-01-28 13:12:23 -05:00
Zach Daniel
7dfcd2d3dd improvement: support {:ignore, changeset} from error handlers
improvement: add read action metadata
2023-01-28 09:02:21 -05:00
Zach Daniel
167dba67ca improvement: upgrade to latest spark for compile time improvements
improvement: improve compile times by reorienting some compile deps
2023-01-27 15:32:28 -05:00
Zach Daniel
2787b5074b improvement: add relationships to underlying ecto schemas for better escape hatches 2023-01-27 11:20:08 -05:00
Zach Daniel
eeeab08d32 improvement: reselect explicitly selected queries on reload 2023-01-26 22:13:11 -05:00
Zach Daniel
71dcb17e8b fix: properly surface errors from embedded attributes 2023-01-22 10:40:38 -05:00
Zach Daniel
0a76ee77da fix: use original pkey for ets upsert lookup
we might be changing the primary key, and that would make
the ets upsert logic fail, this resolves that issue
2023-01-21 21:16:33 -05:00
Zach Daniel
45ad1c6afa docs: document pub_sub debug option
fix: properly prepend the prefix to the topic
2023-01-20 11:31:31 -05:00
Zach Daniel
dc51a961c1 improvement: include value in invalid error messages 2023-01-19 18:04:48 -05:00
Zach Daniel
5b918a0a08 fix: properly load depended on aggregates
improvement: cleaner inspect for calculations
2023-01-18 21:58:58 -05:00
James Harton
c142afde5a
docs: fix syntax highlighting in the "Why Ash?" guide. (#485) 2023-01-18 17:16:42 -05:00
Zach Daniel
1c6f007368 fix: properly handle functional manual creates 2023-01-18 11:09:14 -05:00
Zach Daniel
e3a4f51d67 improvement: add set_result for conditional manual actions/caching 2023-01-18 09:57:11 -05:00
Zach Daniel
897308ba3a
improvement: update docs to new links formats for ash_hq (#483) 2023-01-18 00:34:20 -05:00
Alessandro Tagliapietra
5bddd175f3
improvement: add nil return type to api get/3, read_one/2 and read_one!/2 (#482) 2023-01-17 08:02:40 -05:00
Zach Daniel
22e07c06b5 improvement: don't load dependencies for calcs in query 2023-01-17 01:46:33 -05:00
Zach Daniel
36948d5047
test: created minimal test for the issue (#481)
Co-authored-by: Tommaso Patrizi <tommasop@gmail.com>
2023-01-16 10:04:09 -05:00
KingdomCoder
64602ad55a
fix: Use proper options in confirm change. 2023-01-16 09:21:16 -05:00
Zach Daniel
1eaeacc748 docs: add moduledocs 2023-01-12 09:25:43 -05:00
Barnabas Jovanovics
0e2dcd5771
fix: only pass action name in Ash.Changeset.for_action (#476) 2023-01-12 09:20:46 -05:00
Zach Daniel
d471a94ccc fix: properly set the context option on changesets
docs: add section on `Ash.CodeInterface.define_interface/2`
improvement: add `action_is/1` builtin validation
2023-01-12 09:18:49 -05:00
Zach Daniel
7202509581 improvement: more compile time optimizations 2023-01-11 15:16:41 -05:00
Zach Daniel
f86ebf8f2b chore: fix validate condition again 2023-01-10 22:32:13 -05:00
Zach Daniel
9a94e187a9 fix: return proper value from validation 2023-01-10 22:27:12 -05:00
Zach Daniel
78eb069c45 fix: don't depend on check modules at compile time 2023-01-10 21:51:38 -05:00
Zach Daniel
1acd5b05e2 chore: fix docs issue 2023-01-09 14:54:30 -05:00
Zach Daniel
292450bf82 fix: set interface args to empty list by default 2023-01-09 14:46:55 -05:00
Zach Daniel
70bc983b17 improvement: add Api.calculate/3 and define_calculation code interface builder 2023-01-08 23:39:12 -05:00
Zach Daniel
2770c544a5 fix: properly zip calculation results with primary keys 2023-01-08 18:09:19 -05:00
Zach Daniel
1e49ef12a4 fix: more fixes for synonymous relationship paths 2023-01-06 17:14:24 -05:00
Zach Daniel
aa49bdcb64 fix: stop seeing incorrect relationships as synonymous 2023-01-06 15:21:35 -05:00
Zach Daniel
a234f0b6bf fix: various filter & expression fixes 2023-01-05 18:18:59 -05:00
Zach Daniel
936dac8627 fix: handle aggregate defaults when evaluating expressions 2023-01-05 13:15:51 -05:00
Zach Daniel
c28138cbce chore: remove debugging code 2023-01-05 12:33:04 -05:00
Zach Daniel
e804566cbf improvement: rename this to parent for clarity 2023-01-05 12:25:55 -05:00
Zach Daniel
84d9b60290 fix: remove all URI encoding/decoding from core for keysets 2023-01-05 10:25:25 -05:00
Zach Daniel
c962bc7aa7 feat: add this/1 for use inside exists/2 (and other places eventually)
fix: various fixes to expression syntax
2023-01-04 12:17:40 -05:00
Zach Daniel
da11749a11 fix: encode the keyset for display in a URI automatically 2023-01-03 19:33:15 -05:00
Zach Daniel
c32d3cc49a improvement: warn on potentially incompatible relationship attributes
improvement: add `default_belongs_to_type` configuration
2023-01-03 10:52:19 -05:00
Zach Daniel
d6348dd825 chore: fix typespec for code_modules/0 again 2023-01-03 10:11:26 -05:00
Zach Daniel
5902d9fdf5 chore: fix typespec 2023-01-03 09:20:40 -05:00
Zach Daniel
569449ce02 docs: add missing modules to docs 2023-01-03 09:10:53 -05:00
kernel-io
21f0088074
fix: fix authorize? method (#472) 2022-12-30 17:19:26 -05:00
Zach Daniel
aedad5eae2 improvement: loading an attribute is now equivalent to ensure_selected
fix: calculations depending on aggregates were not including those dependencies properly
2022-12-30 14:40:36 -05:00
Zach Daniel
b095e410a4 improvement: support module attributes in exprs 2022-12-29 23:49:05 -05:00
Maxim Martynov
7841075f35
improvement: Add Ash.Error.Invalid.TenantRequired error (#471) 2022-12-29 23:05:41 -05:00
Zach Daniel
0f88402224 fix: load types marked with cast_in_query? false at runtime
fix: proper support for nested expressions in calculations
2022-12-29 15:07:56 -05:00
Zach Daniel
11db0aab65 fix: typo in cast_in_query? 2022-12-29 01:52:12 -05:00
Zach Daniel
a8fe63f0a0 chore: always set authorize? to a boolean when managing relationships 2022-12-29 01:25:52 -05:00
Zach Daniel
093184bb3b improvement: add constraints to query calculations 2022-12-28 23:10:47 -05:00
Zach Daniel
d577812093 improvement: cast_in_query? takes constraints 2022-12-28 22:38:25 -05:00
Zach Daniel
8cf068d508 improvement: support for calculations in aggregate fields
Still must be implemented in respective data layers
2022-12-28 21:59:57 -05:00
Zach Daniel
11956fd62c fix: allow lists in expr syntax 2022-12-28 16:45:47 -05:00
Zach Daniel
d41d195941 improvement: add simple_notifiers as a compile time optimization 2022-12-27 18:25:24 -05:00
Zach Daniel
5f3c8dea4a fix: calculation builder using wrong builder 2022-12-27 17:19:59 -05:00
Zach Daniel
85d346e255 improvement: add calculations to builder
fix: handle `nil` constraints in array
2022-12-27 17:07:14 -05:00
Zach Daniel
ded3f67a68 fix: only start transactions for resources not already in one 2022-12-22 23:33:27 -05:00
Zach Daniel
f9ed91953b fix: import builtins at the action level, not the section level 2022-12-22 19:09:47 -05:00
Zach Daniel
1ccec692cb chore: docs & info on new deprecation 2022-12-22 01:39:33 -05:00
Zach Daniel
d6f1361979 improvement: fix tests to handle new defaults 2022-12-22 01:28:50 -05:00
Zach Daniel
b515bb258b fix: fix broken default behavior around managing relationships.
Read more: https://github.com/ash-project/ash/issues/469
2022-12-22 01:03:13 -05:00
Zach Daniel
65e9ab70bb improvement: optimize strict checks
by not checking strict checks for policies who's conditions we can
statically confirm don't apply
2022-12-21 14:54:22 -05:00
Zach Daniel
4af5c41cb1 fix: properly include module in doc links 2022-12-20 22:45:48 -05:00
Zach Daniel
8c0102db86 improvement: fix decimal generator to only compare with floats at generation 2022-12-20 22:01:47 -05:00
Zach Daniel
5da64349c6 fix: add test for string generator, and fix it 2022-12-20 20:42:41 -05:00
Zach Daniel
ad2392be99 improvement: filter min_length strings in generators 2022-12-20 20:34:06 -05:00
Zach Daniel
c8eb27050d fix: only allow nil in appropriate circumstances in generator 2022-12-20 03:18:22 -05:00
Barnabas Jovanovics
7689e8e531
fix: respect selects in related_query (#464) 2022-12-20 03:12:40 -05:00
Zach Daniel
e4f30f368e fix: use action name not struct for embedded generators 2022-12-19 12:21:31 -05:00
Zach Daniel
6a5543e291 fix: use create generators for embedded types 2022-12-19 11:06:53 -05:00
Zach Daniel
c4b2701d65 fix: support dependencies on pruned branch steps 2022-12-19 01:49:36 -05:00
Zach Daniel
eb1dd2663b fix: ensure type compiled for generator 2022-12-15 12:25:37 -05:00
Zach Daniel
b73d3a27d4 improvement: better expression detection 2022-12-14 21:20:39 -05:00
Zach Daniel
52fcd4e06d fix: transaction steps use failure_mode: :stop 2022-12-11 02:50:45 -05:00
Zach Daniel
96409416cf improvement: more dependable notifications, support custom notifications better 2022-12-09 22:55:51 -05:00
Zach Daniel
9bc7933482 improvement: add more transaction types 2022-12-08 14:40:07 -05:00
Zach Daniel
b94a57d1bd improvement: add :struct (Ash.Type.struct) type 2022-12-08 01:49:05 -05:00
Zach Daniel
d582bcbe07 fix: different formats for extensions 2022-12-07 23:53:33 -05:00
Zach Daniel
ce64fda1e9 improvement: replace doc links in sidebar also 2022-12-07 23:35:00 -05:00
Zach Daniel
f21428ce4d improvement: better doc replacement behavior 2022-12-07 22:38:47 -05:00
Zach Daniel
34c33c7247 improvement: dep updates & new aggregate types avg/min/max/custom 2022-12-07 20:35:32 -05:00
Zach Daniel
98a7485a32 chore: don't use list_of syntax 2022-12-07 17:00:06 -05:00
Zach Daniel
55b3590f42 fix: more matching fixes on manual relationships 2022-12-07 01:10:34 -05:00
Zach Daniel
8173f640f0 fix: handle manual relationship load results when building query 2022-12-07 01:03:29 -05:00
Zach Daniel
3614fce456 improvement: only set defaults when attribute is actually set 2022-12-06 23:20:41 -05:00
James Harton
a5e5db672d
improvement: Pass context into query and changeset for_... functions. (#460) 2022-12-05 20:29:33 -05:00
Zach Daniel
e0cbe591ee improvement: set context once, early 2022-12-04 13:36:08 -05:00
Zach Daniel
a6ca9511c7 fix: set proper types in transaction reasons 2022-12-01 12:06:51 -05:00
Zach Daniel
6f6ff4f318 improvement: support data layers implementing transaction level hooks
we now pass down additional metadata about what is happening in a transaction
2022-11-30 19:07:31 -05:00
Zach Daniel
edcef5eea1 improvement: don't run calculation queries if no records were returned 2022-11-30 02:20:54 -05:00
Zach Daniel
e403728cf4 fix: properly authorize manage relationship calls
improvement: don't run queries with `limit: 0`
2022-11-30 02:18:13 -05:00
Zach Daniel
f2bf99e478 improvement: more readable flow charts
improvement: `not_found_error?` option on `get?: true` `read` flow steps
2022-11-29 23:36:07 -05:00
Zach Daniel
82d3ec3946 improvement: add not_found_error? option to interface builder and when calling 2022-11-29 17:18:57 -05:00
Zach Daniel
113b8740d4 chore: hotfix code_interface change 2022-11-29 16:21:53 -05:00
Zach Daniel
f4b6a43918 fix: properly handle arguments with default values in code interface 2022-11-29 15:52:09 -05:00
Zach Daniel
f0b0accd10 fix: don't raise a backwards incompatible error message on certian changeset functions
now we warn, instead

fix: properly apply managed relationships on manual actions

fix: properly pass `resource` option in filter policies
2022-11-29 14:23:49 -05:00
Zach Daniel
52e7c133a6 fix: don't revisit nodes in the ash engine
fix: properly map to `:destroy` step names
2022-11-25 14:09:30 -05:00
Zach Daniel
49693669dd fix: handle Ash.Flow.Step.Destroy in path matchers 2022-11-25 11:01:31 -05:00
Zach Daniel
2f3fcbad13 improvement: optimize various solver boolean optimizations
improvement: more comprehensively remove unnecessary clauses
fix: resolve issue with `authorize_unless` and filter checks
improvement: prevent changing attributes and arguments after action validation

We allow for these changes inside of `before_action` calls, but otherwise
require that `force_change_attribute` is used, for example. This prevents
accidentally validating a changeset and then changing an attribute.
2022-11-23 03:39:00 -05:00
Zach Daniel
dd1614962b fix: fix pattern match error in manage relationship reduce 2022-11-23 03:39:00 -05:00
Josh Price
23fae2ee67
docs: fix typo (#455) 2022-11-22 22:06:03 -05:00
Josh Price
692552d09b
docs(policy): fix built_in_checks typo, formatting (#454) 2022-11-22 19:52:19 -05:00
Zach Daniel
3e5b0a8096 fix: fix typespec for Api.Info.trace_name/3
docs: add context to monitoring guide
2022-11-22 13:24:16 -05:00
Robert Ellen
59ddb5f5af
improvement: add error context to error creation / normalisation (#440) 2022-11-21 18:32:25 -05:00
Zach Daniel
d91c3b6d15 improvement: update hexdocs processor to link guides on hexdocs 2022-11-21 18:27:35 -05:00
Zach Daniel
865f9aa253 improvement: return invalid primary key errors for Api.get when the input can't be cast 2022-11-21 02:51:37 -05:00
Zach Daniel
a479970e23 improvement: much more readable errors when building loads 2022-11-21 01:37:58 -05:00
Zach Daniel
d16b7057a3 improvement: better check module validation
docs: add more context to security and policy guides
2022-11-21 00:29:45 -05:00
Zach Daniel
4a6676ffcd fix: reselect relationship source fields when loading relationships 2022-11-20 19:27:45 -05:00
Zach Daniel
5eb051722a fix: fix where and or_where implementation 2022-11-19 14:26:56 -05:00
Zach Daniel
9047fbd2ee improvement: add where and or_where to expr 2022-11-19 13:19:26 -05:00
Zach Daniel
4afc20a274 improvement: mark manual action modules as modules 2022-11-19 03:16:05 -05:00
Zach Daniel
3f95481294 fix: properly pass a map to manual action context 2022-11-19 01:30:48 -05:00
Frank Dugan III
e691222af0
fix: destroy action types default to accepts [] (#453) 2022-11-18 18:40:56 -05:00
Zach Daniel
1fd1d6c82a improvement: improve runtime expression running
fix: various typespec/build fixes
2022-11-18 14:42:53 -05:00
Zach Daniel
2ef7bc6273 docs: improve policy writing guide
improvement: add default description for filter checks
2022-11-17 01:33:38 -05:00
Zach Daniel
c8d08a3265 fix: handle tuples properly in some cases in expression syntax 2022-11-16 12:00:43 -05:00
Rebecca Le
91bb426e7e
fix: Add missing [:ash, :query] telemetry (#451) 2022-11-16 11:41:52 -05:00
Zach Daniel
a2fc21a218 chore: fix dialyzer 2022-11-15 21:39:57 -05:00
Zach Daniel
5090deb202 improvement: validate that modules exist and are documented when referenced 2022-11-15 21:26:25 -05:00
Zach Daniel
b7f4425265 docs: add Ash.Tracer to doc_index 2022-11-15 16:46:40 -05:00
Zach Daniel
d8ae4da1b3 docs: use new spark doc index guide order 2022-11-15 14:47:25 -05:00
Zach Daniel
e62d8e4a13 fix: don't incur compile time dependency for resources used as types 2022-11-15 10:03:34 -05:00
Zach Daniel
43362c7656 fix: allow for not-yet-compiled resources as Ash types 2022-11-15 09:59:04 -05:00
Zach Daniel
665a9fb5c4 improvement: optimize sat solving
1. only convert to CNF once
2. group predicates that only appear in specific combinations to limit amount of variables provided to the sat solver

Number 2 above does technically slow down all cases a bit, but the optimization is really important when it matters. And cases that don't need this optimization still happen on the order microseconds anyway.
2022-11-15 01:45:55 -05:00
Zach Daniel
27ca1d2f3c fix: properly raise error on invalid type.
closes #422
2022-11-03 16:06:26 -07:00
Zach Daniel
1dcb9dd8c4 docs: library links 2022-11-03 08:19:35 -07:00
Zach Daniel
399e6f4a9e docs: fix policies link 2022-11-03 07:29:56 -07:00
Zach Daniel
6840cc4870 chore: fix docs link 2022-11-03 00:51:48 -07:00
Zach Daniel
a0e5b2cb7d docs: small docs tweaks
improvement: update to latest spark
2022-11-03 00:47:24 -07:00
Zach Daniel
a31da97d4c chore: properly set error vars and run spark.formatter 2022-11-02 21:29:12 -07:00
Zach Daniel
ef0407299b improvement: support statically configured upsert actions 2022-11-01 03:13:56 -04:00
Zach Daniel
d23be5e49b improvement: add more builders
docs: fix typo in docs
2022-10-31 21:23:07 -04:00
Zach Daniel
3407d1e2e3 fix: properly set error vars with list constraints
fix: when creating changesets/queries that already have arguments, revalidate arguments
2022-10-31 14:20:13 -04:00
Zach Daniel
6f2c685ae6 fix: fix depend on resources to depend on each resource 2022-10-31 12:30:41 -04:00
Zach Daniel
cb192517c7 fix: allow references on both sides of in 2022-10-31 12:08:24 -04:00
Zach Daniel
6994295a8f fix: properly upsert all explicitly changed fields
fix: traverse maps for `template_references_actor?/1`
docs: various doc fixes
2022-10-31 11:33:51 -04:00
Zach Daniel
113d2452d2 improvement: replace templates in change/preparation/validation opts
Previously, only a few specific changes supported using `arg/1` or `context/1`
in their options. Now, those templates can be used in any change options,
built-in or not.
2022-10-31 02:25:01 -04:00
Zach Daniel
e18a8782c7 chore: remove empty file 2022-10-30 22:20:02 -04:00
Zach Daniel
d41c510f68 improvement: support anonymous functions for various behaviour based options
These include:

- custom create/read/update/destroy actions
- changes
- preparations
- validations
- calculations
- manual relationships

See the respective DSL guides for more.
2022-10-30 21:31:48 -04:00
Zach Daniel
d1c5c32e3f WIP 2022-10-30 21:00:57 -04:00
Zach Daniel
8cbd766172 feat: support anonymous functions in DSL
improvement: add more ergonomic manual action definitions.

The old method will likely be deprecated some time in the future (there is no rush really, they both work).
2022-10-30 21:00:57 -04:00
Michael St Clair
5626c8be2c
fix: don't add required belongs_to error if changeset is invalid (#437) 2022-10-30 17:40:10 -04:00
Zach Daniel
d70a05c805 fix: don't lazy load when managing relationships
if a relationship was loaded previously we were just using that relationship value.
However, this has a chance to cause incorrect behavior in edge cases. One such
edge case is illustrated here: https://github.com/ash-project/ash/pull/434 We can return to the
more optimized behavior when lazy loading is improved via https://github.com/ash-project/ash/issues/438
2022-10-30 10:36:26 -04:00
Zach Daniel
1718314f40 chore: update spark 2022-10-28 10:34:43 -05:00
Zach Daniel
e52d7187d8 improvement: more additions to the resource builder, update spark
test: add a test for loading many to many relationships on code interface actions
2022-10-28 10:18:01 -05:00
James Harton
2d6762ae61
feat(Ash.PlugHelpers): standardise conn interface for actors/tenants. (#432) 2022-10-27 17:52:42 -05:00
Zach Daniel
3c6758fa59 chore: use the tenant from the existing query when reselecting/loading calcs 2022-10-27 07:57:17 -05:00
Zach Daniel
bdb2265196 improvement: pass tenant to calculation query explicitly 2022-10-27 07:51:16 -05:00
James Harton
4917e283cd
fix(DataLayer): incorrect typespec for run_query/2 callback. (#431) 2022-10-26 14:36:57 -05:00
Zach Daniel
39ea911d33 docs: various guide/documentation updates 2022-10-25 23:17:49 -05:00
Zach Daniel
f89fd53806 fix: in Ash.Seed, don't try to update a non-loaded record 2022-10-25 22:30:00 -05:00
Zach Daniel
1a1714a37c docs: add resource builder to doc index 2022-10-24 12:05:41 -06:00
Zach Daniel
6b9cff5d43 feat: add Ash.Resource.Builder, the start of DSL builder utilities of rextension writing 2022-10-24 12:04:56 -06:00
Zach Daniel
72171da732 docs: update some descriptions 2022-10-24 08:57:22 -06:00
Zach Daniel
8c0e4de6bd improvement: allow using get_path/2 by name, as well as bracket access
prior to this, you had to say `map[:foo][:bar]`, but now you can also say
`get_path(map, [:foo, :bar])`. This makes certain things much clearer, i.e
`^arg(:foo)[:foo]`, which is problematic, would normally need to be written
as `(^arg(:foo))[:foo]` so that the pin only applied to the `arg/1` call.
This looks much nicer as `get_path(^arg(:foo), [:foo])`.
2022-10-24 07:57:21 -06:00
Josh Price
3d05bfa95e
improvement: SVG, PDF, PNG, Markdown and plain mermaid formats (#428) 2022-10-24 07:55:05 -06:00
Zach Daniel
3dd16304f7 improvement: optimize nested exists filter statements
i.e `exists(friends, exists(friends, name == ^name))`
will be automatically translated to `exists(friends.friends, name == ^name)`.
2022-10-23 22:16:50 -06:00
Zach Daniel
5e3b71e79b fix: properly load manual to_one relationships 2022-10-23 22:16:50 -06:00
Zach Daniel
986e08e0c2 fix: properly compare against decimal values
improvement: support floats & decimals in the `compare` validation
2022-10-21 10:46:46 -04:00
Zach Daniel
87877e7f87 improvement: when returning a page, choose keyset if before or after was supplied
This allows for better pagination experiences because you clearly expect
an `Ash.Page.Keyset` if you are using `before/after`
2022-10-21 08:24:51 -04:00
Zach Daniel
d439ac9cbc improvement: add keysets to records if any action supports keysets
feat: add `Ash.Api.Info.depend_on_resources/1` to get the list of resources at compile time

A common desire is to have modules that validate things across Api modules, however `Ash.Api.Info.resources/1`
is not safe to use at compile time. `Ash.Api.Info.depend_on_resources/1` will set up the proper compile
time dependencies, making it safe to use at compile time
2022-10-20 21:57:51 -04:00
Zach Daniel
d1f05b6c42 fix: don't attempt to re-authorize access to already retrieved records in Api.load/2
improvement: show conditions in policy breakdowns
2022-10-20 13:00:23 -04:00
Zach Daniel
8092cd899a docs: remove more experimental warnings 2022-10-20 02:00:56 -04:00
Zach Daniel
d22cf2714b docs: remove experimental warning from manual relationships 2022-10-20 01:59:52 -04:00
zimt28
9337ed6479
feat: Custom short names for types (#423)
A compile env can be set to allow customizing the available type short names. This supports two things:

1. Adding custom type short names, like `attribute :price, :money` mapping to `MyApp.Type.Money`
2. Overriding the builtin type short names, like `attribute, :price, :string` mapping to a custom string type implementation (there is likely no reason to do this)
2022-10-19 15:24:40 -04:00
Zach Daniel
235e965627 improvement: sort relationship in order of input when managing it
This helps with things like https://github.com/ash-project/ash_phoenix/issues/57
which involve rendering the relationship value after editing it. Retaining
the order allows direct reuse without any gymnastics
2022-10-19 00:39:10 -04:00
Zach Daniel
5a11736931 docs: remove outdated @authorizers reference 2022-10-18 17:43:33 -05:00
Zach Daniel
f774e60749 fix: set defaults before running changes 2022-10-18 14:27:35 -05:00
Zach Daniel
4915e5d583 improvement: add now() to expression syntax 2022-10-18 14:19:28 -05:00
Zach Daniel
8474e60828 chore: more livebook cleanup 2022-10-17 11:04:28 -05:00
Zach Daniel
a365103087 clean up livebook/mermaid diagrams 2022-10-17 10:18:47 -05:00
Josh Price
3f572c65a2
feat: basic livebook generator and mix task (#420) 2022-10-17 08:52:24 -05:00
Zach Daniel
ce35d41ed1 improvement: don't eager evaluate type/2 2022-10-17 08:27:31 -05:00
Zach Daniel
f3a1ee2364 chore: add back private_vars for InvalidAttribute 2022-10-17 08:00:29 -05:00
Josh Price
7db6aa049c
feat: mermaid class diagram mix task (#417) 2022-10-16 19:37:24 -05:00
Josh Price
bb86a13323
docs: refactor diagram, fix doc typos and formatting (#419) 2022-10-16 19:36:37 -05:00
Zach Daniel
6751afc683 improvement: support depending on requests that will be added
docs: improve flow docs

closes: #418
improvement: support dynamic action steps in `Ash.Flow`
2022-10-16 14:07:57 -05:00
Zach Daniel
652342c41d docs: remove the word simply from the docs 2022-10-15 10:16:38 -05:00
Zach Daniel
1e6be17618 fix: properly lateral join when possible
improvement: add `prepend?: true` option to sort
fix: use `prepend?: true` when applying relationship sorts
fix: don't miss dependencies in flow diagrams
improvement: use `simple_equality?/0` to allow for optimized equality checking
2022-10-15 00:03:03 -05:00
Josh Price
5c5ef1976c
refactor: simplify mermaid mix tasks (#416) 2022-10-14 09:32:44 -04:00
Zach Daniel
0534518a35 fix: fix deps finding in flow charts & flows 2022-10-14 01:17:52 -04:00
Josh Price
d1a49276b8
improvement: mermaid mix task for ER diagrams (#415) 2022-10-14 01:07:05 -04:00
Zach Daniel
362180190c fix: properly load calcs/aggs on manual relationships
It needs to be optimized, but it will do the trick for now.
2022-10-13 00:36:29 -04:00
Zach Daniel
48d96fc417 fix: properly load nested manual relationships 2022-10-12 21:30:48 -04:00
Zach Daniel
bd9660503d chore: key private ets tables by the table name 2022-10-12 15:52:59 -04:00
Zach Daniel
7f07f0d173 improvement: try to resolve flaky tests by not using named tables for private ets resources 2022-10-12 15:26:43 -04:00
Zach Daniel
7f209495c3 improvement: better unknown error handling 2022-10-12 14:52:55 -04:00
Rebecca Le
491c88cacd
fix: allow overriding validation message on a list of errors (#412) 2022-10-12 11:44:32 -04:00
Zach Daniel
bbaae20507 fix: reraise errors on task error
chore: remove dead code
2022-10-11 14:31:08 -04:00
Frank Dugan III
62805fcce9
improvement: allow passing query or changeset in can/can?/4 (#410) 2022-10-10 11:50:13 -04:00
Zach Daniel
ae8e0e356b fix: don't show dependencies for run_flow steps in expanded view(they are duplicates) 2022-10-10 01:28:32 -04:00
Zach Daniel
ecd30d944d fix: handle upsert_identity better with ets/mnesia 2022-10-09 22:01:09 -04:00
Nelson Bassett
8378722244
improvement: Improve error when actions reject and accept keys overlap (#405)
* Test for overlapping action keys, and initial solution.

* Merged ValidateAcceptRejectpOverlap transformer into existing DefaultAccept transformer.

* Corrected formatting using mix format.
2022-10-09 18:05:54 -04:00
Zach Daniel
e9ca762e34 improvement: update to latest spark
chore: clean up tests & remove warnings
2022-10-08 14:00:08 -04:00
Zach Daniel
8d2e9204dd fix: always set source on attributes 2022-10-07 15:45:39 -04:00
Zach Daniel
06d60a3e4e improvement: add type function to ash core 2022-10-07 15:31:39 -04:00
zimt28
fc4c60b125
improvement: Allow a single where condition for validations (#407) 2022-10-07 11:24:04 -04:00
Zach Daniel
b20c4afd9b improvement: haltable flows, branch step type
fix: fix chart links rendering
2022-10-06 17:04:44 -04:00
Ali Ahmed
0b7db5f3fb
feat: list arguments for resource actions in class diagrams (#399) 2022-10-06 02:04:21 -04:00
Zach Daniel
41b4b7fdbb improvement: simplify async task strategy
We now only start tasks once the synchronous work is done as anything
synchronous should be fast, generally.

Additionally, if there is only one task that we are about to start,
we can be confident that all we're going to do is wait for it,
so we can simply run it synchronously
2022-10-06 01:54:44 -04:00
Zach Daniel
a93a89a717 fix: make loading?/2 know about calcs and aggs 2022-10-06 00:12:45 -04:00
Zach Daniel
787cbad605 fix: properly set source on attributes 2022-10-05 20:25:18 -04:00
Zach Daniel
c591bf6746 improvement: clean up new create authorization simplification 2022-10-05 20:08:36 -04:00
Zach Daniel
be68aa041b improvement: remove the need for SetTypes 2022-10-05 19:32:47 -04:00
Frank Dugan III
e805d2a9c4
fix: policy fixes from pair session (#403) 2022-10-05 19:25:12 -04:00
Zach Daniel
3dfabb8879 improvement: add some info to policy errors 2022-10-05 17:48:22 -04:00
Zach Daniel
978e3ef6f0 improvement: experimental support for calcualtions accepting expression arguments 2022-10-05 15:02:45 -04:00
Zach Daniel
0efad5ae4e improvement: various Ash.Flow improvements, including returning the new Ash.Flow.Result 2022-10-04 16:21:38 -04:00
George Rodrigues
1f685a1413
docs: fix typos (#402) 2022-10-04 16:01:42 -04:00
Zach Daniel
c24d8e6d21 Revert "fix: switch from no_depend_modules in most places"
This reverts commit 650d8920e4.
2022-10-04 11:22:24 -04:00
Zach Daniel
03803734f3 fix: don't evaluate expressions incorrectly after casting 2022-10-04 04:10:35 -04:00
Zach Daniel
f60cc5b43d fix: add back in new/2 to Changeset 2022-10-04 01:58:27 -04:00
Zach Daniel
008e3a3751 docs: update docs for Ash.Changeset.new 2022-10-04 01:31:22 -04:00
Zach Daniel
dd6fd1fbc3 improvement: allow select/load callbacks for calcs to return irrelevant keys
test: add a test case for nested required calculations
2022-10-04 00:22:40 -04:00
Zach Daniel
e7847501f7 fix: properly load nested calcs 2022-10-04 00:11:54 -04:00
Zach Daniel
650d8920e4 fix: switch from no_depend_modules in most places 2022-10-03 21:47:45 -04:00
Zach Daniel
ab5cffa371 improvement: optimize load equality matching by not using Comp 2022-10-03 16:35:02 -04:00
Juha
fdebbeb242
improvement: Forbid reserved field names (#388)
Co-authored-by: Juha Lehtonen <juha.lehtonen@relexsolutions.com>
2022-10-03 16:19:16 -04:00
SpaceEEC
ace38cd31f
improvement: validate accepted and rejected attributes in actions (#395) 2022-10-03 12:16:53 -04:00
SpaceEEC
14a1b92963
feat: show_private? option for diagrams (#396) 2022-10-03 11:30:10 -04:00
Zach Daniel
2c685a6a2e fix: properly display compare/2 error message 2022-10-02 20:56:18 -04:00
Zach Daniel
c53eae58cd improvement: support zero argument functions in compare/2 2022-10-02 20:46:30 -04:00
Zach Daniel
329dfed138 fix: use the short type for aggregate types 2022-10-01 22:33:08 -04:00
Zach Daniel
ade0031081 fix: kind_to_type/2 returns tagged tuple 2022-10-01 22:25:49 -04:00
Josh Price
3d2f8277ad feat: generate mermaid entity relationship diagrams from a given api (#376) 2022-10-01 22:22:00 -04:00
Zach Daniel
95a4aa3708 improvement: optimize for relates_to_actor_via 2022-09-30 15:13:04 -04:00
Zach Daniel
8dca72c49d chore: fix mix tasks list 2022-09-29 16:26:46 -04:00
Zach Daniel
6f14cf0263 docs: add mix_tasks to doc_index 2022-09-28 20:59:47 -04:00
Zach Daniel
0e13456eb0 improvement: optimize relates_to_actor_via checks 2022-09-28 20:37:19 -04:00
Zach Daniel
6c94e5e578 chore: ensure calc module compiled (shouldn't have to do this) 2022-09-28 18:00:51 -04:00
Zach Daniel
fec01e32fa chore: log at_path in exists error message 2022-09-28 16:56:13 -04:00
Zach Daniel
fdbc5faeea fix: use at_path when parsing Exists 2022-09-28 16:49:11 -04:00
Zach Daniel
b12b5e34bb fix: properly require a condition of a following bypasses 2022-09-28 16:38:32 -04:00
Zach Daniel
6a172cce18 fix: don't transform == nil to is_nil automatically 2022-09-28 12:32:02 -04:00
Zach Daniel
68d0e8f55d fix: pass path down to keyword list errors 2022-09-28 01:52:41 -04:00
Zach Daniel
24bdf9058e improvement: catch more cases in preflight authorization checks 2022-09-27 14:58:48 -04:00
Zach Daniel
bc6daa56dd fix: bad pattern in filter.ex, fix dialyzer 2022-09-27 14:08:29 -04:00
Zach Daniel
8f1a43419b fix: attempt to evaluate filter checks for strict checks
closes: #385
2022-09-26 20:41:53 -04:00
Zach Daniel
f629de6808 fix: only return errors when there actually are errors 2022-09-26 19:18:42 -04:00
Zach Daniel
716fcf7c25 fix: return an error if data_layer_query/2 is given a query with errors 2022-09-26 19:13:08 -04:00
Zach Daniel
dc83e26fd8 chore: remove debugging raise statements 2022-09-26 18:41:39 -04:00
Zach Daniel
dcc6879bc1 chore: better error message for allow_nil? belongs to primary key 2022-09-26 18:09:16 -04:00
Zach Daniel
a8bce0ab23 improvement: lazily set required loads/selects for calcs/sorts 2022-09-26 18:08:18 -04:00
Zach Daniel
fe596db0b8 improvement: reselect any necessary fields when loading calcs
docs: tons of new documentation
improvement: set context when creating related filters allowing checks like `filtering_on`
2022-09-25 23:58:05 -04:00
Zach Daniel
3b803d4c55 fix: various fixes with complex policy statements
improvement: simplify filter statements further
improvement: don't overconstraint filters on related data
test: get started on some more complex policy tests
2022-09-25 13:21:17 -04:00
Zach Daniel
8f3e388c27 fix: ensure fields selected in-line when loading calcs 2022-09-23 10:44:29 -04:00
Zach Daniel
8031f1b698 improvement: any filter being statically true means :authorized 2022-09-22 21:06:57 -04:00
Zach Daniel
fbcd745401 improvement: properly mark conditions w/ access_type
fix: handle statically false conditions in filter logic
2022-09-22 21:03:33 -04:00
Zach Daniel
ac30194601 improvement: use IsNil instead of Eq when either side is nil 2022-09-22 18:27:05 -04:00
Zach Daniel
621cb6854e improvement: handle string dates for embeds 2022-09-22 09:42:16 -04:00
Zach Daniel
d4a6feb589 fix: cast embedded datetimes properly 2022-09-22 03:00:06 -04:00
James Harton
479b09951c
fix(Ash.Calculation): fix return type for load/3 callback. (#384) 2022-09-22 00:44:09 -04:00
Zach Daniel
7ef2f4884c improvement: remove __timestamps__ in favor of simpler macro
docs: add extending resources guide
2022-09-21 18:49:59 -04:00
Zach Daniel
739bf52309 fix: warn instead of raise on :replace usage
fix: handle var_args expression with literal args
2022-09-21 13:00:12 -04:00
Zach Daniel
5994c1b51f chore: fix dialyzer, add embedded resources guide back 2022-09-21 12:20:00 -04:00
Zach Daniel
48bcf1ca1f chore: relate_and_unrelate -> append_and_remove everywhere 2022-09-20 22:50:03 -04:00
Zach Daniel
980779fa7d fix: fix replace_relationship type 2022-09-20 22:38:08 -04:00
Zach Daniel
b4766d1ccc chore: set typespec to proper return value 2022-09-20 20:00:30 -04:00
Zach Daniel
39b143e19e chore: undo typespec that is complaining for some reason 2022-09-20 19:48:45 -04:00
Zach Daniel
1f6fb8d7af chore: fix tests 2022-09-20 19:44:04 -04:00
Zach Daniel
3903e36d29 improvement: update to latest spark, support dsls in resource info 2022-09-20 16:09:40 -04:00
Zach Daniel
87f20369bc improvement: deprecate :replace in favor of :relate_and_unrelate 2022-09-19 15:44:06 -04:00
Zach Daniel
2ca0f09444 improvement: add loading?/1 query helper
improvement: add `loading/1` built in check
2022-09-19 10:14:08 -04:00
Zach Daniel
bee3a6ea09 fix: properly handle args/nested expression for tuple calcs 2022-09-16 03:54:17 -04:00
Zach Daniel
003ba3246b fix: add a case for calculations as tuples in expr filters 2022-09-16 03:47:12 -04:00
Zach Daniel
cc5c1b69c0 fix: return count, not {:ok, count} 2022-09-15 17:12:40 -04:00
Zach Daniel
301d5b56d9 fix: bad return value when async fetching counts 2022-09-15 17:06:56 -04:00
Zach Daniel
405019d33b fix: remove dbg() call 2022-09-15 16:54:58 -04:00
Zach Daniel
da282d1193 docs: hide a function from docs 2022-09-15 16:52:06 -04:00
Zach Daniel
266ecc8249 fix: nil casts as any type (sort of) 2022-09-15 02:15:23 -04:00
Zach Daniel
1b2d351721 fix: return nil on nil inputs for length/1 2022-09-15 02:12:51 -04:00
Zach Daniel
d7b446bc7f fix: properly reraise errors raised in tasks 2022-09-15 02:08:30 -04:00
Zach Daniel
f084d346ad fix: properly return errors from tasks 2022-09-15 01:09:12 -04:00
Zach Daniel
2c2c207e68 fix: use Comp.equal?/2 when finding loaded data matches 2022-09-15 00:55:04 -04:00
Darren Black
865d028667
chore: Guard length function for invalid input (#380) 2022-09-15 00:10:01 -04:00
Zach Daniel
a5f51e8f1b fix: properly error on types when evaluating expressions at runtime 2022-09-14 22:31:32 -04:00
Zach Daniel
4b88300e00 fix: properly surface errors all the way from runtime filters 2022-09-14 20:05:51 -04:00
Zach Daniel
3baf2b8c97 fix: properly catch errors when running expressions at runtime 2022-09-14 19:50:07 -04:00
Darren Black
a572099e24
improvement: Implement length function (#379) 2022-09-14 13:28:42 -04:00
Zach Daniel
08642b9123 chore: update typespec for attribute 2022-09-14 13:20:24 -04:00
Zach Daniel
2dae8ffa44 improvement: validate aggregate paths supported 2022-09-13 16:24:55 -04:00
Zach Daniel
e36f8c3e59 improvement: add filterable? option to relationships
improvement: add data layer capability for aggregate relationships & filter relationships
improvement: add guide on manual relationships
2022-09-13 13:53:05 -04:00
Zach Daniel
4260b9a1c9 fix: inspect the match for default message 2022-09-13 13:53:05 -04:00
Zach Daniel
827548f737 chore: fix typespec for aggregate_type/2 2022-09-12 13:43:18 -04:00
Zach Daniel
f583ababbc fix: fix keyset pagination ordering bug
fix: short names are snake cased
2022-09-12 11:17:44 -04:00
Zach Daniel
d32efadb62 improvement: add aggregate_type/2 helper 2022-09-12 11:17:44 -04:00
Zach Daniel
5c81d2b4a7 fix: properly do pagination
docs: fix some docs, add some guides
2022-09-11 22:19:37 -04:00
Zach Daniel
3644d05cd6 Revert "improvement: make two queries for full keyset pagination support"
This reverts commit 64b3312cb9.
2022-09-11 18:35:02 -04:00
Zach Daniel
8c7ddf703c chore: warnings 2022-09-11 16:10:11 -04:00
Zach Daniel
64b3312cb9 improvement: make two queries for full keyset pagination support
docs: add store context in process guide
2022-09-11 16:07:21 -04:00
Zach Daniel
fbebcf6670 fix: handle pins in exists 2022-09-07 17:53:18 -04:00
Zach Daniel
1c1c375d66 fix: add better error for exists/2 2022-09-07 17:15:18 -04:00
Zach Daniel
f381014fd1 fix: use root_resource for related path in filter 2022-09-07 17:00:16 -04:00
Zach Daniel
9ddc2aeb0d fix: set root_resource in exists parsing 2022-09-07 16:26:49 -04:00
Zach Daniel
ac60cda9ac docs: add docs for all builtins 2022-09-07 15:03:09 -04:00
Zach Daniel
0368c1a8da fix: error fetching relationships in filter expressions
docs: more docs on upgrade/policies guide
2022-09-07 12:53:29 -04:00