Jechol Lee
ae3f632157
Fix is_belongs_to_rel_being_managed? to match list with more than 2 elements ( #1072 )
2024-04-29 12:49:26 -04:00
Zach Daniel
ca7b0824d7
fix: properly intercept thrown errors in Ash.bulk_create
2024-04-29 09:12:03 -04:00
Zach Daniel
a24fdcfe59
docs: fix code interface example
2024-04-29 07:49:25 -04:00
Jechol Lee
856ac698b7
fix: Changeset.present? to be false when belongs_to is set to nil ( #1067 )
...
* Changeset.present? to be false when belongs_to is set to nil
* match empty list
* match empty list 2
2024-04-29 07:38:06 -04:00
Jechol Lee
caf1c5ee2a
Improvement: Changeset.attributes_present? to attribute_present? ( #1066 )
2024-04-29 06:51:14 -04:00
Zach Daniel
5ef8de03f3
fix: fix simple_equality in attribute type
2024-04-28 00:41:57 -04:00
Zach Daniel
2f1a0fec71
fix: set resource
option in bulk interfaces
2024-04-27 23:56:11 -04:00
Zach Daniel
69f844dc69
chore: fix typo
2024-04-27 23:35:12 -04:00
Zach Daniel
fa6c2ade6d
fix: check resource match below checking query input
2024-04-27 23:33:04 -04:00
Zach Daniel
26225fc7f5
fix: only use Map.new
for inputs if input is keyword in code interface
2024-04-27 23:21:34 -04:00
Zach Daniel
65c6f66b91
fix: properly set action type on changeset
2024-04-27 11:20:03 -04:00
Zach Daniel
8c4e9c44d6
fix: set changed?
context on bulk actions
2024-04-27 10:43:53 -04:00
Zach Daniel
3f977ff98d
improvement: simplifications and clarifications around bulk callback behavior
2024-04-27 10:14:31 -04:00
Zach Daniel
75b63917c7
improvement: don't add autogenerated_id
to embeds by default
...
one list *very mild* breaking change
2024-04-27 00:53:22 -04:00
Zach Daniel
69295daf78
improvement: allow skipping primary keys on embedded resources
2024-04-27 00:41:12 -04:00
Zach Daniel
41f68ca4a4
improvement: support changeset filters in ets
2024-04-27 00:33:00 -04:00
Zach Daniel
03b1579d9c
fix: properly handle atomic upgrade when policies can't be strict checked
2024-04-26 23:53:54 -04:00
Jinkyou Son
1acbce4ebb
improvement: Treat asterisk as a single arguemnt in accept ( #1062 )
2024-04-26 03:26:15 -04:00
Zach Daniel
2d0b73af96
chore: set authorization context ahead of query build
2024-04-26 03:15:46 -04:00
Zach Daniel
726c6c3f0f
fix: various fixes around bulk action upgrades, atomics
2024-04-26 03:13:22 -04:00
Zach Daniel
41c951d2e5
chore: fix missing clause andhydrate atomic refs
2024-04-25 23:46:11 -04:00
Zach Daniel
ad076735ae
chore: fix batch size detection while streaming
2024-04-25 22:56:41 -04:00
Zach Daniel
c8e93877ea
improvement: support atomics, update_query, destroy_query in ETS data layer
2024-04-25 22:18:54 -04:00
Barnabas Jovanovics
00ee13143b
fix: handle resource being passed as query code_interface.ex ( #1057 )
...
* handle resource being passed as query code_interface.ex
This bit me today because I had code like this
```elixir
Resource
|> filter_board_codes(board_codes)
|> filter_min_price(min_price)
|> filter_max_price(max_price)
|> filter_refundable_only(refundable_only)
```
and all the `filter_*` functions looked like this
```elixir
def filter_something(query, nil), do: query
def filter_something(query, something) do
query
|> Ash.Query.filter(....)
end
```
* Update lib/ash/code_interface.ex
* add another case
---------
Co-authored-by: Zach Daniel <zach@zachdaniel.dev>
2024-04-25 10:37:44 -04:00
Barnabas Jovanovics
02c10c9216
fix: do not use Enum.map_join ( #1058 )
...
values are only a flat list of values, and map_join would need a function as the third argument if you specify a `joiner`
2024-04-25 07:53:52 -04:00
Pierre Le Gall
65e26cbc16
feat: Ash.create and Ash.update oneliner ( #1055 )
...
* feat: Ash.create and Ash.update oneliner
See #1015 .
* fix: opts dispatch for create and update
* chore: shorten arguments by args
2024-04-24 15:28:26 -04:00
Zach Daniel
f146258159
improvement: remove after_atomic
and instead support after_batch
...
supporting `after_batch` allows things like `archive_related` in `ash_archival`
to dispatch batches of cascading archives
2024-04-24 11:56:36 -04:00
Jechol Lee
56b10be097
fix: use Splode.ErrorClass for error classes ( #1054 )
2024-04-24 06:14:55 -04:00
Jechol Lee
44c38277e5
improvement: Add attributes_present, attributes_absent. ( #1046 )
...
* Add attribute_present, attribute_absent.
* Refactor
* plural name: attributes_present/absent
* Fix conflict
2024-04-23 22:01:35 -04:00
Zach Daniel
dad4d5effc
fix: ensure that errors for nested forms are transformed
2024-04-23 14:03:40 -04:00
Jechol Lee
184dfb3642
fix: Set tenant for managed relationship changeset ( #1044 )
2024-04-23 10:40:19 -04:00
Zach Daniel
5ff767a1aa
fix: don't carry over all changes during atomic upgrade
...
Doing this was causing us to carry over changes that were produced
as part of running the changes in the original changeset build
fixes #1042
2024-04-22 19:01:05 -04:00
Frank Dugan III
35961a793d
feat: leverage resource domain for eager/pre checking ( #1040 )
...
closes #1022
2024-04-22 17:15:27 -04:00
Zach Daniel
7e86b971a4
chore: fix migrate task file name
2024-04-22 12:27:43 -04:00
Zach Daniel
34470d4494
improvement: make extension discovery faster
2024-04-21 11:16:33 -04:00
Zach Daniel
8317e6fca9
fix: properly pin Enum.join
in atomic for enum types
...
fixes #1033
2024-04-20 15:50:11 +01:00
Zach Daniel
d49f991021
fix: ensure actor is set when building queries in filter
2024-04-20 15:46:49 +01:00
Zach Daniel
c7991ec8a7
fix: don't eager evaluate type because it breaks data layers
2024-04-19 16:09:42 +01:00
Rebecca Le
7c75e5c102
refactor: Move opt schema definitions for built-in changes and validations to their specific modules ( #1036 )
...
* refactor: Move Spark opts definitions for built-in changes to the relevant change modules
This allows the change modules to be read and grokked standalone, without
needing to refer back to the `Builtins` module just for the opts
* refactor: Move Spark opts definitions for built-in validations to the relevant validation modules
This allows the change modules to be read and grokked standalone, without
needing to refer back to the `Builtins` module just for the opts
2024-04-19 15:43:35 +01:00
Zach Daniel
94f319a5f4
chore: invert code interface for simpler checking
2024-04-19 14:19:49 +01:00
Zach Daniel
89f15103c8
fix: ensure __union_tag__
is set when calling sub-union types
2024-04-19 13:41:05 +01:00
Zach Daniel
a2ac66093c
fix: handle more &Mod.fun/n
variations in fragments
2024-04-17 16:12:55 +01:00
Zach Daniel
28136ec43f
chore: format
2024-04-17 15:08:29 +01:00
Zach Daniel
45b66f539b
chore: remove atomic
...
fix: ensure validations are considered atomic
2024-04-17 15:07:15 +01:00
Zach Daniel
8e1fd3b833
improvement: better eager expression parsing and atomic error anticipation
2024-04-17 02:34:33 +01:00
Zach Daniel
ccb06b1628
fix: ensure tenant and actor are properly set in Ash.can?
...
fixes #1027
2024-04-17 00:14:31 +01:00
Zach Daniel
f960e69437
chore: remove IO.inspect
2024-04-16 21:49:59 +01:00
Zach Daniel
70cd40065b
fix: ensure changeset filter is parsed for templates
2024-04-16 21:03:25 +01:00
Zach Daniel
65675ef337
fix: properly parse additional changeset expression
2024-04-16 20:45:43 +01:00
Zach Daniel
371c2d1515
fix: properly parse changeset template for filters
2024-04-16 20:41:19 +01:00
Zach Daniel
3044339396
fix: properly parse changeset filter
2024-04-16 20:35:30 +01:00
Zach Daniel
4b50550149
chore: fix typo
2024-04-16 20:31:57 +01:00
Zach Daniel
3b8a15fd34
fix: ensure changeset filters are applied on bulk destroy/update
2024-04-16 20:27:42 +01:00
Zach Daniel
a147062523
improvement: add Ash.read_first
2024-04-16 18:19:20 +01:00
Zach Daniel
77ee3686eb
improvement: helpful output in mix tasks helper
2024-04-16 17:37:15 +01:00
Riccardo Binetti
6d209e8836
feat: configurable multitenancy on read actions ( #1030 )
...
Allow making specific read actions able to optionally or totally bypass
multitenancy
2024-04-16 12:09:13 +01:00
Dmitry Maganov
8bcbfc5b17
fix: support all calculate opts in code interface methods ( #1026 )
2024-04-15 22:34:33 +01:00
Riccardo Binetti
11de5dd64f
improvement: use explicit read actions when reading relationships ( #1029 )
...
While filter, sorts etc are already copied from the read action into the query,
using the right action is relevant, for example, when it's checked against in
policies, or in preparations that check the action name from the query
2024-04-15 22:33:56 +01:00
Riccardo Binetti
3338b343ac
improvement: use cached to_tenant when setting tenant attribute ( #1021 )
2024-04-14 11:53:09 -04:00
Zach Daniel
3519a85cee
fix: ensure to_tenant
is copied to aggregate query
2024-04-13 20:47:01 -04:00
Zach Daniel
bc69f904e2
improvement: support require_reference?: false
on code interfaces
...
improvement: support `:filter` option on bulk create/destroy
2024-04-13 17:21:43 -04:00
Riccardo Binetti
9c74e52bd8
improvement: make match/1
overridable in Ash.Type.Enum ( #1020 )
...
Allow handling additional inputs to map them to one of the enum values
2024-04-13 14:07:23 -04:00
Zach Daniel
0e2b392413
fix: compilation time improvements (hopefully)
2024-04-12 14:14:14 -04:00
Lukas Ender
10e3722446
fix: code_interface
actions accept @context
( #1016 )
2024-04-12 10:26:46 -04:00
Zach Daniel
8ea51ec506
fix: ensure tenant is set to opts
in action helpers
2024-04-11 23:33:22 -04:00
Zach Daniel
47dde10329
improvement: adding domain to embedded resource is an error
2024-04-11 22:28:47 -04:00
Zach Daniel
0416ce1d0d
fix: ensure more consistent use of Ash.Tenant.to_tenant/2
2024-04-11 11:41:29 -04:00
Zach Daniel
dc1205a48f
fix: ensure that strict loads are applied at all nesting levels
2024-04-11 10:16:24 -04:00
Zach Daniel
2474fbed44
improvement: raise more sensible error on unsupported pagination
2024-04-11 09:38:49 -04:00
Zach Daniel
752320c139
fix: properly load depended on fields for relationships even if public?: false
2024-04-11 08:04:20 -04:00
Jechol Lee
0b79515f69
fix: fix date_add query function ( #1010 )
2024-04-11 07:42:11 -04:00
Zach Daniel
e1a0b48172
fix: pass name through to underlying tasks
2024-04-10 19:02:42 -04:00
Zach Daniel
829f6d6e49
improvement: support builder options in read
code interfaces
2024-04-10 15:57:30 -04:00
Zach Daniel
268b335946
chore: fix return type matching for generic actions
2024-04-10 13:58:22 -04:00
Zach Daniel
bae263ca12
improvement: support omitting generic action return types
2024-04-10 13:46:44 -04:00
Riccardo Binetti
9f2b4ab8ba
improvement: call ToTenant protocol when setting tenant in actions ( #1004 )
2024-04-10 09:35:39 -04:00
Rebecca Le
3fce34cda6
fix: Validate all conditions in a numericality
validation instead of only the last ( #997 )
...
The previous `reduce` loop did not break on the first failure and
return the error, it returned the last iteration of the loop
Some more work may need to be done on the atomic side of the validation,
I'm not familiar with how they work!
2024-04-10 09:25:42 -04:00
Zach Daniel
f504ab6a67
chore: fix domain behaviour impl
2024-04-10 07:55:37 -04:00
Riccardo Binetti
8eb98bc663
fix: swap the parameters in Ash.ToTenant.to_tenant/2 ( #1003 )
...
This is technically a breaking change, but without this the protocol would never
work as intended since the funtion gets dispatched based on the type of the
first parameter and the resource parameter will always be an atom (precisely, an
alias) so the implementation for Atom will always be called
2024-04-10 06:58:53 -04:00
Zach Daniel
2f28bd9ee7
chore: better use Ash.Resource
options
...
chore: atom -> module
2024-04-09 22:55:26 -04:00
Zach Daniel
46ed97dd10
improvement: add ash.rollback
mix task
...
chore: fix some naming/mix task steps
2024-04-09 20:24:08 -04:00
Zach Daniel
4f26773fe0
improvement: add ash.rollback
task
2024-04-09 14:54:44 -04:00
139058d4c0
fix(Ash.Reactor): crash when calling an ash reactor for the first time.
...
Thanks to @carlgleisner for the [detailed reproduction](https://github.com/carlgleisner/reactor_notification_worker_issue ).
The problem was caused by an attempt to not have nested reactors indepdently publish their notifications separate to the parents but contained a logic flaw which caused the agent to not start, but only the first time you try and use a given reactor.
The fix involves _always_ starting a notification agent for each reactor, but nesting them. When a reactor completes it either publishes it's notifications to the parent reactor or to ash if there are no parent reactors.
2024-04-10 06:19:38 +12:00
Zach Daniel
1854880def
improvement: add config :ash, require_atomic_by_default?, false
, for upgrading
2024-04-09 13:45:19 -04:00
Zach Daniel
5c70935f2f
improvement: support skip_unknown_inputs
in Ash.bulk_create
...
closes : #998
2024-04-09 13:24:03 -04:00
Zach Daniel
25c1063e45
fix: add context argument to before_action
and after_action
for read actions
...
closes #999
2024-04-09 13:21:06 -04:00
Andreas Donig
95ecc5155c
fix: add base case for Ash.Resource.Info.public_relationship/2 ( #1000 )
...
test: Add a simple test for Ash.Resource.Info.public_relationship/2
---------
Co-authored-by: Andreas Donig <git@innwiese.de>
2024-04-09 13:17:03 -04:00
321f43bd05
feat(Ash.Reactor): Add new change
step type which can be used to modify changesets.
2024-04-09 09:03:04 +12:00
2973c0db94
improvement(Ash.Reactor): Allow create
to be provided an initial value.
...
The initial value can be either a resource or a changeset.
2024-04-09 09:03:04 +12:00
c67295de6e
improvement: Allow Reactor modules to be run directly from generic actions. ( #993 )
...
- Extends the generic action runner to detect when the `run` module is a Reactor and automatically executes it in the correct way.
- Adds a verifier that detects said actions and ensures that action arguments are present for all expected inputs.
2024-04-08 16:48:58 -04:00
Zach Daniel
4cbf2d3e14
docs: more restructuring, reviewing of guides
2024-04-08 13:39:45 -04:00
Zach Daniel
5e1df439d7
chore: format
2024-04-08 12:15:09 -04:00
Zach Daniel
e91da15564
docs: moved around some documentation
...
docs: added changes guide
docs: moved around validations guide, removed extra one
2024-04-08 12:05:36 -04:00
Zach Daniel
05dd917af0
docs: update explanation of sort parser
...
fix: honor new calcualtion sort format in sort parser
2024-04-08 09:54:05 -04:00
Zach Daniel
c31fbc9c3e
fix: don't raise error on keyword input to create interface
2024-04-08 08:41:33 -04:00
Zach Daniel
6d3b00f77f
fix: action is an atom in erroor case for bulk update
2024-04-08 08:33:14 -04:00
Zach Daniel
d153b40dea
docs: consolidate guides into relationships.md
...
improvement: add `Ash.Query.apply_to/3`
2024-04-07 15:31:26 -04:00
Zach Daniel
773e9cea91
docs: move identities guide
2024-04-07 14:50:18 -04:00
Zach Daniel
d2612a9ed8
docs: doc fixes, move code interface docs
2024-04-07 12:33:59 -04:00
Zach Daniel
49958975a1
chore: remove dedicated constraints
guide, put it in Ash.Type
2024-04-07 10:52:18 -04:00
Zach Daniel
2226b00ca5
docs: more condensation/relocation of docs
2024-04-07 10:11:19 -04:00
Zach Daniel
957ac1880e
docs: better docs on atomics & upserts
2024-04-07 09:36:09 -04:00
Zach Daniel
951eaba973
chore: fix build/test
2024-04-07 08:05:23 -04:00
Zach Daniel
d2ea5bb108
docs: rewrite action docs
...
improvement: synthesize attributes from atomics for better notifications
2024-04-07 08:02:10 -04:00
Dmitry Maganov
bc00873cfd
fix: undo adding primary key argument for methods with get?
( #989 )
2024-04-07 06:41:03 -04:00
Dmitry Maganov
5c600c1f42
fix: remove internal?
and stacktraces?
from common opts ( #988 )
2024-04-07 06:00:32 -04:00
Zach Daniel
ea463402a2
fix: pattern match error in managed relationships
...
closes #986
2024-04-07 05:17:05 -04:00
Rebecca Le
98d7ee759f
docs: Fix formatting of examples for Ash.Resource.Preparation.Builtins
( #987 )
...
* docs: Fix other cases of unformatted code examples
2024-04-07 05:03:21 -04:00
Riccardo Binetti
7d75e64d86
feat: add update_change
function and builtin change ( #976 )
2024-04-07 05:02:38 -04:00
Zach Daniel
8249b6cabd
fix: include options for generic action code interfaces
2024-04-07 05:00:50 -04:00
Zach Daniel
26a6efe10d
fix: logic errors around arguments/changing attributes in validations
2024-04-06 18:40:40 -04:00
Riccardo Binetti
355bd73bf9
improvement: make Ash.Resource.Validation.Match partially atomic ( #979 )
...
* fix: handle partially atomic validations in run_action_changes
* improvement: make Ash.Resource.Validation.Match partially atomic
2024-04-06 17:50:54 -04:00
Zach Daniel
f9eff8810f
docs: refactor security guides
2024-04-06 17:40:05 -04:00
Zach Daniel
a7b69303ca
chore: properly manage sat solver dependencies
2024-04-05 15:11:09 -04:00
Zach Daniel
8927460f77
fix: more improvements to resource matching in can?
2024-04-05 15:06:44 -04:00
Jefferson Queiroz Venerando
51db6c5b1a
chore: fix typo in sort error message ( #984 )
2024-04-05 12:38:56 -04:00
Zach Daniel
b0ff379d00
docs: work on organizing docs
...
fix: detect more cases for domain extraction from resources
2024-04-05 12:24:12 -04:00
Zach Daniel
6a486a4a9a
fix: properly dispatch managed relationships to proper domain
2024-04-05 09:57:52 -04:00
Zach Daniel
4e329cde31
fix: check target resource's domain before assuming it is the same as current domain
2024-04-05 06:37:20 -04:00
Riccardo Binetti
38c1ca808d
fix: return {:error, query} for invalid query in Aggregate.run/4 ( #982 )
...
Avoid making callers like Ash.aggregate crash with a WithClause error
since they expect an :ok/:error tuple
2024-04-05 06:36:05 -04:00
Zach Daniel
f473b32297
fix: allow strings in Ash.Type.Enum again
2024-04-05 06:25:54 -04:00
Zach Daniel
7534d6bcb1
chore: try again w/ domain priority
2024-04-04 22:55:30 -04:00
Zach Daniel
950ff3d060
fix: set tenant in bulk creates after setting up changeset
2024-04-04 20:34:37 -04:00
Zach Daniel
0f8c8152c7
chore: format
2024-04-04 20:07:49 -04:00
Riccardo Binetti
fb66b83670
chore: show the correct alternatives for already validated changesets ( #978 )
2024-04-04 18:56:00 -04:00
Zach Daniel
3f82e3fe0a
fix: use the resource's domain above option domain
2024-04-04 18:44:25 -04:00
Zach Daniel
ca89ee4840
chore: format
2024-04-04 18:21:51 -04:00
Zach Daniel
3cfa980762
docs: start on docs overhaul
2024-04-04 16:24:55 -04:00
Zach Daniel
ec76778b49
chore: backport fixes from 2.0
2024-04-04 14:45:03 -04:00
Zach Daniel
cce4a0f2c3
fix: properly cast identity keys before comparison
...
fixes #877
2024-04-04 14:30:50 -04:00
Zach Daniel
9cf1e3a215
fix: properly handle multiple paths for checking sortable relationships
2024-04-04 09:55:12 -04:00
Zach Daniel
9d9cfee1a6
chore: raise explicit error instead of a match error
2024-04-04 07:21:10 -04:00
7721dc1c61
fix: multi-line DSL doc options in Ash.Reactor
. ( #974 )
...
Closes #973 .
2024-04-03 22:56:42 -04:00
Zach Daniel
28f0b4f62c
fix: don't call domain at compile time if its not loaded
...
we assume some other error will occur
2024-04-03 17:15:34 -04:00
Zach Daniel
f1a9ad949c
fix: ensure that generic action arguments have proper default for public?
2024-04-03 12:36:04 -04:00
Zach Daniel
d9aebaec1c
improvement: add skip_unknown_inputs
for generic actions
2024-04-03 07:28:19 -04:00
Zach Daniel
a21341d880
chore: fix typespec for stream!/2
2024-04-02 22:04:49 -04:00
Zach Daniel
17d8e5eb00
chore: fix typo from flatten -> wrap
2024-04-02 20:23:03 -04:00
Zach Daniel
3776619aba
fix: ensure we don't double-query values after manual actions
2024-04-02 20:17:41 -04:00
Zach Daniel
ab0ec1d40e
fix: properly handle lists of errors added by validations
2024-04-02 11:47:43 -04:00
Zach Daniel
48e50cfe63
fix: honor only_when_valid?
on validations in bulk actions
2024-04-01 23:29:13 -04:00
Dmitry Maganov
43d2246530
improvement: support allow_nil_input
dsl option in update/destroy ( #964 )
2024-04-01 17:26:21 -04:00
Zach Daniel
05f3de2538
fix: fix typespec for bulk_create
2024-04-01 17:19:23 -04:00
Zach Daniel
a53ee04441
chore: add missing clause
2024-04-01 17:01:56 -04:00
Zach Daniel
ae5a9609ac
chore: wrap up private attribtue acceptance feature
2024-04-01 16:56:54 -04:00
Zach Daniel
b1c7c01701
improvement: allow accepting private attributes
...
docs: update upgrade guide
2024-04-01 16:43:56 -04:00
Zach Daniel
3eaeb864ea
fix: ending a policy w/ authorize_if
had flipped conditional
2024-03-31 23:53:59 -04:00
Dmitry Maganov
bc34287edc
fix: handle sensitive?
option in query aggregate/calculation ( #963 )
2024-03-31 21:28:42 -04:00
Zach Daniel
f885a0753f
improvement: allow adding non-public attributes to explicit accept lists
...
docs: update upgrade guide
2024-03-30 11:42:52 -04:00
Zach Daniel
baa3289a09
fix: properly retain input order for embedded attributes
...
improvement: better error messages for private attribute accepting
2024-03-29 21:24:05 -04:00