Commit graph

2939 commits

Author SHA1 Message Date
Andreas Donig
986d6e6467
docs: Fix an error in the changeset action lifecycle example (#1402) 2024-08-22 09:15:22 -04:00
Zach Daniel
05feea14ef chore: avoid emitting read spans when only loading data 2024-08-21 20:47:37 -04:00
Dmitry Maganov
8d4a4b055a
fix: do not call tracer set_metadata with span type that it ignores (#1400) 2024-08-21 19:43:40 -04:00
Zach Daniel
1f3059b5bf fix: traverse calculated relationships when rewriting transient calculation values
chore: clean up sort call to `function_exported?`
2024-08-21 19:34:19 -04:00
Zach Daniel
b841eaf54c chore: add tests for accept & some opts improvements 2024-08-21 11:58:11 -04:00
Zach Daniel
d593e3cee9 improvement: error at compile for bypasses that will have no effect
chore: remove unused `checks` field from `%Ash.Policy.Authorizer.Policy{}`
2024-08-20 21:30:55 -04:00
Zach Daniel
7cf38273fa improvement: prevent unnecessary calls to Ash.load 2024-08-20 11:55:46 -04:00
Zach Daniel
48507eac13 chore: run proper callback and test that we call the loading callback 2024-08-20 10:25:50 -04:00
Zach Daniel
51f57b6390 chore: pass context to load relationships 2024-08-20 10:18:01 -04:00
Zach Daniel
79c456f9fd chore: properly detect presense of load relationships 2024-08-20 09:39:48 -04:00
Zach Daniel
705e6b56e2 improvement: add load_relationships/5 callback to manual reads 2024-08-20 09:25:21 -04:00
Zach Daniel
f78d3ea7e5 chore: add final clause for uuid cast input 2024-08-19 22:05:30 -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
Zach Daniel
29e3a35d4c improvement: optimize to avoid inspects in changesets
improvement: optimize to avoid expensive `String.valid?` check in uuid type
2024-08-19 20:59:02 -04:00
Zach Daniel
d2d4be19fe improvement: add async? option to calculations, default to false
the vast majority of calculations will not benefit from being run
in a separate process, so the framework now defaults to running
them synchronously unless explicitly requested
2024-08-19 17:19:21 -04:00
Zach Daniel
a43624c9f3
improvement: add cascade update built in change (#1398)
---------

Co-authored-by: Alykhan Jetha <aj@marketcircle.com>
2024-08-19 11:34:38 -04:00
Zach Daniel
69b5e20b2f improvement: add uuid-v7-primary-key option to mix ash.gen.resource
closes #1396
2024-08-19 11:14:47 -04:00
Rebecca Le
057abfef18
docs: Stop the * in Ash.Type.* italicising everything when converted to Markdown (#1397) 2024-08-19 10:43:57 -04:00
Zach Daniel
7071884d05 improvement: optimize field checking for loading fields in query
improvement: allow functions in tracers for lazy loading metadata
2024-08-15 21:19:23 -04:00
Zach Daniel
5a6583a019 fix: optimize filter expr traversal 2024-08-15 19:37:42 -04:00
Zach Daniel
2e13d2b0df improvement: add read_action option to cascade_destroy 2024-08-15 10:49:36 -04:00
Zach Daniel
ce5c080492 improvement: don't start processes for single items in list
chore: add some benchmarks/flame files
2024-08-15 09:14:43 -04:00
Jonatan Männchen
e200b5b9d1
chore: Implement upsert_condition for bulk create (#1389) 2024-08-14 20:26:03 -04:00
Zach Daniel
87d8263abb improvement: support expr and expr_type options when building aggregates
for example:

```elixir
calculate(
  :max_comment_similarity,
  :float,
  expr(max(comments, expr_type: :float, expr: fragment("similarity(?, ?)", title, ^arg(:to))))
) do
  argument(:to, :string, allow_nil?: false)
end
```
2024-08-14 20:11:58 -04:00
Zach Daniel
7cb3e04b2a fix: fix ets lateral join source field usage
fix: properly apply distinct in ets
2024-08-14 11:11:03 -04:00
Jonatan Männchen
93775109c7
improvement: Implement condition for upsert (#1386)
Resolves #1385
2024-08-13 19:19:13 -04:00
Zach Daniel
545b7a60f2
improvement: Optimize option validation with compile time validators (#1387)
A user doing load testing of their Ash application is seeing *wildly* significant performance improvements from this change. Unexpected, but naturally very pleasing.
2024-08-13 19:04:58 -04:00
Zach Daniel
1654ccdead fix: properly pass actor, action, tenant etc. to lazy loaded relationships 2024-08-13 11:16:00 -04:00
Zach Daniel
622561dc90 chore: add actor to policy errors for later use 2024-08-13 10:10:49 -04:00
Rebecca Le
074b65ed7d
chore: Report which module is at fault, when raising an error about relationship domain inclusion (#1384) 2024-08-12 08:47:18 -04:00
Zach Daniel
5b40040c76 chore: fix recent calculation optimization to never prune authorization calcs 2024-08-09 17:28:44 -04:00
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