Commit graph

2817 commits

Author SHA1 Message Date
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
Zach Daniel
14ad3a1f6d improvement: use resource api when verifying its presence in a known api 2024-03-29 19:49:32 -04:00
Zach Daniel
2ef23840cc fix: fix changing_attributes check implementation 2024-03-29 17:31:26 -04:00
Zach Daniel
8f1217ea03 chore: fix typespecs and format 2024-03-29 16:55:32 -04:00
Dmitry Maganov
99153144c7
improvement: change type argument position in Ash.Query.calculate (#959) 2024-03-29 11:14:12 -04:00
Mitchell Hanberg
009dbb6c2c
refactor: erroneous else (#957)
* refactor: erroneous else

* Update lib/ash/actions/helpers.ex

---------

Co-authored-by: Zach Daniel <zachary.s.daniel@gmail.com>
2024-03-29 08:27:39 -04:00
Dmitry Maganov
10e7129e5b
improvement: allow simple check to return error tuple (#956) 2024-03-29 08:25:48 -04:00
Zach Daniel
e00a50c9f6 improvement: skip unknown inputs when managing relationships 2024-03-28 19:46:12 -04:00
Zach Daniel
48d8181967 improvement: ignore unknown string-keyed inputs beginning with _
improvement: support requesting to ignore additional keys
2024-03-28 18:20:22 -04:00
Zach Daniel
f8384e44b5 improvement: add skip_unknown_inputs option, use it for embeds in unions 2024-03-28 16:29:37 -04:00
Zach Daniel
ff949be810 chore: fix bad merge 2024-03-27 21:13:49 -04:00
Zach Daniel
2cf6816747 improvement: ensure that update defaults are set 2024-03-27 20:39:52 -04:00
Zach Daniel
fe32acf281 fix: properly handle transaction errors from bulk creates 2024-03-27 19:55:00 -04:00
Zach Daniel
5967ed3a48 improvement!: 3.0 (#955)
* improvement!: use `%Ash.NotSelected{}` for unselected values

* improvement!: default `require_atomic?` to `true`

* improvement!: raise errors on unknown generic action arguments

* improvement!: default bulk strategy to `:atomic`

* improvement!: warnings on `require_atomic?` `true` actions
improvement!: revise `Ash.NotSelected` to `Ash.NotLoaded`
improvement!: errors on unknown action inputs across the board

* doc: clarify wording in notifiers.md

closes #889

* improvement!: default `api.authorization.authorize` to `:by_default`

* improvement!: require the api when constructing changesets

this commit also fixes some work from prior commits around
the default value for the `authorize` option

* improvement!: code_interface.define_for -> code_interface.api

`code_interface.define_for` is now `code_interface.api`. Additionally, it is set automatically if the `api` option is specified on `use Ash.Resource`.

* improvement!: remove registries

* improvement!: pubsub notifier default to `previous_values?: false`
improvement!: requires_original_data? callback defaults to false

* improvement!: rename Ash.Calculation -> Ash.Resource.Calculation
improvement!: improve `Ash.Query.Calculation.new` signature
improvement!: anonymous function calculations now take lists and return lists
improvement!: make callback contexts into structs
improvement!: pass context to builtin lifecycle hook changes
improvement!: calculation arguments are now in the `arguments` key of the context

* chore: fix build

* improvement!: remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`

* improvement: update spark to 2.0

* improvement!: make picosat_elixir optional with `simple_sat`

* improvement!: rename api to domain

* docs: add more info to upgrading guide

* docs: tweak docs formatting

* improvement!: remove `Ash.Changeset.new!`

* docs: update docs for `Ash.Changeset.new/1`

* improvement!: deprecate `private?: false` in favor of `public?: true`

* doc: add upgrade guide for private -> public

* improvement: update reactor to 3.0

* improvement!: default `default_accept` is now `[]`

* improvement!: `Ash.CiString.new/1` returns `nil` on `nil` input

* improvement!(Ash.Reactor): Improve integration with Ash 3.0 changes.

* improvement!: clean up and reorganize `Ash` functions

this is in preparation of deprecating the functions that are defined
on the api

improvement!: remove context-based functionality

* chore: update docs references from `Ash.Domain` to `Ash`

* chore: fix bad merge

* chore: fix context access in atomic changes

* improvement!: Deprecate calling functions on (domain) api in favor of `Ash`

* improvement!: add `attribute_public?` and update `attribute_writable?` behavior

* improvement!: update atomic behaviors, default to invalid

* chore: update downcase docs

* improvement!: changeset.filters -> changeset.filter

* improvement!: remove deprecated functions

* improvement!: remove and simplify `Ash.Filter.TemplateHelpers`

* improvement: import Ash.Expr in modules where it is used
improvement: require Ash.QUery in modules where it makes sense

* fix!: keyword lists are no longer special cased in ash expressions

* improvement: add structs for more context implementations

* chore: small tweaks, finish `:all` -> `:*` conversion

* chore: update DSL docs for multitenancy.global?

* improvement: ensure selects are applied on destroys
chore: remove TODOs

* chore: some docs changes

* improvement!: introduce strict mode to calculations

* chore: update tests

* improvement: support custom expressions

* docs: document custom expressions

* chore: fix and test custom expressions and function fragments
docs: update relevant docs w/ the changes

* improvement!: reverse order of before action & before transaction hooks

* improvement!: default read actions are now paginatable

* improvement!: require explicit accept lists in default actions

* chore: update docs

* improvement!: remove Ash.Flow and Ash.Engine

* chore: unlock unused deps

* chore: don't use unused variable

* chore: include ash flow change in upgrade guide

* improvement!: standardize various exception keys and names

* improvement!: use `Splode` for errors

* improvement: update upgrade guide to include Splode

* feat: code interface on the domain

* improvement: only require primary key if resource has actions or fields
improvement: only build schema if resource has actions or fields
improvement: verify primary key in its own verifier

* improvement: add `resource/1` builtin check

* improvement!: move simple_notifiers to an option instead of a DSL builder
improvement!: update spark for better autocomplete, configure autocomplete for key functions
docs: replace `an domain` with `a domain`

* improvement: better code interface documentation

* fix: set tenant on query so that root calles to Api.aggreagte work as expected (#929)

* chore: fixes from previous improvements

* chore: update splode

* chore: update splode

* improvement!: swap position of sort order and arguments in calculation sorting

* improvement!: add `include_nil?` aggregate option, and default it to `false`

* improvement: support notifiers within actions

* improvement: support specifying multiple filters

* improvement: add `sortable?` flags to all fields
improvement: support multiple filters on relationships

* improvement: support sensitive? on calculations and arguments

* improvement: validate resources in inputs to code interface

* chore: don't require explicit accept lists when using `default_accept :*`

* chore: update spark

* chore: update public attribute handling per 3.0

* improvement: update reactor and tests

* chore: better error message

* chore: fix rebase issue

* chore: handle merge issues
improvement: don't require domain on relationships if destination has domain

* improvement!: errors on unknown inputs for calculations

* improvement: always choose to cast atomic

* improvement: support casting some embeds atomically

* improvement: various 3.0 updates, documented in upgrade.md

* chore: Add failing tests for loads with with explicit domains. (#948)

Co-authored-by: James Harton <james@harton.nz>

* improvement: ensure non-static dynamic domains works

* improvement: add Ash.ToTenant protocol

* chore: add docs for no ToTenant option

* fix: properly construct new query in `build/3`

* chore: update simple_sat dependency

* chore: don't reselect when missing primary keys

* chore: remove IO.inspect

* chore: update spark

* chore: update spark

* improvement: use `Keyword.put_new` in `Ash.Context.to_opts` (#953)

* improvement: support bulk and atomic operations in code interfaces

---------

Co-authored-by: James Harton <james@harton.nz>
Co-authored-by: WIGGLES <55168935+WIGGLES-dev@users.noreply.github.com>
Co-authored-by: Dmitry Maganov <vonagam@gmail.com>
2024-03-27 16:31:59 -04:00
Riccardo Binetti
b7cfddf77c
fix: make bang variant of field aggregates work correctly (#954)
split_aggregate_opts/1 was called too early so it didn't handle the translation
of :read_action to :action, leading to a NimbleOptions error during validation
2024-03-27 14:22:49 -04:00
Riccardo Binetti
8826c9ec35
fix: enforce multitenancy on aggregates (#952)
The multitenancy attribute was already considered as a filter in
aggregates, but the presence of the tenant was not enforced
2024-03-27 10:07:53 -04:00
Dmitry Maganov
4522d7349d
fix: fix missing tenant in some bulk contexts (#951) 2024-03-27 07:31:19 -04:00
WIGGLES
65a28cff33
fix: Fix places where tenant is not passed along (#950)
* pass tenant to top legel aggregate api

* pass tenant manage relationship when loading relationships
2024-03-26 13:30:37 -04:00
Zach Daniel
35d45238c9 fix: don't try to reselect fields when pkeys are missing 2024-03-26 02:10:03 -04:00
Zach Daniel
88d0b46dec improvement: detect loaded-through types 2024-03-24 23:25:28 -04:00
Zach Daniel
9f1d1ff723 chore: format 2024-03-24 19:39:06 -04:00
Zach Daniel
4e93212838 chore: fix match clause on calculation evaluation 2024-03-24 19:30:21 -04:00
Dmitry Maganov
a85f559a20
fix: convert %{__struct__: T} into %T{} (#947) 2024-03-24 19:26:38 -04:00
Dmitry Maganov
e6315e2928
improvement: support load option for create/update/destroy (#946) 2024-03-24 19:26:04 -04:00
Zach Daniel
ac0ff0e2e4 improvement: restore old behavior of leveraging in memory values for calculations 2024-03-24 19:25:13 -04:00
Dmitry Maganov
7734ac0967
fix: corrections for reload/reload! (#942) 2024-03-23 15:42:30 -04:00
Dmitry Maganov
d65294c174
fix: show that Policy.Check.strict_check can return an error tuple (#945) 2024-03-23 15:41:20 -04:00
Zach Daniel
0afb9ade26 chore: fix typo 2024-03-22 03:38:28 -04:00
Zach Daniel
6f21ecf0f8 chore: fix typo & remove unused variable 2024-03-22 03:23:27 -04:00
Zach Daniel
d1c0f0e6d6 improvement: simplify inspect for aggregates
fix: remove unnecessary function
2024-03-22 03:10:13 -04:00
Minsub Kim
75b2d2eb00
feat: add less_than, greater_than constraints to float, decimal (#936) 2024-03-22 02:39:59 -04:00
Riccardo Binetti
23055f0a18
feat: allow providing descriptions to Ash.Type.Enum values (#940)
As discussed in https://github.com/ash-project/ash_graphql/issues/116, this
allows extensions to use the description to use the provided descriptions.

The documentation assumes that if a user provides a description, it does so for
all values (since this seems to be a reasonable assumption and allows the nicer
keyword list syntax). However tests also cover an enum with some missing
descriptions.
2024-03-22 02:38:59 -04:00
Zach Daniel
5a338206b7 fix: fully expand calculation and aggregate references for applying authorization 2024-03-22 01:10:15 -04:00
Hannes Wüthrich
00b1ef3bee
fix: batch_change/3 is never called for updates (#938)
* fix: bulk updates for streams ignore :batch_size
2024-03-21 08:40:18 -04:00
Dmitry Maganov
ed4655cd83
improvement: add matches built-in policy check (#937) 2024-03-21 08:39:21 -04:00
Zach Daniel
c04b638136 chore: format, add back missing function 2024-03-20 16:44:40 -04:00
Hannes Wüthrich
b398107ca3
fix: don't double-encode vector data (#934) 2024-03-20 16:32:45 -04:00
skanderm
f5daca37c2
fix: update set/get/update_context function specs to use maps (#935) 2024-03-20 16:00:49 -04:00
Zach Daniel
3ca8409ba5 fix: ensure calculation context is set on aggregate contents 2024-03-20 15:51:39 -04:00
Dmitry Maganov
cc440d9fa0
fix: set source_attribute from join_relationship in many_to_many (#932) 2024-03-19 08:11:15 -04:00
Zach Daniel
aafeab5e94 fix: use proper logic for atomic present validations
improvement: cast atomic reference types, makes life easier for data layers
2024-03-19 00:04:57 -04:00
Jechol Lee
096542f352
fix: Set tenant correctly when reading many_to_many relationship. (#928) 2024-03-14 20:30:10 -04:00
Zach Daniel
d62faaa0a5 fix: properly match no_rollback error 2024-03-14 14:35:45 -04:00
Dmitry Maganov
c485e714b0
fix: load with right module in get_rewrites of Ash.Type.Struct (#927) 2024-03-13 14:41:53 -04:00
Zach Daniel
54bbcc3057 chore: I was wrong 2024-03-12 20:32:12 -04:00
Tun Cham Roeun
7d7bcaa3d7
fi: fetch_count/4 use the query after applying before_action hooks (#922)
---------

Co-authored-by: Zach Daniel <zachary.s.daniel@gmail.com>
2024-03-12 20:28:52 -04:00
Dmitry Maganov
b75327445c
improvement: use wrap_list for where in changes.change (#926) 2024-03-12 13:02:43 -04:00
Zach Daniel
8df5d5fd92 improvement: don't require Mix to compile an Ash resource 2024-03-11 21:43:04 -04:00
Zach Daniel
b89120ff15 fix: ensure that calculation dependency loader combines selects 2024-03-11 21:37:40 -04:00
Zach Daniel
74080f8043 chore: reorder case statements 2024-03-11 21:30:08 -04:00
Zach Daniel
ea9ec7dfef fix: properly handle raised errors from async calculations
fix: ensure depended on attributes are selected in calculations
2024-03-11 21:28:59 -04:00
Zach Daniel
2c432bb193 fix: properly merge related selects when merging loads 2024-03-11 21:12:11 -04:00
Zach Daniel
a1b3105e8b chore: properly set indexed map values in casted_attributes 2024-03-11 12:34:21 -04:00
Zach Daniel
b7cb89c481 chore: ensure constrainted attributes appear in casted_*
chore: update dsl docs
2024-03-11 12:18:17 -04:00
Zach Daniel
40977bce4f improvement: store casted values even if they are nil 2024-03-11 11:05:10 -04:00
Dmitrii Maganov
57a99cbc76 chore: remove unneeded persist call 2024-03-11 16:14:21 +13:00
Dmitry Maganov
19c33397aa
fix: typespec for action policy check supports list of action names (#924) 2024-03-10 21:06:11 -04:00
Dmitry Maganov
ecaef99ddf
docs: uuid_primary_key does not have generated?: true by default (#923) 2024-03-10 21:05:42 -04:00
Simon Bergström
a24e1d9bdf
docs: Improvements to the bulk_update and bulk_destroy functions (#910)
* docs: corrections after discussions of what the input is.
2024-03-09 14:55:35 -05:00
e5f01bbd59
improvement(Ash.Reactor): Backport improvements from 3.0 branch. 2024-03-08 10:51:40 +13:00
Zach Daniel
18cc9c9b26 fix: ensure that message is honored in atomic validations
fix: don't require actor when constructing aggregate query
2024-03-07 10:47:43 -05:00
Zach Daniel
f19fa6c6c0 improvement: do not perform atomic upgrade on destroy actions
fix: correct atomic implementation of `present` validation
fix: track keys that are set to `nil` in changesets, for use in atomic upgrade
2024-03-05 00:01:02 -05:00
9b88628b07
improvement: Make undo actions for update and destroy actions more explicit. (#920)
* chore(Ash.Reactor): Follow on from `get` -> `read_one` rename.

* improvement(Ash.Reactor): Make undo actions for `update` and `destroy` more explicit.
2024-03-05 11:30:35 +13:00
Zach Daniel
b3889d6f94 fix: properly cast atomic constraints for integer 2024-03-04 11:09:58 -05:00
Zach Daniel
7d8375308d fix: more fixes for atomic length validations 2024-03-04 11:08:02 -05:00
Zach Daniel
f1b523ee54 fix: fix atomic error for string length type validation 2024-03-04 11:01:46 -05:00
Zach Daniel
7f0e2d8037 improvement: rename get to read_one in Ash.Reactor 2024-03-02 16:51:00 -05:00
86d74ed789
feat(Ash.Reactor): Add a Reactor extension that makes working with resources easy. (#683)
* feat: Add `Ash.Reactor` with create support.

* improvement: Add `Ash.Reactor` update support.

* improvement: Add `Ash.Reactor` destroy support.

* improvement(Ash.Reactor): Support for transactional handling of notifications.

* improvement(Ash.Reactor): Add `read` and `get` steps.

* docs: Add the beginnings of a Reactor topic.

* improvement(Ash.Reactor): add support for generic actions.

* improvement: Add `undo` capability to `create` step.

* improvement: transaction and undo working.

* docs: Start documenting undo behaviour.

* chore: Update to Reactor 0.6.

* improvement: Automatically thread Ash tracers through Reactor.

* improvement(Ash.Reactor): Add undo to generic actions.

* docs: Improve reactor documentation.

* fix: Mimic copying `Ash.Notifier` seems to break the compiler for some reason.
2024-03-02 10:26:25 +13:00
Zach Daniel
75d975ea3a fix: properly match return type of Type.new in expr expansion 2024-03-01 15:44:32 -05:00
Zach Daniel
96113c20dc improvement: cast expression calculations if they don't do it 2024-03-01 13:05:49 -05:00
Zach Daniel
7d6ad64e0e fix: properly scope expanded calculations
improvement: aggregate sort replaces query sort
2024-02-29 15:02:20 -05:00
Zach Daniel
b98b39ec89 fix: properly scope expanded calculations 2024-02-29 14:40:59 -05:00
Zach Daniel
9a91937c88 fix: properly add aggregate authorization everywhere 2024-02-29 13:29:01 -05:00
Zach Daniel
650205a9bc fix: ensure calculation arguments are not ignored when parsing filters
fixes #917
2024-02-29 00:41:24 -05:00
Zach Daniel
582e983152 fix: properly authorize aggregates 2024-02-28 22:27:30 -05:00
Zach Daniel
e1c5130adb fix: bad reference in atomic validations 2024-02-27 12:57:36 -05:00
Tw
5ce0ed4d05
fix: prevent leakage of stale async_limiter's pid (#916)
the pid of async_limiter in the query's context will be invalid because we stop it
at the end of reading. So clear it up from query's context before returning back.

BTW, I found this issue according to the following crash:

```
[error] GenServer #PID<0.647.0> terminating
** (stop) exited in: GenServer.call(#PID<0.648.0>, {:get_and_update, #Function<0.21809672/1 in Ash.Actions.Read.AsyncLimiter.async_or_inline/3>}, 5000)
    ** (EXIT) no process: the process is not alive or there's no process currently associated with the given name, possibly because its application isn't started
    (elixir 1.16.0) lib/gen_server.ex:1114: GenServer.call/3
    (ash 2.19.3) lib/ash/actions/read/async_limiter.ex:26: Ash.Actions.Read.AsyncLimiter.async_or_inline/3
    (elixir 1.16.0) lib/enum.ex:1708: anonymous fn/3 in Enum.map/2
    (elixir 1.16.0) lib/enum.ex:4399: anonymous fn/3 in Enum.map/2
    (elixir 1.16.0) lib/stream.ex:1816: anonymous fn/3 in Enumerable.Stream.reduce/3
    (elixir 1.16.0) lib/enum.ex:4842: Enumerable.List.reduce/3
    (elixir 1.16.0) lib/stream.ex:1828: Enumerable.Stream.do_each/4
    (elixir 1.16.0) lib/enum.ex:4399: Enum.map/2
    (ash 2.19.3) lib/ash/actions/read/relationships.ex:39: Ash.Actions.Read.Relationships.fetch_related_records/2
    (ash 2.19.3) lib/ash/actions/read/relationships.ex:23: Ash.Actions.Read.Relationships.load/3
    (ash 2.19.3) lib/ash/actions/read/read.ex:237: Ash.Actions.Read.do_run/3
    (ash 2.19.3) lib/ash/actions/read/read.ex:49: anonymous fn/3 in Ash.Actions.Read.run/3
    (ash 2.19.3) lib/ash/actions/read/read.ex:48: Ash.Actions.Read.run/3
    (ash 2.19.3) lib/ash/api/api.ex:2301: Ash.Api.page/3
    (ash 2.19.3) lib/ash/api/api.ex:2258: Ash.Api.page!/3
...
```

Signed-off-by: Tw <tw19881113@gmail.com>
2024-02-27 09:03:46 -05:00
Zach Daniel
3b89f8fbaa chore: fix dialyzer 2024-02-26 13:04:43 -05:00
Zach Daniel
1a99098f52 fix: ensure that policies are applied to aggregates referenced in calculations 2024-02-26 13:00:12 -05:00
Zach Daniel
e238804b46 fix: ensure records are returned from bulk actions in atomic upgrades 2024-02-25 21:06:10 -05:00
Zach Daniel
93ae8f17a5 fix: handle small logic error in notification sending for bulk actions 2024-02-25 16:13:41 -05:00
Zach Daniel
0e1fe24f46 fix: ensure actor context is set in filter 2024-02-25 08:24:19 -05:00
Zach Daniel
eab194fac5 fix: properly handle limit/offset for aggregates 2024-02-24 20:21:13 -05:00
Zach Daniel
adbac1b7da improvement: don't duplicate base filter in aggregates 2024-02-24 19:24:51 -05:00
Zach Daniel
993355f938 fix: don't use Aggregate.new for builtin aggregates 2024-02-24 19:17:35 -05:00
Zach Daniel
4d39ab8a80 fix: merge root query into aggregate queries, don't apply both 2024-02-24 18:10:26 -05:00
Zach Daniel
240e809437 fix: return proper pattern from select builtin change 2024-02-24 09:27:12 -05:00
Zach Daniel
80be80c151 fix: properly catch errors in atomic changeset casting 2024-02-23 19:16:31 -05:00
Zach Daniel
81fee97306 fix: use Ash.Changeset.set_context on changesets 2024-02-22 17:39:52 -05:00
Zach Daniel
825a3a945d fix: properly fail early on missing actor in policies
fix: handle `:continue` case in authorizer
fix: validations run regardless of if the relevant fields are changing
2024-02-22 10:53:32 -05:00
Zach Daniel
c08aa2507b chore: detect a resource given as a module 2024-02-22 08:11:49 -05:00
Zach Daniel
701f9b4cc6 fix: honor soft destroys for atomic bulk destroys 2024-02-22 08:02:01 -05:00
Zach Daniel
7b5a3267be chore: walk back change to set context on query 2024-02-21 08:17:24 -05:00
Zach Daniel
c36f3ba2ab fix: properly set context on query and changeset 2024-02-21 08:16:23 -05:00
Zach Daniel
3027afe5fc fix: pass correct options into Api.stream! for bulk_destroy 2024-02-21 08:09:20 -05:00
Zach Daniel
9619c2fbda Revert "fix: check attributes after arguments for present?"
This reverts commit 85f8af2f8b.
2024-02-19 17:58:53 -05:00
Zach Daniel
85f8af2f8b fix: check attributes after arguments for present? 2024-02-19 17:53:17 -05:00
Dmitry Maganov
08008102d0
fix: correct for_read calls in update and destroy actions (#907) 2024-02-19 09:52:21 -05:00
Zach Daniel
944f69b16e fix: properly annotate run_flow's recursive DSL tag
docs: update spark & docs
2024-02-16 21:25:18 -05:00
Zach Daniel
3e82d05edb fix: ensure that to-many relationships are loaded as lists 2024-02-16 20:17:59 -05:00
Zach Daniel
a06912f9b0 fix: honor not_found_error? in read_one
improvement: pass `tenant` to context in custom changes
improvement: `Ash.context_to_opts` now checks for a `tenant`
2024-02-16 17:56:23 -05:00
Zach Daniel
31714e1979 docs: fix docs for manual reads
fixes #903
2024-02-16 16:10:07 -05:00
Dmitry Maganov
b1b6ee96df
fix: remove unneeded code for calculations in a filter (#904) 2024-02-16 16:05:40 -05:00
Zach Daniel
3924ddfa45 improvement: handle stale update/destroys 2024-02-15 23:48:45 -05:00
Zach Daniel
610b785fd8 fix: restore not_found_error? behavior in Ash.Flow 2024-02-15 23:34:38 -05:00
Zach Daniel
159e8ff377 fix: handle cases where no primary keys are present better 2024-02-15 21:24:21 -05:00
Zach Daniel
f324e7385b chore: use .has_expression/2 in one more place 2024-02-15 16:54:14 -05:00
Zach Daniel
52e0fb8ba6 fix: ensure that filters are parsed from policy authorizer ahead of time 2024-02-15 10:50:10 -05:00
Zach Daniel
36274a7369 fix: check if query is a query before calling .__validated_for_action__
fixes #896
2024-02-15 09:02:57 -05:00
Zach Daniel
5ecfe71b81 fix: properly authorize actions in flow
this was broken in the recent refactor
2024-02-15 09:00:15 -05:00
Zach Daniel
dcbccec7c3 improvement: support authorize_query_with for bulk updates/destroys
improvement: support `authorize_changeset_with` for bulk updates/destroys
2024-02-14 17:50:05 -05:00
Dmitry Maganov
76a0b0f7f3
chore: format some with clauses to be on a single line (#893) 2024-02-14 15:44:37 -05:00
Dmitry Maganov
ae58f0c118
fix: handle warning about incompatible types (#892) 2024-02-14 15:13:02 -05:00
Zach Daniel
1ee5c9a50a fix: properly refer to attributes in changing_attributes/1 2024-02-14 15:01:21 -05:00
Dmitry Maganov
b4dc2eae71
fix: remove unneeded code for calculations in a filter (#891) 2024-02-14 14:35:12 -05:00
Zach Daniel
1171e9fb03 fix: evaluate templates to unknown at ref 2024-02-14 14:33:45 -05:00
Zach Daniel
f23f0a29fe fix: handle atomic_ref templates and changing_attributes/1 2024-02-14 13:55:19 -05:00
Zach Daniel
e9d2d8c575 chore: add some defensive coding for policies 2024-02-14 11:03:38 -05:00
Barnabas Jovanovics
d7c8cdd1eb
fix: replace refs for relationships use correct action (#888)
---------

Co-authored-by: Zach Daniel <zach@zachdaniel.dev>
2024-02-14 10:58:54 -05:00
Barnabas Jovanovics
576e37d4a5
fix: handle not found case in destroy (#890)
* fix: handle not found case in destroy

* fix: add case where authoriztion did not change query
2024-02-14 10:24:43 -05:00
Zach Daniel
fd53c103f9 fix: properly map sort input and non-input refs in keyset filters 2024-02-14 10:07:13 -05:00
Rebecca Le
407eee5785
docs: Correct example used for manual actions (#886)
In my testing, arguments to a manual action are part of the `arguments` in the input to the `run` function - which is the action struct itself.
2024-02-14 09:35:34 -05:00
Zach Daniel
2c79bc9cba fix: properly match on invalid query from before_action 2024-02-13 21:12:31 -05:00
Zach Daniel
67eb3628a5 fix: ensure proper context set on atomic upgrade 2024-02-13 15:52:01 -05:00
Zach Daniel
ea12375b4f chore: fix changing_attributes filter check logic 2024-02-13 15:13:51 -05:00
Zach Daniel
71cf111d4d improvement: don't authorize query on synthesized atomic update/destroys 2024-02-13 15:04:08 -05:00
Zach Daniel
0eb2723930 fix: fix nil ++ list error in bulk destroy 2024-02-13 14:56:41 -05:00
Zach Daniel
3d30fd848f fix: ensure we retain the sort order of embedded resources
fixes #883
2024-02-13 13:55:07 -05:00
Zach Daniel
fe0058ce98 fix: retain sort on inputs on casting embedded inputs
improvement: show field name in NotLoaded inspect
2024-02-12 20:46:15 -05:00
Zach Daniel
ac07bbf779 chore: fix typo 2024-02-12 20:25:53 -05:00
Zach Daniel
3af2580241 fix: properly get rewrites for embedded types 2024-02-12 20:23:14 -05:00
Zach Daniel
e619f37b4b chore: fix typo
closes #884
2024-02-12 19:34:20 -05:00
Zach Daniel
8910e038a5 improvement: implement requires_original_data? for Ash.Notifier.PubSub 2024-02-12 14:03:16 -05:00
Zach Daniel
80fc8b0896 chore: ensure api context is set on calculations 2024-02-12 10:06:24 -05:00
Zach Daniel
6456ed0951 chore: fix typo for bulk updates
chore: destroy -> bulk destroy just like updates
2024-02-12 09:50:22 -05:00
Dmitry Kulakov
5846b70315 feat: allow using custom delimiters for pubsub topics 2024-02-11 16:45:05 -04:00
Zach Daniel
a25aa99297 fix: ensure after_transaction hooks are always run 2024-02-11 11:20:08 -05:00
Zach Daniel
e5cee02cc6 chore: hydrate atomic refs properly on bulk update 2024-02-10 18:56:09 -05:00
Zach Daniel
70ae75b203 fix: handle records in Ash.destroy and Ash.update
fixes #879
2024-02-10 18:39:03 -05:00
Zach Daniel
4eb8ba2130 fix: pre-template change/validation option in bulk update/destroy
fix: fix query match error in bulk destroy/update
2024-02-10 18:29:24 -05:00
Zach Daniel
0229a894ab chore: fix typo from last PR 2024-02-09 17:29:37 -05:00
Zach Daniel
2b7a99905c improvement: support policies requiring original data 2024-02-09 17:19:45 -05:00
Zach Daniel
0893518f39 improvement: change atomicity requirements when datalayers don't support it
test: make tests pass on 3.0
2024-02-08 15:17:32 -05:00
Barnabas Jovanovics
171a0f0dad
feat: support functions in parse predicates (#874) 2024-02-08 11:24:52 -05:00
Dmitry Maganov
5eccdcd7f8
improvement: add on_match: :update_join to manage_relationship (#875) 2024-02-08 11:18:32 -05:00
Zach Daniel
5c26975eb2 fix: don't consider primary key matches with nil values
fixes #876
2024-02-08 11:13:09 -05:00
Zach Daniel
2074cbe997 improvement: don't call telemetry when compiling 2024-02-08 10:48:22 -05:00
Dmitry Maganov
d47eb086a2
fix: continue cleanup in ManagedRelationshipHelpers (#873) 2024-02-07 14:56:04 -05:00
Zach Daniel
2cd6360379 fix: fix pattern match error on certain policy conditions
improvement: various policy behavior cleanups
2024-02-06 19:30:18 -05:00
Dmitry Maganov
b428fb8995
chore: continue update validate_related_resource_inclusion.ex (#871) 2024-02-06 19:29:20 -05:00
Bryan Bryce
974acdf5b9
chore: Update validate_related_resource_inclusion.ex (#870)
The error message had an error because it referred to a option name that doesn't exist
2024-02-06 12:46:34 -05:00
Zach Daniel
5b10d6f292 fix: use primary key for lateral join source in ets 2024-02-06 11:55:05 -05:00
Dmitry Maganov
0cc0e142a6
fix: set right accessing_from name in many to many managed create (#868) 2024-02-06 09:48:49 -05:00
Robert Graff
e331e24c7b
Pass the tenant to full_atomic_changeset call (#867) 2024-02-03 20:33:43 -05:00
Dmitry Maganov
e1efea81bf
improvement: add join_keys option to manage_relationship (#866) 2024-02-03 15:02:25 -05:00
Zach Daniel
89a8f59e18 fix: set_tenant on fully atomic changesets 2024-02-03 14:56:13 -05:00
Zach Daniel
dd3f4766ec fix: handle api.can case in authorize_changeset
fix: properly bypass authorization in atomic update switch-over
2024-02-02 04:25:07 -05:00
Zach Daniel
c5ef834b5b improvement: don't run check in cases that require strict checks 2024-02-01 17:09:34 -05:00
Zach Daniel
94ffeaa057 fix: properly set action_type on atomic changesets 2024-02-01 14:32:01 -05:00
Zach Daniel
1cd73e2ec7 chore: also properly process opts for destroy atomic changesets 2024-02-01 14:29:26 -05:00
Zach Daniel
618ae4459a chore: properly process opts for atomic changesets 2024-02-01 14:29:01 -05:00
Zach Daniel
3baa9c5951 fix: extract relationship filters from pre-authorization query 2024-02-01 13:06:43 -05:00
Zach Daniel
57654d3df4 improvement: atomic_batches behavior for bulk destroys
improvement: allow strategy selection for bulk actions
2024-02-01 13:00:52 -05:00
Zach Daniel
e707758c93 fix: retain metadata on updates, atomic and otherwise
fix: properly load expression -> runtime calculation deps
2024-02-01 10:21:22 -05:00
Barnabas Jovanovics
60c10e9af4
feat: support returning streams from mod calc (#864) 2024-02-01 09:06:51 -05:00
Zach Daniel
3b3e3a06f2 fix: ignore input? when considering refs equal in filter subset checking 2024-01-31 15:57:47 -05:00
Zach Daniel
b3977817bb chore: add sobelow skip statement 2024-01-31 15:47:38 -05:00
Dmitry Maganov
51990bd784
fix: change names of code interface methods for calculations (#863) 2024-01-31 15:42:22 -05:00
Zach Daniel
fc3cbc4e2c improvement: change nested field filtering to be done with at_path 2024-01-31 15:41:10 -05:00
Zach Daniel
9efe456e16 fix: properly mark manuall created input refs with input?: true 2024-01-31 12:12:06 -05:00
Zach Daniel
f7716c5222 improvement: support referencing non-array embeds in input filters 2024-01-31 12:11:36 -05:00
Zach Daniel
107e6c53f5 improvement: bulk update in batches if not given a query 2024-01-31 10:26:08 -05:00
Zach Daniel
9749b75e3b fix: clean vars should handle map vars 2024-01-31 09:46:11 -05:00
Zach Daniel
f8ef4529c1 fix: properly merge union loads 2024-01-31 08:29:02 -05:00
Zach Daniel
7811dfaa11 improvement: update action should respect load and select 2024-01-30 20:25:49 -05:00
Zach Daniel
6602ae63e6 fix: support expression calculations referencing runtime calculations 2024-01-30 16:34:17 -05:00
Zach Daniel
49ac5a23dd fix: set default access type properly 2024-01-30 13:37:34 -05:00
Zach Daniel
15ab382ee0 chore: remove IO.inspect 2024-01-30 13:17:12 -05:00
Zach Daniel
9f748b5c55 test: update authorizer tests
fix: properly handle the case where all valid scenarios are pruned
2024-01-30 13:11:47 -05:00
Zach Daniel
9e02b0d0c7 improvement: introduce require_atomic?, which defaults to false in 2.0, true in 3.0
fix: properly prevent the atomic handling of manual update actions
improvement: better support around the mixing of atomic and non atomic changes/validations
2024-01-30 12:32:41 -05:00
Zach Daniel
8e82d9588f chore: better handling of atomic validations 2024-01-29 17:55:56 -05:00
Zach Daniel
f4339be426 chore: fix stream option taking (again) 2024-01-29 15:56:48 -05:00
Zach Daniel
248f99ebcf fix: fix passing extra opts to stream
fix: properly check if data layer can update_query
2024-01-29 15:43:21 -05:00
Zach Daniel
210d8d03c7 improvement: more atomic implementations
chore: wrap up load/select support in atomic updates
2024-01-29 15:17:52 -05:00
Zach Daniel
c02bced508 improvement: support loading and selecting in bulk operations 2024-01-29 14:29:50 -05:00
Zach Daniel
cf009476b2 chore: better non-atomic message on updates 2024-01-29 11:15:56 -05:00
Zach Daniel
b01168b597 improvement: use atomic create actions where possible 2024-01-29 10:37:10 -05:00
Tun Cham Roeun
c075d18f33
fix: Ash.Type.Float to support min/max constraints(#856) 2024-01-28 09:11:10 -05:00
Zach Daniel
2549c20105 chore: format 2024-01-27 10:33:17 -05:00
Zach Daniel
c9c2408401 fix: add calculations before distinct is applied in data layer query 2024-01-27 10:20:23 -05:00
Zach Daniel
f1952a5d8b chore: format 2024-01-27 09:55:11 -05:00
Zach Daniel
77c01123f0 fix: properly set index on embedded type array errors
fixes #854
2024-01-27 09:55:04 -05:00
Dmitry Maganov
c40f762eee
fix: use correct option for relationship in atomic relate_actor (#855)
---------

Co-authored-by: Zach Daniel <zachary.s.daniel@gmail.com>
2024-01-27 09:53:03 -05:00
Barnabas Jovanovics
fb3e7050a1
fix: only count resources the actor is allowed to see (#853)
* fix: only count resources the actor is allowed to see

* remove specc added by vscode
2024-01-26 13:33:03 -05:00
Zach Daniel
50b186bef9 chore: fix typespec 2024-01-25 14:22:41 -05:00
Zach Daniel
2888fea33b chore: format 2024-01-25 13:55:09 -05:00
Zach Daniel
b494c76a92 fix: deselect known forbidden fields *after* query authorization is complete 2024-01-25 11:19:52 -05:00
Zach Daniel
a68a628839 improvement: always define merge_load/4 2024-01-25 10:45:08 -05:00
Dmitry Maganov
c8b1eaa8f0
fix: soft? in destroy action options is a boolean, not an atom (#851) 2024-01-24 14:52:31 -05:00
Barnabas Jovanovics
cfec396f99
fix: load fails because of empty list instead of query (#847) 2024-01-24 11:18:51 -05:00
Zach Daniel
66295c4efb improvement: derive source_attribute_on_join_resource for many to many 2024-01-23 23:43:02 -05:00
Zach Daniel
13bff0a9cd fix: don't attempt to derive destination_attribute_on_join_resource 2024-01-23 23:38:52 -05:00
Zach Daniel
1f96993e1b chore: fix typo accessing action 2024-01-23 23:22:39 -05:00
Zach Daniel
fe3215cc07 improvement: atomic implementation for relate_actor
improvement: include a message along with the non-atomic signifier
2024-01-23 22:41:15 -05:00
Zach Daniel
3e87e6220f improvement: support transactions on bulk destroys 2024-01-23 22:10:14 -05:00
Zach Daniel
bf81f8c8a5 chore: format 2024-01-23 21:48:38 -05:00
Zach Daniel
1807523ba2 improvement: support transactions in bulk updates 2024-01-23 21:36:17 -05:00
Zach Daniel
878011bd3e improvement: count_nils/1 function
improvement: `present/absent` atomic implementation
improvement: add `atomic_ref/1` template helper
2024-01-23 19:13:14 -05:00
Jinkyou Son
2368fe82b6
improvement: Change typespec of tenant from String.t() to term() (#845) 2024-01-23 13:16:04 -05:00
Dmitry Maganov
91c34c3939
fix: join_relationship in many to many can make through optional (#846) 2024-01-23 13:15:51 -05:00
Barnabas Jovanovics
c60c5111ae
fix: make sure query has action (#844) 2024-01-23 10:42:34 -05:00
Barnabas Jovanovics
f25d7edc2f
fix: pass in actor to api.can call (#843)
* fix: pass in actor to api.can call

* only call api.can if authorize? is true
2024-01-23 09:22:19 -05:00
Nduati Kuria
d229ade9fc
Add :decimal aggregate support to DataLayer.Ets [WIP] (#841)
* Add `:decimal` aggregate support to `DataLayer.Ets`

* Add regression test

* Fix dialyzer

* Handle nils in `:avg` calculation

* Refactor nested ifs

* Refactor test
2024-01-22 16:03:34 -05:00
Barnabas Jovanovics
4ffd3cfa11
fix: do not check primary key fields in filter (#839) 2024-01-22 11:31:20 -05:00
Barnabas Jovanovics
20880691fb
fix: add page opts to context again (#838) 2024-01-22 11:29:13 -05:00
Zach Daniel
7b40917516 fix: return errors with query from read action
closes #837
2024-01-21 13:55:01 -05:00
Zach Daniel
ecf4893b64 fix: properly set defaults on upsert in mnesia 2024-01-21 12:06:16 -05:00
Zach Daniel
45be2a34eb chore: format 2024-01-21 01:27:08 -05:00
Zach Daniel
ce4c3cb2c1 fix: don't load through attributes twice, but also don't miss any 2024-01-21 01:26:22 -05:00
Zach Daniel
d013818c0a improvement: handle pkey-less resources when attaching fields
improvement: set lazy defaults when applying changeset attributes
2024-01-21 00:45:35 -05:00
Zach Daniel
a08582ed0f chore: remove IO.inspect 2024-01-20 21:50:14 -05:00
Zach Daniel
5af5702efb improvement: add prepend?: true option to add_change 2024-01-20 21:48:57 -05:00
Zach Daniel
fc522ff6c5 fix: handle errors properly from invalid loads 2024-01-20 19:39:35 -05:00
Zach Daniel
892cd7c845 fix: handle data layer calculations for missing records 2024-01-20 18:52:36 -05:00
Zach Daniel
7aaea7bd55 fix: only load through calculations in the correct order 2024-01-20 13:53:35 -05:00
Zach Daniel
aa227b8a6a chore: format 2024-01-19 21:17:22 -05:00
Zach Daniel
e646be5393 fix: properly detect cyclic dependencies in calculation runner
fix: properly annotate in-query calculations as complete for dependency calculation
2024-01-19 21:10:48 -05:00
Zach Daniel
e49f42a195 fix: fix present? and load_through bugs 2024-01-19 17:26:13 -05:00
Zach Daniel
21de0fe882 chore: fix typo 2024-01-19 16:27:36 -05:00
Zach Daniel
b654c0cd5c chore: remove IO.inspect 2024-01-19 16:26:51 -05:00
Zach Daniel
70918d42c5 chore: remove unused variables/aliases 2024-01-19 15:51:18 -05:00
Zach Daniel
1140771f74 fix: don't require pagination in incorrect cases 2024-01-19 15:50:35 -05:00
Zach Daniel
e5d78ae074 fix: get tests passing for bulk creates again 2024-01-19 10:49:26 -05:00
Zach Daniel
3db822d775 improvement: optimize embedded resource creation 2024-01-19 09:58:54 -05:00
Zach Daniel
c48cb08026
improvement: rewrite read actions to not use Ash.Engine (#836) 2024-01-19 00:05:42 -05:00
Zach Daniel
fc583b1d1e docs: remove old docs 2024-01-18 09:20:16 -05:00
Zach Daniel
4c96fdd40f fix: don't ignore stream batch size 2024-01-13 21:48:11 -05:00
Zach Daniel
6f56f3c4db chore: use ash_query as base count aggregate query 2024-01-12 14:18:01 -05:00
Zach Daniel
4200b5df50 chore: fix dialyzer/credo 2024-01-12 14:14:08 -05:00
Zach Daniel
072486bebd docs: revamp hexdocs
fix: use current read action for counting
2024-01-12 14:07:35 -05:00
Zach Daniel
0ca7393417 chore: undo typo 2024-01-12 08:40:34 -05:00
Zach Daniel
76cfe55a2a improvement: add all_tenants? option to identities 2024-01-12 08:36:06 -05:00
Zach Daniel
59e50f8dfa fix: set tenant attribute in bulk create
fixes: #830
2024-01-12 08:19:55 -05:00
Zach Daniel
db7e42713c docs: add a docstring for expr_sort 2024-01-12 07:49:58 -05:00
Jechol Lee
250c4ab8c8
improvement: support Ash.CiString in string_join (#832) 2024-01-12 00:21:30 -05:00
Jechol Lee
6b0e9fe1b3
improvement: Add code interface support in Info and Builder. (#828) 2024-01-12 00:19:51 -05:00
Zach Daniel
bbd866956d improvement: authorize each related join using join_filters 2024-01-12 00:17:37 -05:00
Rebecca Le
0a4a7c057d
feat: Allow :self as an option when requesting a relative page from a given page (#833) 2024-01-12 00:16:41 -05:00
Zach Daniel
3fac46e65b chore: fix shadowed variable 2024-01-11 17:08:05 -05:00
Zach Daniel
df94bfe0b6 chore: dialyzer 2024-01-11 16:27:43 -05:00
Zach Daniel
55219a0dfb chore: can't enumerate :unknown 2024-01-11 16:19:36 -05:00
Zach Daniel
f564e47fb8 fix: fix runtime filter parsing & make last arg optional 2024-01-11 15:45:47 -05:00
Zach Daniel
2e2d2c404c fix: undo incorrect behaviour in runtime evaluation 2024-01-11 15:35:49 -05:00
Zach Daniel
6b74072ada chore: formatter, cheat sheets, credo 2024-01-11 15:05:25 -05:00
Zach Daniel
35573a6f4e improvement: support join_filters in aggregates 2024-01-11 14:57:22 -05:00
Jechol Lee
5eaec735f8
fix: fix typespecs and cleanup Ash.Resource.Builder (#827) 2024-01-11 11:44:04 -05:00
Zach Daniel
5b82ce293f fix: authorize aggregate references in calculations 2024-01-10 07:11:02 -05:00
Zach Daniel
63c15bbfe9 improvement: error on using relate_actor with :many cardinality relationships 2024-01-10 05:56:22 -05:00
Robert Graff
fc9132e75b
docs: metadata docs improvement (#823) 2024-01-09 19:27:16 -05:00
Alan Heywood
dbb4a38ea3
fix: only put keywords to be interpolated in message in error vars (#821)
* fix: only put keywords to be interpolated in message in error vars
---------

Co-authored-by: Zach Daniel <zachary.s.daniel@gmail.com>
2024-01-08 18:08:17 -05:00
Zach Daniel
d617f42daf improvement: append new entities in Ash.Resource.Builder 2024-01-08 16:19:36 -05:00
Zach Daniel
c1fd67f22c fix: ignore empty relationship paths when authorizing relationships 2024-01-08 15:47:48 -05:00
Zach Daniel
4652a8237e fix: properly build query from opts in aggregates 2024-01-08 15:40:27 -05:00
Zach Daniel
a12131cf70 improvement: simplify aggregate loading, remove Ash.Engine from it
improvement: add atomic implementation for builtin `increment` change
improvement: simplify related path authorization, use same tool as aggregates now use
2024-01-08 15:31:09 -05:00
Robert Graff
b35f30fb6f
docs: Fix typo in page_requires_pagination.ex (#819) 2024-01-05 19:15:52 -05:00
Zach Daniel
80d117ed1e chore: remove IO.inspect 2024-01-05 12:41:58 -05:00
Zach Daniel
16818f1f14 fix: don't consider ash field signals as present 2024-01-05 12:30:59 -05:00
Zach Daniel
c4fd06aea0 improvement: refactor filter requests to not use Ash.Engine 2024-01-04 12:46:38 -05:00
Zach Daniel
af9c78c2f6 chore: fix typo 2024-01-04 01:01:44 -05:00
Zach Daniel
fadecf3ee9 improvement: atomic validation implementations for most validations
improvement: support type operator overloading
2024-01-04 00:52:46 -05:00
Zach Daniel
6061a2a16a improvement: add some atomic implementations 2024-01-03 16:48:15 -05:00
Zach Daniel
746fc5df53 fix: add required check for stream pagination 2024-01-01 01:22:12 -05:00
Zach Daniel
fe2156a9ac imorovement: support bulk action callbacks in the data layer 2023-12-31 00:49:22 -05:00
Zach Daniel
44761e7e3f improvement: support :no_rollback and return_query/2 callback 2023-12-29 21:43:15 -05:00
Zach Daniel
b600b23803 improvement: add a return_query/2 callback for data layers 2023-12-29 17:33:23 -05:00
Zach Daniel
4dfa140ec9 improvement: support {:error, :no_rollback, error} from data layer callbacks 2023-12-29 17:23:13 -05:00
Zach Daniel
c3e192c6d8 improvement: always update the join relationship 2023-12-28 15:04:00 -05:00
Zach Daniel
40aa17eab8 fix: ensure __source__ is set on nested embedded attributes 2023-12-28 14:47:40 -05:00
Zach Daniel
259b48e5ea improvement: use new api option in Ash.Query.for_read/4 2023-12-27 18:15:20 -05:00
Zach Daniel
4ee80297d7 improvement: support using the new api option in actions 2023-12-27 18:14:29 -05:00
Zach Daniel
e90842f141 improvement: accept api option in Ash.Changeset.for_* functions 2023-12-27 17:53:23 -05:00
Zach Daniel
3e296a4bba Revert "chore: comment out test for now
This reverts commit cc21661559.
2023-12-27 17:47:50 -05:00
Zach Daniel
034642ffda improvement: update Ash interface for working with new style resources 2023-12-27 17:35:30 -05:00
Zach Daniel
cc21661559 chore: comment out test for now 2023-12-27 17:28:52 -05:00
Zach Daniel
af3d2b321d chore: use unused variable 2023-12-27 16:38:41 -05:00
Zach Daniel
26160e446b chore: require name for ash.codegen 2023-12-27 10:12:19 -05:00
Zach Daniel
19d18c5fcc improvement: better formatting of nested expressions
improvement: helpful errors when misusing `.` in expressions
2023-12-22 22:22:59 -05:00
Zach Daniel
0f8bb664ab fix: properly move maps & lists to expression paths
fix: set tenant when running authorization queries

closes: #812
2023-12-22 21:09:00 -05:00
Zach Daniel
d390d65146 improvement: simplify used aggregate detection
improvement: add `lazy/1` to expressions
docs: add expression docs
2023-12-22 19:06:13 -05:00
Zach Daniel
3a1923fdeb improvement: support providing an input key in predicate maps 2023-12-21 17:17:43 -05:00
Zach Daniel
eb05e9be63 improvement: support streaming without keyset pagination
use the new `allow_stream_with` and `stream_with` options to control
what strategy may be used to stream query results.
2023-12-21 08:35:49 -05:00
Zach Daniel
0932cf32a7 improvement: add callbacks for bulk actions on manual actions 2023-12-20 21:23:13 -05:00
Zach Daniel
ed887413d7 improvement: base case iterative bulk destroy implemented 2023-12-20 21:08:40 -05:00
Zach Daniel
8c17434803 improvement: add iterative, streaming implementation for bulk updates 2023-12-20 17:33:43 -05:00
Rebecca Le
ba6eb773b8
docs: Fill out shortdoc for generate_policy_charts mix task (#808)
This is the one-liner that is shown when running `mix help` to list tasks
2023-12-19 22:51:13 -05:00
Zach Daniel
ff1a590f46 fix: empty milliseconds for utc datetime must have precision 6
fix: ensure actor & authorize? contexts are set even if not provided
2023-12-18 20:14:36 -05:00
Zach Daniel
867c786388 chore: remove unused variables 2023-12-18 16:02:39 -05:00
Zach Daniel
e3605bd80f improvement: detect impending manage_relationship calls when checking attribute presence 2023-12-18 12:47:49 -05:00
Zach Daniel
3ee3279d2f fix: ignore load/limit/offset in aggregate queries, instead of raising
closes #806
2023-12-18 08:28:52 -05:00
Zach Daniel
5f3556e27f fix: properly set changed? for all changesets 2023-12-16 19:22:52 -05:00
Zach Daniel
ca792548ba chore: properly pin values in attribute_equals atomic validation 2023-12-16 13:46:12 -05:00
Zach Daniel
e7513e6e32 improvement: add stacktrace context to errors better 2023-12-16 13:36:49 -05:00
Zach Daniel
575fe52b06 chore: fix integer atomic update casting 2023-12-16 10:41:21 -05:00
Zach Daniel
2233a33523 improvement: support tenancy on manual actions
docs: update cheat shets
fix: honor tenant option on aggregates

closes #805
2023-12-16 10:33:10 -05:00
Zach Daniel
3be83d6ca4 improvement: lay the groundwork for fully atomic actions 2023-12-16 10:14:02 -05:00
Zach Daniel
1acca3d8e1 chore: return proper authorization errors from actions on failure 2023-12-15 20:12:26 -05:00
Zach Daniel
8e5f628286 fix: pass proper context into manual actions, remove unnecessary changeset code 2023-12-15 18:43:29 -05:00
Zach Daniel
e22c6c7927 fix: ensure actions always raise an error class 2023-12-15 15:33:10 -05:00
Zach Daniel
ad22eeb7e9 improvement: rewrite creates to not use Ash.Engine 2023-12-15 15:10:01 -05:00
Zach Daniel
4cfdb0d635 chore: remove commented out code 2023-12-15 10:15:49 -05:00
Zach Daniel
9103781379 improvement: remove Ash.Engine from update/destroy actions 2023-12-15 10:14:40 -05:00
Zach Daniel
d6ff670e0a chore: fix typespec for Ash.Query.Function 2023-12-15 08:46:18 -05:00
Zach Daniel
5b39ff8e04 improvement: add Ash.Error.from_json/2
improvement: accept expressions in `Ash.Query.calculate`
2023-12-14 16:52:34 -05:00
Thales Grilo
9d2da58fb2
improvement: Adds %Ash.NotSelected{} to ash 3 (!634) (#804)
*  create Ash.NotSelected, add test

*  add ash_three test

* 👌 fix formatting

* 👌 add missing field value

---------

Co-authored-by: thales <thales@uplearn.co.uk>
2023-12-14 16:14:15 -05:00
Zach Daniel
cdb5db9c07 fix: properly unnested union values passed into Ash.Type.Union.prepare_change_array 2023-12-14 09:24:22 -05:00
Zach Daniel
0763335650 docs: update error.ex docs 2023-12-14 09:06:07 -05:00
Zach Daniel
d09c694132 fix: thread context through when setting source constraint on embeds 2023-12-13 17:11:52 -05:00
Zach Daniel
d118d90d51 chore: fix dialyzer issue and corresponding bug from last commit 2023-12-13 15:29:12 -05:00
Zach Daniel
7298a4b51b improvement: honor field policies in sort expressions 2023-12-13 15:08:39 -05:00
Zach Daniel
3b20fba309 fix: don't create invalid datetimes when scrubbing microseconds 2023-12-12 20:35:59 -05:00
Zach Daniel
352e27a153 fix: prepare change with nil old value on union type change 2023-12-12 18:10:34 -05:00
Zach Daniel
839937bf6e fix: properly prepare union value changes when old & new are union structs 2023-12-12 18:07:40 -05:00
Zach Daniel
955ba4987b chore: credo/tasks 2023-12-12 08:51:18 -05:00
Zach Daniel
f790f3a529 improvement: additional atomic callbacks
fix: fix `dump_to_embedded_array`
2023-12-12 08:45:38 -05:00
Zach Daniel
a7c41b2bc8 improvement: add warn_on_transaction_hooks?: false config 2023-12-11 16:27:46 -05:00
Zach Daniel
9bc6370d7d improvement: accept an action input in Ash.Error.to_ash_error/3 2023-12-11 11:43:03 -05:00
Zach Daniel
3800c360ad chore: update typespecs 2023-12-11 08:09:55 -05:00
Zach Daniel
852f27dfb6 improvement: include tenant in change context 2023-12-11 08:08:23 -05:00
Zach Daniel
c38cba51b0 fix: test failures and credo issue 2023-12-10 13:13:06 -05:00
Zach Daniel
22ba69db70 fix: add back in api level verifiers
I have no idea how or why these were removed, but it shouldn't have happened
2023-12-10 12:59:32 -05:00
Zach Daniel
e8da3bfd5c improvement: support nil values in struct type callbacks 2023-12-07 23:28:44 -05:00
Zach Daniel
8ce6e065ce fix: don't apply default limit unless pagination is required 2023-12-06 21:37:43 -05:00
Zach Daniel
618b706e48 fix: properly handle union changes for lists of embeds
at the moment, this only works properly for tagged maps
2023-12-06 13:02:44 -05:00
Zach Daniel
c7e6133317 improvement: support embed_nil_values? for trimming down stored embeds 2023-12-06 10:29:39 -05:00
Zach Daniel
e7d4f29598 fix: honor default_limit option in pagination 2023-12-05 22:59:48 -05:00
Zach Daniel
fa311a936a chore: restore another removed callback 2023-12-05 19:25:35 -05:00
Zach Daniel
9551010adf chore: restore removed predicate 2023-12-05 19:22:51 -05:00
Zach Daniel
2c9bfb187a chore: add comment 2023-12-05 19:15:21 -05:00
Zach Daniel
4641becb9e improvement: use loaded calculation values in expressions 2023-12-05 19:13:16 -05:00
Zach Daniel
095e6c9237 fix: add back in builtin_predicate_operators/0 2023-12-05 01:38:49 -05:00
Jechol Lee
86e171a0c1
test: various test improvements (#795) 2023-12-05 01:34:21 -05:00
Zach Daniel
08a72acc6b fix: various runtime expression evaluation fixes
the issue is that the expression parser didn't support the fact
that some operators accept `nil` values and other operators do not.
2023-12-03 13:43:35 -05:00
Igor Barakaiev
0ae14bdf71
docs: Clarify how to use Enums in attributes (#790) 2023-12-02 22:34:23 -05:00
mrdotb
e9afdcf39f
docs: update example Flow Step transaction (#787) 2023-11-30 10:16:18 -05:00
Zach Daniel
9c0a66b154 fix: honor read action for Api.get calls. 2023-11-29 20:16:04 -05:00
Zach Daniel
92ff66211e fix: various fixes to calculation expansion and execution 2023-11-29 20:09:34 -05:00
Zach Daniel
198b290b10 chore: update docs showing map values for composite types 2023-11-29 10:23:10 -05:00
Zach Daniel
51b02c6459 docs: add docs for composite types 2023-11-29 10:09:12 -05:00
Zach Daniel
a74bba60e0 chore: credo 2023-11-29 09:47:46 -05:00
Zach Daniel
e1193098c8 fix: don't eager evaluate composite type construction 2023-11-29 09:34:26 -05:00
Zach Daniel
3bc0d975a6 chore: fix call to compile_env! 2023-11-28 13:58:11 -05:00
Zach Daniel
27318c32cb improvement: forbid using resources as types 2023-11-28 13:51:50 -05:00
Zach Daniel
4e0566fe0d improvement: add composite_type/2 and composite_type/3 2023-11-27 19:11:52 -05:00
Zach Daniel
fdc2bc9a58 improvement: support key aliases for composite types 2023-11-27 16:20:30 -05:00
Zach Daniel
5703e26adc chore: add Ash.Type functions for new callbacks 2023-11-27 13:14:33 -05:00
Zach Daniel
438331e2e9 chore: move overridable callbacks to correct type 2023-11-27 13:06:17 -05:00
Zach Daniel
d36972ca8b chore: make new Ash.Type callbacks overridable 2023-11-27 13:03:20 -05:00
Zach Daniel
c6a2e56142 fix: ensure NewType honors new composite callbacks 2023-11-27 12:59:56 -05:00
Zach Daniel
e043521625 chore: fix callbcak location 2023-11-27 12:57:18 -05:00
Zach Daniel
c82542ce55 improvement: add composite?/1 and composite_types/1 to Ash.Type 2023-11-27 12:55:39 -05:00
Zach Daniel
83d5bdd55e fix: properly create new vectors from strings 2023-11-26 18:53:23 -05:00
Zach Daniel
be935723d2 fix: properly resolve nested calculation dependencies 2023-11-24 07:23:38 -05:00
Zach Daniel
fcdd35d336 chore: revert change to used_calculations 2023-11-21 09:32:55 -05:00
Zach Daniel
432d65a003 fix: don't apply sort on manage relationship lookup
fix: don't apply filter on manage relationship lookup if it has a parent expr
2023-11-21 09:13:23 -05:00
Jeremy Grant
1ce05562aa
fix: change_attribute failing on a union attribute (#778) 2023-11-20 19:10:35 -05:00
Barnabas Jovanovics
a3a176287d
fix: convert upsert fields before passing to data layer (#777) 2023-11-20 10:21:16 -05:00
Zach Daniel
1b847fc83c fix: use sort and filter to synonymous_relationship checks 2023-11-16 10:48:32 -05:00
Zach Daniel
b9f804db10 fix: properly set actor context on calc expressions in ets data layer 2023-11-16 08:18:39 -05:00
Zach Daniel
2d536e0b95 fix: properly pass authorize? option when loading aggregates 2023-11-15 20:25:59 -05:00
Zach Daniel
db44eaea74 fix: properly associate lateral join records with no_attributes? true 2023-11-15 18:38:13 -05:00
Zach Daniel
a983ddcef6 fix: set aggregate context as well as calculation context in filters 2023-11-15 17:46:13 -05:00
Zach Daniel
4a2563d5ae fix: set actor when computing aggregates that reference calculations 2023-11-15 17:26:57 -05:00
Zach Daniel
c5f59934d4 fix: dialyzer issues on sort 2023-11-14 10:52:32 -05:00
Zach Daniel
bb9b9aea37 fix: properly return constraints in aggregate get_type 2023-11-13 17:11:43 -05:00
Zach Daniel
1a2dc2a14c chore: format 2023-11-13 17:04:53 -05:00
Simon Bergström
b0d5c08f5d
fix: properly include relationship name message when relationship cannot be found (#770) 2023-11-13 17:04:35 -05:00
Zach Daniel
575b1000d1 fix: properly thread constraints through aggregates 2023-11-13 16:47:24 -05:00
Barnabas Jovanovics
abb0854ae9
fix: remove destroyed or unrelated data from the relationship (#767) 2023-11-13 13:58:09 -05:00
Eduardo B. A
1775ab5a14
feat: Expand upsert_fields option (#761)
With this change, upsert_fields accepts the following options:

* `nil`: upsert fields not set;
* `:replace_all`: all fields from resource will be updated;
* `{:replace_all_except, [fields]}`: all fields from resource except fields inside `fields` will be updated;
* `{:replace, [fields]}`: only fields inside `fields` will be updated.
2023-11-13 13:23:16 -05:00
Zach Daniel
1470696a73 fix: properly strip extra record requested to detect more? pages. 2023-11-13 13:18:35 -05:00
James Harton
173f4ae5ad
docs: Spelling fix (wether -> whether). (#764)
Wether: noun
  1. A castrated male sheep or goat.

Whether: conjuction
  1. Used to indirect questions to introduce one alternative.
  2. Used to introduce alternative possibilities.
  3. Either.
2023-11-09 15:52:13 +13:00
Zach Daniel
780eae8d69 improvement: honor authorize?: false option in generic actions 2023-10-27 15:28:51 -04:00
Zach Daniel
291dea3de9 docs: update docs for pub sub 2023-10-27 13:22:33 -04:00
Zach Daniel
5ea570591b fix: don't attempt to key a struct 2023-10-27 11:07:11 -04:00
Zach Daniel
0a0148214a fix: ensure item constraints are passed to array casting 2023-10-27 00:37:28 -04:00
Zach Daniel
f7b2af8bcc fix: handle non-list values in Ash.Actions.Sort.process/4 2023-10-26 23:52:25 -04:00
Zach Daniel
348488e377 chore: fix typo copypasta 2023-10-26 22:07:33 -04:00
Zach Daniel
7b50a401d8 fix: optimize and make Ash.Type more consistent 2023-10-26 22:04:57 -04:00
Riccardo Binetti
f12a73ad88
docs: fix Ash.Resource.Preparation moduledoc (#759)
It mentioned changeset and change instead of query and preparation
2023-10-26 19:27:30 -04:00
Zach Daniel
34a4e416b0 fix: fix typespec for include_source/2 2023-10-26 10:11:54 -04:00
Zach Daniel
0988f31811 chore: fix typespec for error class module 2023-10-26 10:05:20 -04:00
Zach Daniel
8a31284015 chore: process sort before checking for parent exprs 2023-10-26 10:02:17 -04:00
Zach Daniel
4797e148ac improvement: detect more parent expressions 2023-10-26 09:58:08 -04:00
Robert Graff
a48d43e79d
fix more handle change use cases (#757) 2023-10-25 17:47:50 -04:00
Zach Daniel
e680867be9 fix: don't reorder global validations/changes
fix: use latest spark, and new persisters callback
fix: properly validate belongs_to relationships
2023-10-25 17:45:55 -04:00
Zach Daniel
539f5a1727 fix: remove invalid usages of unsafe_change_attribute/3
ci: test against `ash_paper_trail`
2023-10-25 13:06:04 -04:00
Robert Graff
f03b6a4370
fix: handle builtin types in unions (#752) 2023-10-25 08:31:25 -04:00
Zach Daniel
d6c1445974 chore: update docs 2023-10-24 12:42:35 -04:00
Frédérick Capovilla
76783b355b
feat: Add unknown argument error when passing an unknown key to an action. (#750)
* improvement: Add ash_three? feature flag for Ash 3.0 related behaviors.

* test: Add the ash_three test tag to exclude tests targetting Ash 3.0
2023-10-24 12:27:33 -04:00
Zach Daniel
7eac076581 chore: update dialyzer & cleanup dead code 2023-10-21 23:30:33 -04:00
Zach Daniel
9ad876af20 improvement: add Ash.Test.assert_has_error and Ash.Test.refute_has_error 2023-10-21 23:14:45 -04:00
Zach Daniel
dec32f47ee improvement: support to_error_class taking changeset/query/input 2023-10-21 22:55:45 -04:00
Frédérick Capovilla
60d12f86da
fix: Change heading levels in generated livebook to have only one H1 (#747) 2023-10-21 22:32:46 -04:00
Frédérick Capovilla
5fe3cdc26e
improvement: add "filename" parameter to the livebook generator. (#746) 2023-10-21 22:32:05 -04:00
Jordan Hewitt
003d5eb0e3
fix: code gen interfaces check type first argument (#749)
* reproduced reported error message.

* remove path matching from code interface in order to make error error from issue 679 more clear.

---------

Co-authored-by: Jordan <srcrr-gitlab@ipriva.com>
2023-10-21 19:52:37 -04:00
Kevin Schweikert
313ec74152
docs: inset code in set_attrbute docs (#745) 2023-10-21 14:13:45 -04:00
Zach Daniel
799a1d1dd3 fix: properly support get in Ash
fix: add back in accidentally removed transformer
2023-10-20 08:09:14 -04:00
Zach Daniel
2dbebf39e1 fix: properly determine resource from Ash.get!/2 2023-10-20 06:22:32 -04:00
Zach Daniel
1ab5a35d7f
improvement: support an api option to use Ash.Resource (#715)
* improvement: support an `api` option to `use Ash.Resource`
improvement: add functions to `Ash` for resources w/ configured apis
improvement: default code_interface.define_for to resource's ash api
2023-10-20 06:07:34 -04:00
Zach Daniel
0176958ec0 fix: cast functional default values 2023-10-19 12:06:56 -04:00
Zach Daniel
d5621fbc8c improvement: cast_input for default values at compile time 2023-10-19 11:57:07 -04:00
Zach Daniel
60977a4d6c chore: make credo happy 2023-10-19 11:25:33 -04:00
Zach Daniel
b605232f7e chore: comment out more unnecessary code 2023-10-19 11:14:57 -04:00
Zach Daniel
cb8fc298ae fix: temporarily omit overzealous validation 2023-10-19 11:14:08 -04:00
Zach Daniel
7d06d8fa46 fix: properly honor max_concurrency option
chore: remove IO.inspect
2023-10-18 16:53:12 -04:00
Zach Daniel
381d45a3f8 improvement: optimize bulk creates where results are not returned 2023-10-18 16:18:57 -04:00
Zach Daniel
ff88ce68b4
improvement: rewrite bulk creates, optimize changeset functions (#744) 2023-10-18 14:07:44 -04:00
De Wet Blomerus
52214bd2d9
docs: Remove extra trailing close-paran 🔥 (#743) 2023-10-17 21:38:08 -04:00
Zach Daniel
a92a0b4c9b fix: support tenant option in api.can
closes #736
2023-10-17 21:25:53 -04:00
Zach Daniel
b32f2e55ea fix: properly use constraints when casting expression values 2023-10-17 15:08:54 -04:00
Zach Daniel
ccf635e711 improvement: better storage_type handling, undo function change 2023-10-17 14:46:28 -04:00
Zach Daniel
24ae31c6dd fix: don't re-case constraints in the type function 2023-10-17 14:20:56 -04:00
Zach Daniel
c014fc2f0a chore: release version v2.15.19 2023-10-17 14:08:19 -04:00
Zach Daniel
7849541b29 chore: fix typespec 2023-10-17 13:58:17 -04:00
Zach Daniel
5d85c5be14 improvement: properly honor ecto type init callback 2023-10-17 13:39:21 -04:00
Zach Daniel
d9bacc1554 fix: handle new type constraints properly 2023-10-17 12:50:14 -04:00
Zach Daniel
12840ae235 fix: honor max_concurrency option 2023-10-17 12:24:28 -04:00
Zach Daniel
7301e09654 chore: fetch type in include_source/3 2023-10-17 11:11:18 -04:00
Zach Daniel
eca3b84105 chore: generalize embed type __source__ logic 2023-10-17 11:03:50 -04:00
Zach Daniel
c12f24d55d chore: changeset optimizations
ci: test ash-sqlite subproject
2023-10-17 10:49:37 -04:00
Zach Daniel
4900d69a92 chore: optimize upsert update defaults 2023-10-17 10:39:59 -04:00
Zach Daniel
6e2fa036d7 chore: update docs 2023-10-17 10:37:46 -04:00
Zach Daniel
ae147011ea fix: handle generic actions in list_arguments_and_attributes 2023-10-17 10:36:57 -04:00
Zach Daniel
fcc7e3b08a chore: revert recent change to datetime storage type default 2023-10-17 10:26:05 -04:00
Zach Daniel
20cc1cc24e improvement: various optimizations and compile time caching
fix: fix type casting for embedded resources
2023-10-17 10:18:26 -04:00
Pierre Le Gall
e14e1b2e29
improvement: set default many to many options (#737)
Many to many relationship `source_attribute_on_join_resource`
and `destination_attribute_on_join_resource` are now guessed
by there module name if not explicitly set in the relationship.
2023-10-17 10:03:21 -04:00
Zach Daniel
7f7469eb9f improvement: various performance improvements 2023-10-17 01:08:26 -04:00
Zach Daniel
52337b7bff improvement: various optimizations for bulk create actions 2023-10-16 23:50:05 -04:00
Zach Daniel
3dd61a6ff8 fix: ensure after action hooks are run on bulk creates 2023-10-16 17:00:04 -04:00
Zach Daniel
b2c7048359 fix: return records from batches if items have after action hooks 2023-10-16 16:30:15 -04:00
Zach Daniel
f53626e65d improvement: support max_concurrency option on bulk creates
improvement: better error message on missing identities
improvement: better error message on invalid data passed to `YourApi.load`
2023-10-16 14:53:27 -04:00
Zach Daniel
ecdc4c1c64 fix: don't transform errors to changesets when rolling back in with_hooks 2023-10-13 22:04:44 -04:00
Zach Daniel
931ff30641 fix: undo previous changes where transactional actions might not roll back
instead, I've added a `rollback_on_error?` option to allow more fine grained
control over what happens when you call an individual action and it encounters
an error and would roll back.
2023-10-13 18:12:48 -04:00
Zach Daniel
5a462a3ffc fix: undo regression where errors weren't wrapped in a changeset 2023-10-13 16:51:10 -04:00
Zach Daniel
7ff3a96db2 improvement: better handling of nested errors in transactions
If you call a nested action currently, and anything goes wrong, the whole
transaction is aborted. However, we want to be able to *recover* from
internal errors, and that means allowing things to fail without failing
the entire transaction. If something that *starts* a transaction
encounters an error, then it will rollback the transaction.
2023-10-13 14:33:25 -04:00
Zach Daniel
4fe4411286 fix: provide full constraints when determining Ash.Type.NewType storage types 2023-10-12 10:57:10 -04:00
Zach Daniel
b93cbb9577 fix: go back to original default timestamp behavior
fixes #733
2023-10-12 07:25:46 -04:00
Zach Daniel
6e0be43c51 fix: properly authorize access to query aggregates in all cases 2023-10-11 19:44:50 -04:00
Zach Daniel
658f071b81 improvement: move various transformers to be verifiers 2023-10-11 17:58:31 -04:00
Zach Daniel
68ec02a27b chore: update typespec for data layer feature 2023-10-11 15:13:49 -04:00
Zach Daniel
1ab4b6e69a improvement: support atomics on upserts 2023-10-11 15:09:06 -04:00
Zach Daniel
1cfcc296ae improvement: ensure all changesets sent batched to data layer have same set of atomics
this is necessary for upsert atomics
2023-10-11 12:05:17 -04:00
Zach Daniel
2de1e81b3b chore: fix more typespecs 2023-10-11 09:05:56 -04:00
Zach Daniel
c89b680d4b fix: move misplaced file and fix typespecs for Ash.DataLayer.Ets.Info 2023-10-11 09:02:32 -04:00
Zach Daniel
b0a4a23ab2 chore: appease credo 2023-10-10 17:02:11 -04:00
Zach Daniel
05dd361a52 fix: properly set invalid_keys on action inputs 2023-10-10 16:59:28 -04:00
Zach Daniel
be202918ac fix: properly validate required arguments for generic actions 2023-10-10 16:49:47 -04:00
Zach Daniel
c77ad34efb improvement: set storage type for citext to ci_string 2023-10-10 14:12:01 -04:00
Zach Daniel
3782f1cfe2 fix: honor authorize? option for calls to aggregate 2023-10-10 11:10:58 -04:00
Zach Daniel
fbe6b21bf0 improvement: support to-one reference paths in calculations 2023-10-09 18:50:15 -04:00
Zach Daniel
407b09b677 fix: handle false values properly when passed to flows 2023-10-07 16:34:13 -04:00
Zach Daniel
32620dfd52 improvement: add Ash.Sort.expr_sort. In 3.0 sort should be a macro 2023-10-07 09:16:52 -04:00
Zach Daniel
49042b737d fix: properly rollback transactions on returned errors in generic actions 2023-10-06 13:39:05 -04:00
Zach Daniel
b8be1123ba fix: generate keysets immediately after read action 2023-10-05 22:50:15 -04:00
Robert Graff
2ad5d451b0
Fixes: casting an array attribute to nil (#723) 2023-10-04 14:55:30 -04:00
Zach Daniel
c2872b5181 fix: prepare_change_array on embedded types needs to handle nil
fix: handle_change_array on embedded types needs to honor `nil`
2023-10-04 13:59:26 -04:00
Zach Daniel
c691eb022c improvement: allow overriding cast_input/2 on NewType 2023-10-04 11:51:59 -04:00