Commit graph

96 commits

Author SHA1 Message Date
Zach Daniel
cb3facb519 fix: we cannot assume that after_action/1 can be done atomically
The reason for this is that a given change may access `changeset.data`
which will not be available. This may introduce compile errors for some users
unfortunately, there is nothing we can do about this. They will need to change
to writing custom changes w/ the `atomic/3` callback that adds an after action
hook

improvement: honor a `_union_type` type param when casting unions
2024-09-11 09:57:22 -04:00
Zach Daniel
e29897e1aa improvement: add system for action_select, which can limit selects from mutations 2024-09-10 15:08:08 -04:00
Zach Daniel
e33dc23a07 improvement: support select_by_default? flag on attributes 2024-09-10 13:24:56 -04:00
Zach Daniel
0f31d463d9 docs: update docs to expand PII term 2024-09-09 13:34:37 -04:00
Zach Daniel
ec12332e95 fix: properly leverage atomic upgrade read action for an update action 2024-09-05 15:04:38 -04:00
e6a7006c30
feat(Ash.Reactor): Add load option to existing actions, and add new step type. (#1435) 2024-09-05 13:59:22 +12:00
Zach Daniel
b99ff3b3a0 chore: update docs 2024-08-30 18:27:48 -04:00
Zach Daniel
b841eaf54c chore: add tests for accept & some opts improvements 2024-08-21 11:58:11 -04:00
Zach Daniel
5fc5d32508 improvement: cache action known inputs individually
improvement: cache action required inputs all together
2024-08-19 21:49:34 -04:00
Jonatan Männchen
93775109c7
improvement: Implement condition for upsert (#1386)
Resolves #1385
2024-08-13 19:19:13 -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
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
2d6a3cc35d chore: set action before determining opts on changeset 2024-07-23 13:15:09 -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
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
Zach Daniel
3c2f51224a chore: get build passing 2024-07-19 12:40:09 -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
5215c4e124 chore: fix build 2024-07-15 08:18:01 -04:00
Alessio Montagnani
7f2e7d3ec1
improvement: bring uuid version 7 into the core (#1253) 2024-06-23 18:16:20 -04:00
Zach Daniel
dc94f3a743 improvement: support nils_distinct? on identities
improvement: support `where` option on `identities`
improvement: allow calculations in identity keys

closes #1001
closes #1182
2024-05-24 00:24:42 -04:00
Zach Daniel
e63d80e645 fix: handle subquery-requiring calculations in calculate/2 2024-05-23 17:33:29 -04:00
Zach Daniel
feb187bdf6 improvement: add atomic_upgrade? flag to update/destroy actions
improvement: do not do atomic upgrade by default unless `require_atomic?` is `true`
improvement: allow configuring the read action used by atomic upgrades
2024-05-23 11:05:17 -04:00
ab3786ebf6
feat(Ash.Reactor): Add bulk_update step type. (#1185) 2024-05-22 15:26:51 +12:00
1d5d247d7a feat(Ash.Reactor): Add bulk_create step type. 2024-05-21 09:14:02 +12:00
Zach Daniel
751153990b docs: add alternatives guide 2024-05-16 09:38:31 -05:00
Zach Daniel
124a3c734e improvement: better types for checks, for spark autocomplete
chore: update spark
2024-05-14 11:38:33 -04:00
Zach Daniel
b48c989b15 fix: don't check required belongs to fields until after setting them in bulk creation
docs: fix doc links for code interface guide

fixes #1154
2024-05-12 14:12:24 -04:00
Zach Daniel
48c6438212 improvement: change default timeout to :infinity, for efficiency 2024-05-07 17:01:11 -04:00
Moxley Stratton
65ad0c6039
docs: Add doc text to the default option (#1077)
* Add doc text to  option

* Second version of the change

* Adjust docs for `:default`, and generate .md files

* Fix type
2024-05-01 16:03:09 -04:00
Sergey Moiseev
417d39e7de
Add documentation on disabling pagination (#1076) 2024-04-29 20:40:19 -04:00
Zach Daniel
28c75df7b8 improvement: support new data layer capability calculate/3
fix: solve for custom expressions and one-off calculations
2024-04-29 16:58:37 -04:00
Zach Daniel
69b5bd3d3c chore: update cheat sheets 2024-04-29 07:54:50 -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
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
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
Zach Daniel
bae263ca12 improvement: support omitting generic action return types 2024-04-10 13:46:44 -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
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
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
f9eff8810f docs: refactor security guides 2024-04-06 17:40:05 -04:00
7721dc1c61
fix: multi-line DSL doc options in Ash.Reactor. (#974)
Closes #973.
2024-04-03 22:56:42 -04:00
Dmitry Maganov
43d2246530
improvement: support allow_nil_input dsl option in update/destroy (#964) 2024-04-01 17:26:21 -04:00