Commit graph

1475 commits

Author SHA1 Message Date
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