Zach Daniel
7991d84b0b
chore: don't enumerate empty list
2024-08-09 17:19:28 -04:00
Zach Daniel
dc73c3a3d5
feat: add policy groups
...
Policy groups allow you to group policies by shared conditions.
This can help simplify the mental overhead of large sets of policies.
For example:
```elixir
policies do
policy_group actor_attribute_equals(:role, :owner) do
policy action_type(:read) do
authorize_if expr(owner_id == ^actor(:id))
end
policy action_type([:create, :update, :destroy]) do
forbid_if
authorize_if expr(owner_id == ^actor(:id))
end
end
end
```
2024-08-09 16:48:54 -04:00
Zach Daniel
5a4864650b
improvement: prune calculations made unnecessary by field policies
...
closes #1356
2024-08-09 13:46:02 -04:00
Zach Daniel
dc3f921d33
fix: remove pattern match error when exceptions come from calculations
2024-08-09 10:07:54 -04:00
Zach Daniel
2f22905ff3
chore: add better errors to help debug strange path/field errors in sort code
2024-08-08 20:26:53 -04:00
Jinkyou Son
2fc934fb61
fix: Fix error with nil value on structure types ( #1380 )
...
* Fix no cond clause evaluated to a truthy value error
* Fix error with nil value
* Add tests
2024-08-08 20:15:20 -04:00
Zach Daniel
ea85829d98
improvement: add "hints" to NoSuchInput
errors to make any errors clearer
...
closes #1352
2024-08-08 14:16:09 -04:00
Zach Daniel
e44d97bd25
fix: show proper error message when trying to accept non-writable attributes
2024-08-08 13:48:36 -04:00
Zach Daniel
793cd715a7
improvement: warn on usage of == nil
2024-08-08 13:05:39 -04:00
Zach Daniel
e4dcd1c397
improvement: implement Comp
for atoms & strings, comparing atoms as strings
2024-08-08 11:38:16 -04:00
Zach Daniel
da91e2891e
fix: Pass options without :templated tuple to after_batch ( #1376 )
...
* Pass options without :templated tuple to after_batch
* fix: properly iterate non templated opts
---------
Co-authored-by: Jonatan Männchen <jonatan@maennchen.ch>
2024-08-08 10:14:06 -04:00
Zach Daniel
c0843b3eb7
chore: update igniter & fix warnings
2024-08-08 09:18:03 -04:00
Zach Daniel
a65a84fe83
chore: format
2024-08-08 09:07:59 -04:00
Jonatan Männchen
68ef4d3144
chore: Dialyzer Fixes ( #1374 )
2024-08-08 09:07:18 -04:00
Zach Daniel
b5d45325c5
chore: properly set atom keys & set error paths on embeddable types
2024-08-07 23:21:46 -04:00
Zach Daniel
4278660c9c
chore: format
2024-08-07 23:02:05 -04:00
Zach Daniel
beb8ff7602
chore: fix error code in embeddable type
2024-08-07 22:57:31 -04:00
Zach Daniel
201687163f
chore: update erorr message
2024-08-07 22:54:28 -04:00
Zach Daniel
823a9fbf4b
chore: update error message
2024-08-07 22:53:10 -04:00
Zach Daniel
365ecffb5b
improvement: increase cases where embedded attribute can be updated atomically
2024-08-07 22:45:38 -04:00
Zach Daniel
e86c5bce56
chore: follow up fixes for optimized embed creation
2024-08-07 22:16:19 -04:00
Zach Daniel
9a9e0c4e32
chore: properly set non-matched defaults in embeddable type
2024-08-07 21:36:37 -04:00
Zach Daniel
c8e1cddb2b
fix: check for nil
resource_calculation in Ash.Resource.loaded?/2
2024-08-07 21:35:42 -04:00
Zach Daniel
ac14b750d5
chore: add back in accidentally removed struct callbacks
2024-08-07 20:49:44 -04:00
Zach Daniel
1f056646a3
chore: set defaults in embedded attribute shortcut
2024-08-07 20:33:03 -04:00
Zach Daniel
ae2b737e87
fix: optimizations around allocating strings
...
fix: optimizations around list operations for embedded resources
2024-08-07 19:35:22 -04:00
Zach Daniel
a719c791ba
improvement: add optimized path for casting embeds when they are simple
...
improvement: add `include_embedded_source_by_default?` config to optimize embeds
improvement: support `:fields` constraint on `:struct` type, enabling persistence
2024-08-07 16:47:01 -04:00
Zach Daniel
1711ecf574
chore: split on specifically run_calculate/4
2024-08-07 16:47:01 -04:00
Jonatan Männchen
d1efc3fb6c
fix: after_batch
arguments for bulk_create
with return_records?
disabled ( #1371 )
...
Fixes #1369
2024-08-07 16:17:40 -04:00
Jonatan Männchen
4efe51418e
improvement: Warn on bulk action return_stream?
without any other return_*?
options enabled. ( #1370 )
...
Resolves #1368
2024-08-07 14:51:15 -04:00
Zach Daniel
5684b5784a
improvement: add stacktrace information
2024-08-06 21:38:08 -04:00
Zach Daniel
0576c8c602
fix: set upsert?
option when managing relationships in bulk creation
2024-08-06 12:45:23 -04:00
Zach Daniel
40a832019e
fix: resolve nested expression calculation references in runtime filters
...
fix: properly consider not-loaded record calculations as `:unknown`
2024-08-06 08:44:49 -04:00
Zach Daniel
960af4b887
fix: handle nil
in atomic array casting
2024-08-06 07:11:56 -04:00
Zach Daniel
58065c31cd
improvement: remove :comparable
as a dependency
...
It all compiles conditionally, so that if an explicit dependency exists
on `comp` it will still be used
2024-08-05 16:04:47 -04:00
Zach Daniel
e94e484885
chore: remove IO.inspect
2024-08-05 12:37:28 -04:00
Zach Daniel
c4a910a5d1
improvement: support authorize_with
option on Ash.read
2024-08-05 12:36:19 -04:00
Zach Daniel
85c92ce9cc
chore: use nils_distinct?
2024-08-05 11:01:16 -04:00
Zach Daniel
3667760717
chore: format
2024-08-05 10:35:41 -04:00
m0rt3nlund
4508b439a5
improvement: Add defaults and typespec to resulting Resource struct ( #1364 )
...
* improvement: Add typespec to resource if it doesn't exist
---------
Co-authored-by: morten.lund@maskon.no <morten.lund@maskon.no>
Co-authored-by: Zach Daniel <zachary.s.daniel@gmail.com>
2024-08-05 10:35:17 -04:00
Zach Daniel
4780376a8e
fix: respect previously validated-for-action query for aggregates
2024-08-05 10:09:38 -04:00
Zach Daniel
e3e492ef65
fix: use timestamps()
instead of timestamps
2024-08-02 12:49:26 -04:00
Zach Daniel
54738baad2
fix: prefer source_attribute
is required, instead of relationship name
...
we only do this if the source attribute is accepted by the action
fixes #1362
2024-08-02 09:41:34 -04:00
Zach Daniel
28f73546cc
fix: roll back bulk update/destroy on before action error
2024-08-01 12:09:01 -04:00
Zach Daniel
f8fc4cd521
fix: delete ash_notifications from pdict after reading
2024-08-01 10:42:19 -04:00
Zach Daniel
de7bd3576a
docs: add typespec for build/2
2024-07-31 21:53:03 -04:00
Zach Daniel
ea7abca878
remove IO.inspect
2024-07-31 18:27:59 -04:00
Zach Daniel
266958d326
improvement: add --timestamps
argument to ash.gen.resource
...
fix: properly parse multiple occurrences of :keep arguments
2024-07-31 17:47:29 -04:00
Zach Daniel
db54a655c8
fix: properly key nested calculations and add additional tests
2024-07-31 13:19:04 -04:00
Zach Daniel
2843f8d181
fix: pass relationship path down when merging query loads
2024-07-31 10:10:10 -04:00
Zach Daniel
8f865c11cf
fix: don't set --name nil
when calling codegen tasks
...
closes #1360
2024-07-31 09:43:40 -04:00
Zach Daniel
8a368c0fcd
fix: fix behavior of synthesized joins across data layers
...
test: fix our testing set up so its actually testing join synthesizer
closes #1354
2024-07-30 22:11:32 -04:00
Zach Daniel
26f4a1595b
chore: use .has_validate?
on conditions, not has_batch_change?
2024-07-30 06:51:58 -04:00
Zach Daniel
55456b3884
fix: properly parse domain module in mix ash.gen.domain
2024-07-30 06:45:24 -04:00
Zach Daniel
cb7b712460
improvement: implement change/3
automatically if batch callbacks are defined
...
fix: properly handle mixed atomic & non-atomic validations/changes
2024-07-29 19:54:12 -04:00
Barnabas Jovanovics
1ce0480a85
test: tests for atomic only validation ( #1331 )
2024-07-29 15:29:39 -04:00
Zach Daniel
1c641faf2e
fix: properly find data layer predicates when name is provided as a string
...
closes #1357
2024-07-29 15:25:17 -04:00
Barnabas Jovanovics
ac18d1804b
fix: set accessing from and join read action for many_to_many relationships correctly ( #1355 )
2024-07-29 07:54:23 -04:00
Zach Daniel
b3ac13e760
chore: release version v3.3.0
2024-07-27 17:05:46 -04:00
Zach Daniel
303da2a97f
improvement: better positional argument handling with igniter
2024-07-26 13:43:51 -04:00
Zach Daniel
dc4a63c86c
fix: ensure that statuses are set correctly on bulk actions
...
fix: properly transfer process context(tracers) for bulk actions
closes #1332
2024-07-26 11:38:41 -04:00
Jonatan Männchen
3de985ccc5
feat: Add Ash.Type.File ( #1337 )
2024-07-26 07:57:23 -04:00
Zach Daniel
de2b3d0d4e
improvement: use :utc_datetime_usec
for now()
return type
...
fix: fix typespecs for `Ash.can?`
2024-07-25 16:26:11 -04:00
Zach Daniel
8d60e0518e
fix: properly display identity/primary key mismatch error on lists of embeds
2024-07-25 10:44:35 -04:00
Riccardo Binetti
df7adce976
fix: apply constraints to NewType even when casting an array ( #1341 )
...
The previous implementation was behaving differently when dealing with single
values and arrays.
Close #1342
2024-07-25 10:17:18 -04:00
Zach Daniel
0bdb3acfe2
fix: properly handle non-domain modules or modules w/ no resources
...
closes #1345
2024-07-25 09:32:16 -04:00
Zach Daniel
99966d0e57
fix: fix enum typespec generation for strings/mixed types
2024-07-25 09:30:04 -04:00
Zach Daniel
b46e172627
fix: properly generate types for string & mixed enums
2024-07-25 07:34:53 -04:00
Riccardo Binetti
d199f701ac
fix: pass reuse_values? true when loading in Ash.Query.apply_to/2 ( #1346 )
...
The function is meant to be used to act on data that is in-memory, so it makes
sense to not read data again. Moreover this caused an infinite loop if using
this at the end of a manual read.
Add a regression test for the manual read case.
2024-07-25 07:21:08 -04:00
Riccardo Binetti
79dd76e466
fix: add :ok to Ash.Resource.Actions.Implementation.run/3 callback ( #1340 )
...
This was causing a Dialyzer error
2024-07-24 16:46:49 -04:00
Zach Daniel
381870ac3e
improvement: don't install sat solver in initial installation
...
improvement: ask user to install sat solver when extending with policies
improvement: validate that a solver exists at compile time when using policies
2024-07-24 16:08:39 -04:00
Zach Daniel
62bda80b38
fix: honor skip_unknown_inputs
in code interfaces
2024-07-24 12:45:58 -04:00
Zach Daniel
228eda86ff
fix: don't gather notifications except for in the top level transaction starter
...
chore: format
2024-07-24 12:02:55 -04:00
Zach Daniel
ed30dcf1dd
fix: support skip_unknown_inputs
on generic actions
2024-07-24 10:31:44 -04:00
Jonatan Männchen
8d3b0b7246
improvement: Expose type t() on Ash.Type.Enum implementations ( #1338 )
2024-07-24 07:06:11 -04:00
Zach Daniel
c96a95bcbf
fix: ensure changed?
context is set on atomic changesets
2024-07-24 06:21:47 -04:00
Rebecca Le
912fcf99de
docs: Format default options for special attributes as code, in Ash.Resource DSL ( #1336 )
2024-07-24 06:15:31 -04:00
Zach Daniel
516ff8ef8e
improvement: automatically fall back to a default domain when working with embeds
2024-07-23 19:14:16 -04:00
Jefferson Queiroz Venerando
98528c9c5a
fix: Update string/ci_string generators to ensure min_length ( #1335 )
...
* use :alphanumeric instead of :printable to avoid length issues
* revert to printable and ensure min_length
2024-07-23 17:38:55 -04:00
Zach Daniel
2d6a3cc35d
chore: set action before determining opts on changeset
2024-07-23 13:15:09 -04:00
Zach Daniel
7630a23f89
chore: set global option properly
2024-07-23 12:55:52 -04:00
Zach Daniel
32c8da1f8d
improvement: add :* as a valid value in skip_unknown_inputs
...
improvement: add `skip_unknown_inputs` to individual actions
improvement: add `skip_unknown_inputs` constraint to embedded resources
2024-07-23 12:51:11 -04:00
Zach Daniel
4763181ff9
improvement: handle 3 tuple in Ash.can?
2024-07-23 09:59:24 -04:00
Zach Daniel
98dec63998
fix: handle {record, action, input}
types in Ash.can?
2024-07-23 09:32:48 -04:00
Zach Daniel
bfb67a4800
improvement: add Ash.Error.error_descriptions
2024-07-23 09:03:27 -04:00
Zach Daniel
828bd9c560
fix: ensure we never call change
if batch_change
is defined (on bulk actions)
2024-07-22 14:45:39 -04:00
Zach Daniel
be542cf880
fix: only call batch_change
if it is defined, never change
in bulk create
2024-07-22 14:32:27 -04:00
Zach Daniel
dcb69882df
fix: fallback to authorize_with
when authorizing bulk destroy actions
2024-07-22 14:05:21 -04:00
Torkild Gundersen Kjevik
c2ac47e21e
improvement: Replace incorrect function_exported?-checks in bulk-actions, add has-defs for change modules ( #1330 )
...
fix: don't refer to non-existent `batch_change/4`
2024-07-22 12:32:24 -04:00
Zach Daniel
c65f0c851c
fix: apply atomic validations on non-bulk destroy actions
...
chore: don't put atomic changes into attributes to simplify
2024-07-22 11:35:11 -04:00
Zach Daniel
5be7a56976
chore: move_attributes_to_atomics
before handle_allow_nil_atomics
2024-07-22 10:15:56 -04:00
Barnabas Jovanovics
e6d52f2d07
fix: add default to private_fields_policy in Ash.Policy.Info ( #1329 )
2024-07-22 10:07:03 -04:00
Zach Daniel
bad62c1e8a
improvement: add authorize_with
fallback option to bulk actions
...
improvement: store non-expr atomic changes in attributes for simplicity
fix: make `relating_to_actor` built-in-check aware of atomics
closes #1327
2024-07-22 10:03:14 -04:00
Dmitry Maganov
b8029e3171
fix: remove redundant overload of Ash.Expr.get_path
( #1328 )
2024-07-22 07:39:13 -04:00
Zach Daniel
34d6f229c5
improvement: allow policy conditions to be applied inside their block
...
```elixir
policy do
condition [...]
authorize_if ...
end
```
2024-07-22 07:10:09 -04:00
Zach Daniel
3c2f51224a
chore: get build passing
2024-07-19 12:40:09 -04:00
Barnabas Jovanovics
912cc58d83
docs: fix function arity in description ( #1326 )
2024-07-19 06:43:05 -04:00
721e3e7fe9
chore: fix typespecs for accepts
key in action entity structs. ( #1323 )
2024-07-18 23:10:14 -04:00
Jinkyou Son
063e654405
fix: cast_input/2 of Ash.Type.NewType returning :ok ( #1324 )
2024-07-18 23:07:14 -04:00
d5aa1d7c9f
fix: warnings emitted by removed reactor behaviour function. ( #1325 )
2024-07-18 23:06:34 -04:00
Zach Daniel
d7f2f18ae0
fix: fix warning on transaction hooks violating their semantics
2024-07-18 18:16:18 -04:00
Zach Daniel
8a18365d71
chore: fix type signature for domain/2
2024-07-18 13:16:01 -04:00
Zach Daniel
eb2f5f40f1
improvement: Add Ash.Resource.Igniter.domain
to get the domain of a resource
...
fix: properly convert extension string into a module
fix: only display available to extend
2024-07-18 13:00:56 -04:00
Brian
69c77acedd
fix: mix igniter.install ash --example case clause error ( #1317 )
2024-07-17 18:53:21 -04:00
Zach Daniel
5c095d0e6d
fix: only use attribute for filtering when multitenancy strategy == :attribute
2024-07-17 15:54:54 -04:00
Zach Daniel
6632f599bc
chore: keep only correct changes from earlier reverts
2024-07-17 15:08:19 -04:00
Zach Daniel
05cdaa04c5
Revert "fix: honor atomic validations in destroy actions using filter
"
...
This reverts commit a6a9961c0d
.
2024-07-17 15:06:39 -04:00
Zach Daniel
1db2b0f9d6
Revert "chore: undo change to bulk destroy omitting changeset.filter"
...
This reverts commit 6484881290
.
2024-07-17 15:06:33 -04:00
Zach Daniel
6484881290
chore: undo change to bulk destroy omitting changeset.filter
2024-07-17 14:48:25 -04:00
Zach Daniel
a6a9961c0d
fix: honor atomic validations in destroy actions using filter
...
test: add tests for atomic validations in destroy actions
2024-07-17 14:32:57 -04:00
Hannes Wüthrich
dad0bfd1c4
fix: handle casting nil vectors ( #1316 )
2024-07-17 09:52:12 -04:00
Zach Daniel
dd5bf4a0c0
improvement: update spark for docs fixes, hide aggregate kind
2024-07-17 08:04:17 -04:00
Rebecca Le
a49d99b67f
docs: Set default value for include_nil?
aggregate option ( #1315 )
...
* docs: Note that the `kind` option is pre-set for aggregates when using the DSL
2024-07-17 07:45:01 -04:00
Zach Daniel
15655e06ef
fix: don't handle nil
in Ash.Type.cast_input/3
2024-07-17 06:44:50 -04:00
Torkild Gundersen Kjevik
b3a7c44be0
feat: Add ash_step wrapper. ( #1311 )
...
Adds `ash_step` to `Ash.Reactor` which collects notifications.
2024-07-17 20:01:41 +12:00
Zach Daniel
ba869426d6
fix: properly honor the include_nil?
option
2024-07-16 22:24:16 -04:00
Zach Daniel
fd26fd895a
Revert "fix: don't use type/3
in string interpolation"
...
This reverts commit 570fc50565
.
2024-07-16 22:24:08 -04:00
Zach Daniel
8d3a4c3e46
fix: store after_action hooks added outside of changes for atomic upgrade
2024-07-16 10:07:51 -04:00
Zach Daniel
570fc50565
fix: don't use type/3
in string interpolation
2024-07-16 07:20:55 -04:00
Zach Daniel
e407d7ca44
fix: properly pass include_nil?
from when building query aggregates
2024-07-16 06:09:26 -04:00
Zach Daniel
297c916d11
improvement: allow skipping initialization of types in unions
2024-07-16 05:54:04 -04:00
Zach Daniel
fe00d22a25
chore: the function was deprecated the other way 🤦
2024-07-15 14:12:50 -04:00
Zach Daniel
3bc730bfcf
chore: update deprecated call
2024-07-15 14:10:34 -04:00
Zach Daniel
97a37a4bf8
improvement: update spark for newest composable igniters
2024-07-15 13:33:05 -04:00
Zach Daniel
5215c4e124
chore: fix build
2024-07-15 08:18:01 -04:00
Zach Daniel
de9b5575eb
improvement: add Ash.Domain.Igniter.list_domains/1
...
improvement: add `Ash.Resource.Igniter.list_resources/1`
2024-07-15 08:17:26 -04:00
Tore Pettersen
37755a870b
feat: Allow field policies to hide private fields ( #1289 )
...
* Allow field policies to hide private fields
* Create option for how to handle private fields
* Improve docs
2024-07-15 08:16:52 -04:00
Zach Daniel
d70da28536
chore: second arg to unpaginated_read
is action
not opts
2024-07-14 11:57:04 -04:00
Zach Daniel
47a796789a
fix: use unpaginated_read
when simulating streaming for low limit queries
2024-07-14 11:50:11 -04:00
Zach Daniel
56b98e88d8
chore: don't use :any
as default basis type
2024-07-14 11:32:21 -04:00
Zach Daniel
c5b118a37c
fix: don't use :same
return type for most operators
...
fix: don't use returns as basis type unless explicitly allowed
2024-07-14 11:22:20 -04:00
Zach Daniel
a665a17c59
chore: format
2024-07-14 10:47:43 -04:00
Zach Daniel
84d76b3b28
fix: ensure today
has properly configured returns type
2024-07-14 10:45:34 -04:00
Roberts Guļāns
2c37e71d46
fix: module type apply_constraints for nil fix ( #1313 )
2024-07-14 09:51:21 -04:00
Zach Daniel
0fe27ba670
chore: more compile dependency removals
2024-07-14 09:10:48 -04:00
Zach Daniel
7c6631636b
chore: remove compile dependency issues in Ash.Expr
2024-07-14 09:09:52 -04:00
Zach Daniel
ed7a6daa34
improvement: add Ash.Expr.determine_type(mod, children)
2024-07-14 08:59:05 -04:00
Zach Daniel
46033427f4
chore: get build passing
2024-07-14 08:43:49 -04:00
Zach Daniel
f6a9fc3db3
improvement: add return typing to functions
2024-07-14 08:14:49 -04:00
Zach Daniel
4026c2686d
fix: don't specify that get_path
is a predicate function
...
chore: remove newly added atomic type casting code
2024-07-13 16:04:25 -04:00
Zach Daniel
a7730bdbb9
improvement: improve type signature for if/3
...
improvement: support returning a list of atomics from atomic change callbacks
2024-07-13 15:39:19 -04:00
Zach Daniel
476dfede63
improvement: add cast_atomic_constraints
callback and use it in core typest
2024-07-12 23:12:59 -04:00
Zach Daniel
67044646c1
improvement: simpler and/or short circuiting
2024-07-12 19:17:27 -04:00
Zach Daniel
cafacee02b
fix: properly omit destroyed result in code interfaces
2024-07-12 08:22:12 -04:00
Zach Daniel
40ba1140e0
fix: properly compare expr
to min
with min
integer constraint
2024-07-12 08:18:56 -04:00
Torkild Gundersen Kjevik
e9d8928bb6
fix: Make action ctx-values from reactor-ctx take precedence if set. ( #1308 )
2024-07-11 19:39:58 -04:00
Zach Daniel
9d4341ce9f
chore: fix read_opts setting for previous change
2024-07-11 10:39:26 -04:00
Zach Daniel
d2f25d7ac5
fix: ensure that errors in queries do not raise in atomic upgrades/single atomics
2024-07-11 10:30:31 -04:00
Torkild Gundersen Kjevik
ad6954aca8
improvement: add strict?
option to Ash.Query.load ( #1302 )
...
---------
Co-authored-by: Zach Daniel <zachary.s.daniel@gmail.com>
2024-07-11 09:34:30 -04:00
Franklin Rakotomalala
9f695aaae4
docs: Improve documentation example ( #1299 )
2024-07-10 15:52:33 -04:00