Commit graph

2939 commits

Author SHA1 Message Date
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
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