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