# CHANGELOG
All notable changes to this project will be documented in this file.
See [Conventional Commits](Https://conventionalcommits.org) for commit guidelines.
<!-- changelog -->
## [v3.0.0-rc.31](https://github.com/ash-project/ash/compare/v3.0.0-rc.30...v3.0.0-rc.31) (2024-04-26)
### Features:
* Ash.create and Ash.update oneliner (#1055)
* Ash.create and Ash.update oneliner
### Bug Fixes:
* various fixes around bulk action upgrades, atomics
* handle resource being passed as query code_interface.ex (#1057)
* do not use Enum.map_join (#1058)
* opts dispatch for create and update
### Improvements:
* Treat asterisk as a single arguemnt in accept (#1062)
* support atomics, update_query, destroy_query in ETS data layer
## [v3.0.0-rc.30](https://github.com/ash-project/ash/compare/v3.0.0-rc.29...v3.0.0-rc.30) (2024-04-24)
### Bug Fixes:
* use Splode.ErrorClass for error classes (#1054)
### Improvements:
* remove `after_atomic` and instead support `after_batch`
* Add attributes_present, attributes_absent. (#1046)
## [v3.0.0-rc.29](https://github.com/ash-project/ash/compare/v3.0.0-rc.28...v3.0.0-rc.29) (2024-04-23)
### Breaking Changes:
* 3.0 (#955)
* use `%Ash.NotSelected{}` for unselected values
* default `require_atomic?` to `true`
* raise errors on unknown generic action arguments
* default bulk strategy to `:atomic`
* warnings on `require_atomic?` `true` actions
* revise `Ash.NotSelected` to `Ash.NotLoaded`
* errors on unknown action inputs across the board
* default `api.authorization.authorize` to `:by_default`
* require the api when constructing changesets
* code_interface.define_for -> code_interface.api
* remove registries
* pubsub notifier default to `previous_values?: false`
* requires_original_data? callback defaults to false
* rename Ash.Calculation -> Ash.Resource.Calculation
* improve `Ash.Query.Calculation.new` signature
* anonymous function calculations now take lists and return lists
* make callback contexts into structs
* pass context to builtin lifecycle hook changes
* calculation arguments are now in the `arguments` key of the context
* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`
* make picosat_elixir optional with `simple_sat`
* rename api to domain
* remove `Ash.Changeset.new!`
* deprecate `private?: false` in favor of `public?: true`
* default `default_accept` is now `[]`
* `Ash.CiString.new/1` returns `nil` on `nil` input
* clean up and reorganize `Ash` functions
* remove context-based functionality
* Deprecate calling functions on (domain) api in favor of `Ash`
* add `attribute_public?` and update `attribute_writable?` behavior
* update atomic behaviors, default to invalid
* changeset.filters -> changeset.filter
* remove deprecated functions
* remove and simplify `Ash.Filter.TemplateHelpers`
* keyword lists are no longer special cased in ash expressions
* introduce strict mode to calculations
* reverse order of before action & before transaction hooks
* default read actions are now paginatable
* require explicit accept lists in default actions
* remove Ash.Flow and Ash.Engine
* standardize various exception keys and names
* use `Splode` for errors
* move simple_notifiers to an option instead of a DSL builder
* update spark for better autocomplete, configure autocomplete for key functions
* swap position of sort order and arguments in calculation sorting
* add `include_nil?` aggregate option, and default it to `false`
* errors on unknown inputs for calculations
### Features:
* leverage resource domain for eager/pre checking (#1040)
* configurable multitenancy on read actions (#1030)
* Ash.Reactor: Add new `change` step type which can be used to modify changesets.
* add `update_change` function and builtin change (#976)
* code interface on the domain
### Bug Fixes:
* ensure that errors for nested forms are transformed
* Set tenant for managed relationship changeset (#1044)
* don't carry over all changes during atomic upgrade
* properly pin `Enum.join` in atomic for enum types
* ensure actor is set when building queries in filter
* don't eager evaluate type because it breaks data layers
* ensure `__union_tag__` is set when calling sub-union types
* handle more `&Mod.fun/n` variations in fragments
* ensure validations are considered atomic
* ensure tenant and actor are properly set in `Ash.can?`
* ensure changeset filter is parsed for templates
* properly parse additional changeset expression
* properly parse changeset template for filters
* properly parse changeset filter
* ensure changeset filters are applied on bulk destroy/update
* fix typo in load test (#1031)
* support all calculate opts in code interface methods (#1026)
* ensure `to_tenant` is copied to aggregate query
* compilation time improvements (hopefully)
* `code_interface` actions accept `@context` (#1016)
* ensure tenant is set to `opts` in action helpers
* ensure more consistent use of `Ash.Tenant.to_tenant/2`
* ensure that strict loads are applied at all nesting levels
* properly load depended on fields for relationships even if `public?: false`
* fix date_add query function (#1010)
* pass name through to underlying tasks
* Validate all conditions in a `numericality` validation instead of only the last (#997)
* swap the parameters in Ash.ToTenant.to_tenant/2 (#1003)
* Ash.Reactor: crash when calling an ash reactor for the first time.
* add context argument to `before_action` and `after_action` for read actions
* add base case for Ash.Resource.Info.public_relationship/2 (#1000)
* honor new calcualtion sort format in sort parser
* don't raise error on keyword input to create interface
* action is an atom in erroor case for bulk update
* undo adding primary key argument for methods with `get?` (#989)
* remove `internal?` and `stacktraces?` from common opts (#988)
* pattern match error in managed relationships
* include options for generic action code interfaces
* logic errors around arguments/changing attributes in validations
* handle partially atomic validations in run_action_changes
* more improvements to resource matching in `can?`
* detect more cases for domain extraction from resources
* properly dispatch managed relationships to proper domain
* check target resource's domain before assuming it is the same as current domain
* return {:error, query} for invalid query in Aggregate.run/4 (#982)
* allow strings in Ash.Type.Enum again
* set tenant in bulk creates after setting up changeset
* use the resource's domain above option domain
* properly cast identity keys before comparison
* properly handle multiple paths for checking sortable relationships
* multi-line DSL doc options in `Ash.Reactor`. (#974)
* don't call domain at compile time if its not loaded
* ensure that generic action arguments have proper default for public?
* ensure we don't double-query values after manual actions
* properly handle lists of errors added by validations
* honor `only_when_valid?` on validations in bulk actions
* fix typespec for bulk_create
* ending a policy w/ `authorize_if` had flipped conditional
* handle `sensitive?` option in query aggregate/calculation (#963)
* properly retain input order for embedded attributes
* fix `changing_attributes` check implementation
* properly handle transaction errors from bulk creates
* set tenant on query so that root calles to Api.aggreagte work as expected (#929)
* properly construct new query in `build/3`
* make bang variant of field aggregates work correctly (#954)
* enforce multitenancy on aggregates (#952)
* fix missing tenant in some bulk contexts (#951)
* Fix places where tenant is not passed along (#950)
### Improvements:
* make extension discovery faster
* add `mix deps.audit` task to shared CI
* better eager expression parsing and atomic error anticipation
* add `Ash.read_first`
* helpful output in mix tasks helper
* use explicit read actions when reading relationships (#1029)
* use cached to_tenant when setting tenant attribute (#1021)
* support `require_reference?: false` on code interfaces
* support `:filter` option on bulk create/destroy
* make `match/1` overridable in Ash.Type.Enum (#1020)
* adding domain to embedded resource is an error
* raise more sensible error on unsupported pagination
* support builder options in `read` code interfaces
* support omitting generic action return types
* call ToTenant protocol when setting tenant in actions (#1004)
* add `ash.rollback` mix task
* add `ash.rollback` task
* add `config :ash, require_atomic_by_default?, false`, for upgrading
* support `skip_unknown_inputs` in `Ash.bulk_create`
* Ash.Reactor: Allow `create` to be provided an initial value.
* Allow Reactor modules to be run directly from generic actions. (#993)
* add `Ash.Query.apply_to/3`
* synthesize attributes from atomics for better notifications
* make Ash.Resource.Validation.Match partially atomic (#979)
* make Ash.Resource.Validation.Match partially atomic
* add `skip_unknown_inputs` for generic actions
* support `allow_nil_input` dsl option in update/destroy (#964)
* allow accepting private attributes
* allow adding non-public attributes to explicit accept lists
* better error messages for private attribute accepting
* use resource api when verifying its presence in a known api
* change `type` argument position in `Ash.Query.calculate` (#959)
* allow simple check to return error tuple (#956)
* skip unknown inputs when managing relationships
* ignore unknown string-keyed inputs beginning with `_`
* support requesting to ignore additional keys
* add `skip_unknown_inputs` option, use it for embeds in unions
* ensure that update defaults are set
* update spark to 2.0
* update reactor to 3.0
* import Ash.Expr in modules where it is used
* require Ash.QUery in modules where it makes sense
* add structs for more context implementations
* ensure selects are applied on destroys
* support custom expressions
* update upgrade guide to include Splode
* only require primary key if resource has actions or fields
* only build schema if resource has actions or fields
* verify primary key in its own verifier
* add `resource/1` builtin check
* better code interface documentation
* support notifiers within actions
* support specifying multiple filters
* add `sortable?` flags to all fields
* support multiple filters on relationships
* support sensitive? on calculations and arguments
* validate resources in inputs to code interface
* update reactor and tests
* don't require domain on relationships if destination has domain
* always choose to cast atomic
* support casting some embeds atomically
* various 3.0 updates, documented in upgrade.md
* ensure non-static dynamic domains works
* add Ash.ToTenant protocol
* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)
* support bulk and atomic operations in code interfaces
## [v3.0.0-rc.28](https://github.com/ash-project/ash/compare/v3.0.0-rc.27...v3.0.0-rc.28) (2024-04-23)
### Features:
* leverage resource domain for eager/pre checking (#1040)
### Bug Fixes:
* don't carry over all changes during atomic upgrade
* properly pin `Enum.join` in atomic for enum types
* ensure actor is set when building queries in filter
### Improvements:
* make extension discovery faster
* add `mix deps.audit` task to shared CI
## [v3.0.0-rc.27](https://github.com/ash-project/ash/compare/v3.0.0-rc.26...v3.0.0-rc.27) (2024-04-19)
### Bug Fixes:
* don't eager evaluate type because it breaks data layers
## [v3.0.0-rc.26](https://github.com/ash-project/ash/compare/v3.0.0-rc.25...v3.0.0-rc.26) (2024-04-19)
### Bug Fixes:
* ensure `__union_tag__` is set when calling sub-union types
* handle more `&Mod.fun/n` variations in fragments
## [v3.0.0-rc.25](https://github.com/ash-project/ash/compare/v3.0.0-rc.24...v3.0.0-rc.25) (2024-04-17)
### Bug Fixes:
* ensure validations are considered atomic
* ensure tenant and actor are properly set in `Ash.can?`
### Improvements:
* better eager expression parsing and atomic error anticipation
## [v3.0.0-rc.24](https://github.com/ash-project/ash/compare/v3.0.0-rc.23...v3.0.0-rc.24) (2024-04-16)
### Bug Fixes:
* ensure changeset filter is parsed for templates
* properly parse additional changeset expression
* properly parse changeset template for filters
* properly parse changeset filter
## [v3.0.0-rc.23](https://github.com/ash-project/ash/compare/v3.0.0-rc.22...v3.0.0-rc.23) (2024-04-16)
### Bug Fixes:
* ensure changeset filters are applied on bulk destroy/update
## [v3.0.0-rc.22](https://github.com/ash-project/ash/compare/v3.0.0-rc.21...v3.0.0-rc.22) (2024-04-16)
### Features:
* configurable multitenancy on read actions (#1030)
### Bug Fixes:
* fix typo in load test (#1031)
* support all calculate opts in code interface methods (#1026)
### Improvements:
* add `Ash.read_first`
* helpful output in mix tasks helper
* use explicit read actions when reading relationships (#1029)
* use cached to_tenant when setting tenant attribute (#1021)
## [v3.0.0-rc.21](https://github.com/ash-project/ash/compare/v3.0.0-rc.20...v3.0.0-rc.21) (2024-04-14)
### Bug Fixes:
* ensure `to_tenant` is copied to aggregate query
## [v3.0.0-rc.20](https://github.com/ash-project/ash/compare/v3.0.0-rc.19...v3.0.0-rc.20) (2024-04-13)
### Breaking Changes:
* 3.0 (#955)
* use `%Ash.NotSelected{}` for unselected values
* default `require_atomic?` to `true`
* raise errors on unknown generic action arguments
* default bulk strategy to `:atomic`
* warnings on `require_atomic?` `true` actions
* revise `Ash.NotSelected` to `Ash.NotLoaded`
* errors on unknown action inputs across the board
* default `api.authorization.authorize` to `:by_default`
* require the api when constructing changesets
* code_interface.define_for -> code_interface.api
* remove registries
* pubsub notifier default to `previous_values?: false`
* requires_original_data? callback defaults to false
* rename Ash.Calculation -> Ash.Resource.Calculation
* improve `Ash.Query.Calculation.new` signature
* anonymous function calculations now take lists and return lists
* make callback contexts into structs
* pass context to builtin lifecycle hook changes
* calculation arguments are now in the `arguments` key of the context
* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`
* make picosat_elixir optional with `simple_sat`
* rename api to domain
* remove `Ash.Changeset.new!`
* deprecate `private?: false` in favor of `public?: true`
* default `default_accept` is now `[]`
* `Ash.CiString.new/1` returns `nil` on `nil` input
* clean up and reorganize `Ash` functions
* remove context-based functionality
* Deprecate calling functions on (domain) api in favor of `Ash`
* add `attribute_public?` and update `attribute_writable?` behavior
* update atomic behaviors, default to invalid
* changeset.filters -> changeset.filter
* remove deprecated functions
* remove and simplify `Ash.Filter.TemplateHelpers`
* keyword lists are no longer special cased in ash expressions
* introduce strict mode to calculations
* reverse order of before action & before transaction hooks
* default read actions are now paginatable
* require explicit accept lists in default actions
* remove Ash.Flow and Ash.Engine
* standardize various exception keys and names
* use `Splode` for errors
* move simple_notifiers to an option instead of a DSL builder
* update spark for better autocomplete, configure autocomplete for key functions
* swap position of sort order and arguments in calculation sorting
* add `include_nil?` aggregate option, and default it to `false`
* errors on unknown inputs for calculations
### Features:
* Ash.Reactor: Add new `change` step type which can be used to modify changesets.
* add `update_change` function and builtin change (#976)
* code interface on the domain
### Bug Fixes:
* compilation time improvements (hopefully)
* `code_interface` actions accept `@context` (#1016)
* ensure tenant is set to `opts` in action helpers
* ensure more consistent use of `Ash.Tenant.to_tenant/2`
* ensure that strict loads are applied at all nesting levels
* properly load depended on fields for relationships even if `public?: false`
* fix date_add query function (#1010)
* pass name through to underlying tasks
* Validate all conditions in a `numericality` validation instead of only the last (#997)
* swap the parameters in Ash.ToTenant.to_tenant/2 (#1003)
* Ash.Reactor: crash when calling an ash reactor for the first time.
* add context argument to `before_action` and `after_action` for read actions
* add base case for Ash.Resource.Info.public_relationship/2 (#1000)
* honor new calcualtion sort format in sort parser
* don't raise error on keyword input to create interface
* action is an atom in erroor case for bulk update
* undo adding primary key argument for methods with `get?` (#989)
* remove `internal?` and `stacktraces?` from common opts (#988)
* pattern match error in managed relationships
* include options for generic action code interfaces
* logic errors around arguments/changing attributes in validations
* handle partially atomic validations in run_action_changes
* more improvements to resource matching in `can?`
* detect more cases for domain extraction from resources
* properly dispatch managed relationships to proper domain
* check target resource's domain before assuming it is the same as current domain
* return {:error, query} for invalid query in Aggregate.run/4 (#982)
* allow strings in Ash.Type.Enum again
* set tenant in bulk creates after setting up changeset
* use the resource's domain above option domain
* properly cast identity keys before comparison
* properly handle multiple paths for checking sortable relationships
* multi-line DSL doc options in `Ash.Reactor`. (#974)
* don't call domain at compile time if its not loaded
* ensure that generic action arguments have proper default for public?
* ensure we don't double-query values after manual actions
* properly handle lists of errors added by validations
* honor `only_when_valid?` on validations in bulk actions
* fix typespec for bulk_create
* ending a policy w/ `authorize_if` had flipped conditional
* handle `sensitive?` option in query aggregate/calculation (#963)
* properly retain input order for embedded attributes
* fix `changing_attributes` check implementation
* properly handle transaction errors from bulk creates
* set tenant on query so that root calles to Api.aggreagte work as expected (#929)
* properly construct new query in `build/3`
* make bang variant of field aggregates work correctly (#954)
* enforce multitenancy on aggregates (#952)
* fix missing tenant in some bulk contexts (#951)
* Fix places where tenant is not passed along (#950)
### Improvements:
* support `require_reference?: false` on code interfaces
* support `:filter` option on bulk create/destroy
* make `match/1` overridable in Ash.Type.Enum (#1020)
* adding domain to embedded resource is an error
* raise more sensible error on unsupported pagination
* support builder options in `read` code interfaces
* support omitting generic action return types
* call ToTenant protocol when setting tenant in actions (#1004)
* add `ash.rollback` mix task
* add `ash.rollback` task
* add `config :ash, require_atomic_by_default?, false`, for upgrading
* support `skip_unknown_inputs` in `Ash.bulk_create`
* Ash.Reactor: Allow `create` to be provided an initial value.
* Allow Reactor modules to be run directly from generic actions. (#993)
* add `Ash.Query.apply_to/3`
* synthesize attributes from atomics for better notifications
* make Ash.Resource.Validation.Match partially atomic (#979)
* make Ash.Resource.Validation.Match partially atomic
* add `skip_unknown_inputs` for generic actions
* support `allow_nil_input` dsl option in update/destroy (#964)
* allow accepting private attributes
* allow adding non-public attributes to explicit accept lists
* better error messages for private attribute accepting
* use resource api when verifying its presence in a known api
* change `type` argument position in `Ash.Query.calculate` (#959)
* allow simple check to return error tuple (#956)
* skip unknown inputs when managing relationships
* ignore unknown string-keyed inputs beginning with `_`
* support requesting to ignore additional keys
* add `skip_unknown_inputs` option, use it for embeds in unions
* ensure that update defaults are set
* update spark to 2.0
* update reactor to 3.0
* import Ash.Expr in modules where it is used
* require Ash.QUery in modules where it makes sense
* add structs for more context implementations
* ensure selects are applied on destroys
* support custom expressions
* update upgrade guide to include Splode
* only require primary key if resource has actions or fields
* only build schema if resource has actions or fields
* verify primary key in its own verifier
* add `resource/1` builtin check
* better code interface documentation
* support notifiers within actions
* support specifying multiple filters
* add `sortable?` flags to all fields
* support multiple filters on relationships
* support sensitive? on calculations and arguments
* validate resources in inputs to code interface
* update reactor and tests
* don't require domain on relationships if destination has domain
* always choose to cast atomic
* support casting some embeds atomically
* various 3.0 updates, documented in upgrade.md
* ensure non-static dynamic domains works
* add Ash.ToTenant protocol
* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)
* support bulk and atomic operations in code interfaces
## [v3.0.0-rc.19](https://github.com/ash-project/ash/compare/v3.0.0-rc.18...v3.0.0-rc.19) (2024-04-11)
### Bug Fixes:
* properly load depended on fields for relationships even if `public?: false`
* fix date_add query function (#1010)
* pass name through to underlying tasks
* Validate all conditions in a `numericality` validation instead of only the last (#997)
### Improvements:
* support builder options in `read` code interfaces
* support omitting generic action return types
* call ToTenant protocol when setting tenant in actions (#1004)
## [v3.0.0-rc.18](https://github.com/ash-project/ash/compare/v3.0.0-rc.17...v3.0.0-rc.18) (2024-04-10)
### Bug Fixes:
* swap the parameters in Ash.ToTenant.to_tenant/2 (#1003)
* Ash.Reactor: crash when calling an ash reactor for the first time.
* add context argument to `before_action` and `after_action` for read actions
* add base case for Ash.Resource.Info.public_relationship/2 (#1000)
### Improvements:
* add `ash.rollback` mix task
* add `ash.rollback` task
* add `config :ash, require_atomic_by_default?, false`, for upgrading
* support `skip_unknown_inputs` in `Ash.bulk_create`
## [v3.0.0-rc.17](https://github.com/ash-project/ash/compare/v3.0.0-rc.16...v3.0.0-rc.17) (2024-04-08)
### Features:
* Ash.Reactor: Add new `change` step type which can be used to modify changesets.
### Bug Fixes:
* honor new calcualtion sort format in sort parser
* don't raise error on keyword input to create interface
* action is an atom in erroor case for bulk update
### Improvements:
* Ash.Reactor: Allow `create` to be provided an initial value.
* Allow Reactor modules to be run directly from generic actions. (#993)
## [v3.0.0-rc.16](https://github.com/ash-project/ash/compare/v3.0.0-rc.15...v3.0.0-rc.16) (2024-04-07)
### Improvements:
* add `Ash.Query.apply_to/3`
## [v3.0.0-rc.15](https://github.com/ash-project/ash/compare/v3.0.0-rc.14...v3.0.0-rc.15) (2024-04-07)
### Features:
* add `update_change` function and builtin change (#976)
### Bug Fixes:
* undo adding primary key argument for methods with `get?` (#989)
* remove `internal?` and `stacktraces?` from common opts (#988)
* pattern match error in managed relationships
* include options for generic action code interfaces
* logic errors around arguments/changing attributes in validations
* handle partially atomic validations in run_action_changes
### Improvements:
* synthesize attributes from atomics for better notifications
* make Ash.Resource.Validation.Match partially atomic (#979)
* make Ash.Resource.Validation.Match partially atomic
## [v3.0.0-rc.14](https://github.com/ash-project/ash/compare/v3.0.0-rc.13...v3.0.0-rc.14) (2024-04-05)
### Breaking Changes:
* 3.0 (#955)
* use `%Ash.NotSelected{}` for unselected values
* default `require_atomic?` to `true`
* raise errors on unknown generic action arguments
* default bulk strategy to `:atomic`
* warnings on `require_atomic?` `true` actions
* revise `Ash.NotSelected` to `Ash.NotLoaded`
* errors on unknown action inputs across the board
* default `api.authorization.authorize` to `:by_default`
* require the api when constructing changesets
* code_interface.define_for -> code_interface.api
* remove registries
* pubsub notifier default to `previous_values?: false`
* requires_original_data? callback defaults to false
* rename Ash.Calculation -> Ash.Resource.Calculation
* improve `Ash.Query.Calculation.new` signature
* anonymous function calculations now take lists and return lists
* make callback contexts into structs
* pass context to builtin lifecycle hook changes
* calculation arguments are now in the `arguments` key of the context
* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`
* make picosat_elixir optional with `simple_sat`
* rename api to domain
* remove `Ash.Changeset.new!`
* deprecate `private?: false` in favor of `public?: true`
* default `default_accept` is now `[]`
* `Ash.CiString.new/1` returns `nil` on `nil` input
* clean up and reorganize `Ash` functions
* remove context-based functionality
* Deprecate calling functions on (domain) api in favor of `Ash`
* add `attribute_public?` and update `attribute_writable?` behavior
* update atomic behaviors, default to invalid
* changeset.filters -> changeset.filter
* remove deprecated functions
* remove and simplify `Ash.Filter.TemplateHelpers`
* keyword lists are no longer special cased in ash expressions
* introduce strict mode to calculations
* reverse order of before action & before transaction hooks
* default read actions are now paginatable
* require explicit accept lists in default actions
* remove Ash.Flow and Ash.Engine
* standardize various exception keys and names
* use `Splode` for errors
* move simple_notifiers to an option instead of a DSL builder
* update spark for better autocomplete, configure autocomplete for key functions
* swap position of sort order and arguments in calculation sorting
* add `include_nil?` aggregate option, and default it to `false`
* errors on unknown inputs for calculations
### Features:
* code interface on the domain
### Bug Fixes:
* more improvements to resource matching in `can?`
* detect more cases for domain extraction from resources
* properly dispatch managed relationships to proper domain
* check target resource's domain before assuming it is the same as current domain
* return {:error, query} for invalid query in Aggregate.run/4 (#982)
* allow strings in Ash.Type.Enum again
* set tenant in bulk creates after setting up changeset
* use the resource's domain above option domain
* properly cast identity keys before comparison
* properly handle multiple paths for checking sortable relationships
* multi-line DSL doc options in `Ash.Reactor`. (#974)
* don't call domain at compile time if its not loaded
* ensure that generic action arguments have proper default for public?
* ensure we don't double-query values after manual actions
* properly handle lists of errors added by validations
* honor `only_when_valid?` on validations in bulk actions
* fix typespec for bulk_create
* ending a policy w/ `authorize_if` had flipped conditional
* handle `sensitive?` option in query aggregate/calculation (#963)
* properly retain input order for embedded attributes
* fix `changing_attributes` check implementation
* properly handle transaction errors from bulk creates
* set tenant on query so that root calles to Api.aggreagte work as expected (#929)
* properly construct new query in `build/3`
* make bang variant of field aggregates work correctly (#954)
* enforce multitenancy on aggregates (#952)
* fix missing tenant in some bulk contexts (#951)
* Fix places where tenant is not passed along (#950)
### Improvements:
* add `skip_unknown_inputs` for generic actions
* support `allow_nil_input` dsl option in update/destroy (#964)
* allow accepting private attributes
* allow adding non-public attributes to explicit accept lists
* better error messages for private attribute accepting
* use resource api when verifying its presence in a known api
* change `type` argument position in `Ash.Query.calculate` (#959)
* allow simple check to return error tuple (#956)
* skip unknown inputs when managing relationships
* ignore unknown string-keyed inputs beginning with `_`
* support requesting to ignore additional keys
* add `skip_unknown_inputs` option, use it for embeds in unions
* ensure that update defaults are set
* update spark to 2.0
* update reactor to 3.0
* import Ash.Expr in modules where it is used
* require Ash.QUery in modules where it makes sense
* add structs for more context implementations
* ensure selects are applied on destroys
* support custom expressions
* update upgrade guide to include Splode
* only require primary key if resource has actions or fields
* only build schema if resource has actions or fields
* verify primary key in its own verifier
* add `resource/1` builtin check
* better code interface documentation
* support notifiers within actions
* support specifying multiple filters
* add `sortable?` flags to all fields
* support multiple filters on relationships
* support sensitive? on calculations and arguments
* validate resources in inputs to code interface
* update reactor and tests
* don't require domain on relationships if destination has domain
* always choose to cast atomic
* support casting some embeds atomically
* various 3.0 updates, documented in upgrade.md
* ensure non-static dynamic domains works
* add Ash.ToTenant protocol
* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)
* support bulk and atomic operations in code interfaces
## [v3.0.0-rc.13](https://github.com/ash-project/ash/compare/v3.0.0-rc.12...v3.0.0-rc.13) (2024-04-05)
### Breaking Changes:
* 3.0 (#955)
* use `%Ash.NotSelected{}` for unselected values
* default `require_atomic?` to `true`
* raise errors on unknown generic action arguments
* default bulk strategy to `:atomic`
* warnings on `require_atomic?` `true` actions
* revise `Ash.NotSelected` to `Ash.NotLoaded`
* errors on unknown action inputs across the board
* default `api.authorization.authorize` to `:by_default`
* require the api when constructing changesets
* code_interface.define_for -> code_interface.api
* remove registries
* pubsub notifier default to `previous_values?: false`
* requires_original_data? callback defaults to false
* rename Ash.Calculation -> Ash.Resource.Calculation
* improve `Ash.Query.Calculation.new` signature
* anonymous function calculations now take lists and return lists
* make callback contexts into structs
* pass context to builtin lifecycle hook changes
* calculation arguments are now in the `arguments` key of the context
* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`
* make picosat_elixir optional with `simple_sat`
* rename api to domain
* remove `Ash.Changeset.new!`
* deprecate `private?: false` in favor of `public?: true`
* default `default_accept` is now `[]`
* `Ash.CiString.new/1` returns `nil` on `nil` input
* clean up and reorganize `Ash` functions
* remove context-based functionality
* Deprecate calling functions on (domain) api in favor of `Ash`
* add `attribute_public?` and update `attribute_writable?` behavior
* update atomic behaviors, default to invalid
* changeset.filters -> changeset.filter
* remove deprecated functions
* remove and simplify `Ash.Filter.TemplateHelpers`
* keyword lists are no longer special cased in ash expressions
* introduce strict mode to calculations
* reverse order of before action & before transaction hooks
* default read actions are now paginatable
* require explicit accept lists in default actions
* remove Ash.Flow and Ash.Engine
* standardize various exception keys and names
* use `Splode` for errors
* move simple_notifiers to an option instead of a DSL builder
* update spark for better autocomplete, configure autocomplete for key functions
* swap position of sort order and arguments in calculation sorting
* add `include_nil?` aggregate option, and default it to `false`
* errors on unknown inputs for calculations
### Features:
* code interface on the domain
### Bug Fixes:
* set tenant in bulk creates after setting up changeset
* use the resource's domain above option domain
* properly cast identity keys before comparison
* properly handle multiple paths for checking sortable relationships
* multi-line DSL doc options in `Ash.Reactor`. (#974)
* don't call domain at compile time if its not loaded
* ensure that generic action arguments have proper default for public?
* ensure we don't double-query values after manual actions
* properly handle lists of errors added by validations
* honor `only_when_valid?` on validations in bulk actions
* fix typespec for bulk_create
* ending a policy w/ `authorize_if` had flipped conditional
* handle `sensitive?` option in query aggregate/calculation (#963)
* properly retain input order for embedded attributes
* fix `changing_attributes` check implementation
* properly handle transaction errors from bulk creates
* set tenant on query so that root calles to Api.aggreagte work as expected (#929)
* properly construct new query in `build/3`
* make bang variant of field aggregates work correctly (#954)
* enforce multitenancy on aggregates (#952)
* fix missing tenant in some bulk contexts (#951)
* Fix places where tenant is not passed along (#950)
### Improvements:
* add `skip_unknown_inputs` for generic actions
* support `allow_nil_input` dsl option in update/destroy (#964)
* allow accepting private attributes
* allow adding non-public attributes to explicit accept lists
* better error messages for private attribute accepting
* use resource api when verifying its presence in a known api
* change `type` argument position in `Ash.Query.calculate` (#959)
* allow simple check to return error tuple (#956)
* skip unknown inputs when managing relationships
* ignore unknown string-keyed inputs beginning with `_`
* support requesting to ignore additional keys
* add `skip_unknown_inputs` option, use it for embeds in unions
* ensure that update defaults are set
* update spark to 2.0
* update reactor to 3.0
* import Ash.Expr in modules where it is used
* require Ash.QUery in modules where it makes sense
* add structs for more context implementations
* ensure selects are applied on destroys
* support custom expressions
* update upgrade guide to include Splode
* only require primary key if resource has actions or fields
* only build schema if resource has actions or fields
* verify primary key in its own verifier
* add `resource/1` builtin check
* better code interface documentation
* support notifiers within actions
* support specifying multiple filters
* add `sortable?` flags to all fields
* support multiple filters on relationships
* support sensitive? on calculations and arguments
* validate resources in inputs to code interface
* update reactor and tests
* don't require domain on relationships if destination has domain
* always choose to cast atomic
* support casting some embeds atomically
* various 3.0 updates, documented in upgrade.md
* ensure non-static dynamic domains works
* add Ash.ToTenant protocol
* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)
* support bulk and atomic operations in code interfaces
## [v3.0.0-rc.12](https://github.com/ash-project/ash/compare/v3.0.0-rc.11...v3.0.0-rc.12) (2024-04-04)
### Breaking Changes:
* 3.0 (#955)
* use `%Ash.NotSelected{}` for unselected values
* default `require_atomic?` to `true`
* raise errors on unknown generic action arguments
* default bulk strategy to `:atomic`
* warnings on `require_atomic?` `true` actions
* revise `Ash.NotSelected` to `Ash.NotLoaded`
* errors on unknown action inputs across the board
* default `api.authorization.authorize` to `:by_default`
* require the api when constructing changesets
* code_interface.define_for -> code_interface.api
* remove registries
* pubsub notifier default to `previous_values?: false`
* requires_original_data? callback defaults to false
* rename Ash.Calculation -> Ash.Resource.Calculation
* improve `Ash.Query.Calculation.new` signature
* anonymous function calculations now take lists and return lists
* make callback contexts into structs
* pass context to builtin lifecycle hook changes
* calculation arguments are now in the `arguments` key of the context
* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`
* make picosat_elixir optional with `simple_sat`
* rename api to domain
* remove `Ash.Changeset.new!`
* deprecate `private?: false` in favor of `public?: true`
* default `default_accept` is now `[]`
* `Ash.CiString.new/1` returns `nil` on `nil` input
* clean up and reorganize `Ash` functions
* remove context-based functionality
* Deprecate calling functions on (domain) api in favor of `Ash`
* add `attribute_public?` and update `attribute_writable?` behavior
* update atomic behaviors, default to invalid
* changeset.filters -> changeset.filter
* remove deprecated functions
* remove and simplify `Ash.Filter.TemplateHelpers`
* keyword lists are no longer special cased in ash expressions
* introduce strict mode to calculations
* reverse order of before action & before transaction hooks
* default read actions are now paginatable
* require explicit accept lists in default actions
* remove Ash.Flow and Ash.Engine
* standardize various exception keys and names
* use `Splode` for errors
* move simple_notifiers to an option instead of a DSL builder
* update spark for better autocomplete, configure autocomplete for key functions
* swap position of sort order and arguments in calculation sorting
* add `include_nil?` aggregate option, and default it to `false`
* errors on unknown inputs for calculations
### Features:
* code interface on the domain
### Bug Fixes:
* properly cast identity keys before comparison
* properly handle multiple paths for checking sortable relationships
* multi-line DSL doc options in `Ash.Reactor`. (#974)
* don't call domain at compile time if its not loaded
* ensure that generic action arguments have proper default for public?
* ensure we don't double-query values after manual actions
* properly handle lists of errors added by validations
* honor `only_when_valid?` on validations in bulk actions
* fix typespec for bulk_create
* ending a policy w/ `authorize_if` had flipped conditional
* handle `sensitive?` option in query aggregate/calculation (#963)
* properly retain input order for embedded attributes
* fix `changing_attributes` check implementation
* properly handle transaction errors from bulk creates
* set tenant on query so that root calles to Api.aggreagte work as expected (#929)
* properly construct new query in `build/3`
* make bang variant of field aggregates work correctly (#954)
* enforce multitenancy on aggregates (#952)
* fix missing tenant in some bulk contexts (#951)
* Fix places where tenant is not passed along (#950)
### Improvements:
* add `skip_unknown_inputs` for generic actions
* support `allow_nil_input` dsl option in update/destroy (#964)
* allow accepting private attributes
* allow adding non-public attributes to explicit accept lists
* better error messages for private attribute accepting
* use resource api when verifying its presence in a known api
* change `type` argument position in `Ash.Query.calculate` (#959)
* allow simple check to return error tuple (#956)
* skip unknown inputs when managing relationships
* ignore unknown string-keyed inputs beginning with `_`
* support requesting to ignore additional keys
* add `skip_unknown_inputs` option, use it for embeds in unions
* ensure that update defaults are set
* update spark to 2.0
* update reactor to 3.0
* import Ash.Expr in modules where it is used
* require Ash.QUery in modules where it makes sense
* add structs for more context implementations
* ensure selects are applied on destroys
* support custom expressions
* update upgrade guide to include Splode
* only require primary key if resource has actions or fields
* only build schema if resource has actions or fields
* verify primary key in its own verifier
* add `resource/1` builtin check
* better code interface documentation
* support notifiers within actions
* support specifying multiple filters
* add `sortable?` flags to all fields
* support multiple filters on relationships
* support sensitive? on calculations and arguments
* validate resources in inputs to code interface
* update reactor and tests
* don't require domain on relationships if destination has domain
* always choose to cast atomic
* support casting some embeds atomically
* various 3.0 updates, documented in upgrade.md
* ensure non-static dynamic domains works
* add Ash.ToTenant protocol
* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)
* support bulk and atomic operations in code interfaces
## [v3.0.0-rc.11](https://github.com/ash-project/ash/compare/v3.0.0-rc.10...v3.0.0-rc.11) (2024-04-04)
### Bug Fixes:
* properly handle multiple paths for checking sortable relationships
* multi-line DSL doc options in `Ash.Reactor`. (#974)
## [v3.0.0-rc.10](https://github.com/ash-project/ash/compare/v3.0.0-rc.9...v3.0.0-rc.10) (2024-04-03)
### Bug Fixes:
* don't call domain at compile time if its not loaded
## [v3.0.0-rc.9](https://github.com/ash-project/ash/compare/v3.0.0-rc.8...v3.0.0-rc.9) (2024-04-03)
### Bug Fixes:
* ensure that generic action arguments have proper default for public?
### Improvements:
* add `skip_unknown_inputs` for generic actions
## [v3.0.0-rc.8](https://github.com/ash-project/ash/compare/v3.0.0-rc.7...v3.0.0-rc.8) (2024-04-03)
### Breaking Changes:
* 3.0 (#955)
* use `%Ash.NotSelected{}` for unselected values
* default `require_atomic?` to `true`
* raise errors on unknown generic action arguments
* default bulk strategy to `:atomic`
* warnings on `require_atomic?` `true` actions
* revise `Ash.NotSelected` to `Ash.NotLoaded`
* errors on unknown action inputs across the board
* default `api.authorization.authorize` to `:by_default`
* require the api when constructing changesets
* code_interface.define_for -> code_interface.api
* remove registries
* pubsub notifier default to `previous_values?: false`
* requires_original_data? callback defaults to false
* rename Ash.Calculation -> Ash.Resource.Calculation
* improve `Ash.Query.Calculation.new` signature
* anonymous function calculations now take lists and return lists
* make callback contexts into structs
* pass context to builtin lifecycle hook changes
* calculation arguments are now in the `arguments` key of the context
* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`
* make picosat_elixir optional with `simple_sat`
* rename api to domain
* remove `Ash.Changeset.new!`
* deprecate `private?: false` in favor of `public?: true`
* default `default_accept` is now `[]`
* `Ash.CiString.new/1` returns `nil` on `nil` input
* clean up and reorganize `Ash` functions
* remove context-based functionality
* Deprecate calling functions on (domain) api in favor of `Ash`
* add `attribute_public?` and update `attribute_writable?` behavior
* update atomic behaviors, default to invalid
* changeset.filters -> changeset.filter
* remove deprecated functions
* remove and simplify `Ash.Filter.TemplateHelpers`
* keyword lists are no longer special cased in ash expressions
* introduce strict mode to calculations
* reverse order of before action & before transaction hooks
* default read actions are now paginatable
* require explicit accept lists in default actions
* remove Ash.Flow and Ash.Engine
* standardize various exception keys and names
* use `Splode` for errors
* move simple_notifiers to an option instead of a DSL builder
* update spark for better autocomplete, configure autocomplete for key functions
* swap position of sort order and arguments in calculation sorting
* add `include_nil?` aggregate option, and default it to `false`
* errors on unknown inputs for calculations
### Features:
* code interface on the domain
### Bug Fixes:
* ensure we don't double-query values after manual actions
* properly handle lists of errors added by validations
* honor `only_when_valid?` on validations in bulk actions
* fix typespec for bulk_create
* ending a policy w/ `authorize_if` had flipped conditional
* handle `sensitive?` option in query aggregate/calculation (#963)
* properly retain input order for embedded attributes
* fix `changing_attributes` check implementation
* properly handle transaction errors from bulk creates
* set tenant on query so that root calles to Api.aggreagte work as expected (#929)
* properly construct new query in `build/3`
* make bang variant of field aggregates work correctly (#954)
* enforce multitenancy on aggregates (#952)
* fix missing tenant in some bulk contexts (#951)
* Fix places where tenant is not passed along (#950)
### Improvements:
* support `allow_nil_input` dsl option in update/destroy (#964)
* allow accepting private attributes
* allow adding non-public attributes to explicit accept lists
* better error messages for private attribute accepting
* use resource api when verifying its presence in a known api
* change `type` argument position in `Ash.Query.calculate` (#959)
* allow simple check to return error tuple (#956)
* skip unknown inputs when managing relationships
* ignore unknown string-keyed inputs beginning with `_`
* support requesting to ignore additional keys
* add `skip_unknown_inputs` option, use it for embeds in unions
* ensure that update defaults are set
* update spark to 2.0
* update reactor to 3.0
* import Ash.Expr in modules where it is used
* require Ash.QUery in modules where it makes sense
* add structs for more context implementations
* ensure selects are applied on destroys
* support custom expressions
* update upgrade guide to include Splode
* only require primary key if resource has actions or fields
* only build schema if resource has actions or fields
* verify primary key in its own verifier
* add `resource/1` builtin check
* better code interface documentation
* support notifiers within actions
* support specifying multiple filters
* add `sortable?` flags to all fields
* support multiple filters on relationships
* support sensitive? on calculations and arguments
* validate resources in inputs to code interface
* update reactor and tests
* don't require domain on relationships if destination has domain
* always choose to cast atomic
* support casting some embeds atomically
* various 3.0 updates, documented in upgrade.md
* ensure non-static dynamic domains works
* add Ash.ToTenant protocol
* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)
* support bulk and atomic operations in code interfaces
## [v3.0.0-rc.7](https://github.com/ash-project/ash/compare/v3.0.0-rc.6...v3.0.0-rc.7) (2024-04-01)
### Bug Fixes:
* fix typespec for bulk_create
### Improvements:
* allow accepting private attributes
## [v3.0.0-rc.6](https://github.com/ash-project/ash/compare/v3.0.0-rc.5...v3.0.0-rc.6) (2024-04-01)
### Breaking Changes:
* 3.0 (#955)
* use `%Ash.NotSelected{}` for unselected values
* default `require_atomic?` to `true`
* raise errors on unknown generic action arguments
* default bulk strategy to `:atomic`
* warnings on `require_atomic?` `true` actions
* revise `Ash.NotSelected` to `Ash.NotLoaded`
* errors on unknown action inputs across the board
* default `api.authorization.authorize` to `:by_default`
* require the api when constructing changesets
* code_interface.define_for -> code_interface.api
* remove registries
* pubsub notifier default to `previous_values?: false`
* requires_original_data? callback defaults to false
* rename Ash.Calculation -> Ash.Resource.Calculation
* improve `Ash.Query.Calculation.new` signature
* anonymous function calculations now take lists and return lists
* make callback contexts into structs
* pass context to builtin lifecycle hook changes
* calculation arguments are now in the `arguments` key of the context
* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`
* make picosat_elixir optional with `simple_sat`
* rename api to domain
* remove `Ash.Changeset.new!`
* deprecate `private?: false` in favor of `public?: true`
* default `default_accept` is now `[]`
* `Ash.CiString.new/1` returns `nil` on `nil` input
* clean up and reorganize `Ash` functions
* remove context-based functionality
* Deprecate calling functions on (domain) api in favor of `Ash`
* add `attribute_public?` and update `attribute_writable?` behavior
* update atomic behaviors, default to invalid
* changeset.filters -> changeset.filter
* remove deprecated functions
* remove and simplify `Ash.Filter.TemplateHelpers`
* keyword lists are no longer special cased in ash expressions
* introduce strict mode to calculations
* reverse order of before action & before transaction hooks
* default read actions are now paginatable
* require explicit accept lists in default actions
* remove Ash.Flow and Ash.Engine
* standardize various exception keys and names
* use `Splode` for errors
* move simple_notifiers to an option instead of a DSL builder
* update spark for better autocomplete, configure autocomplete for key functions
* swap position of sort order and arguments in calculation sorting
* add `include_nil?` aggregate option, and default it to `false`
* errors on unknown inputs for calculations
### Features:
* code interface on the domain
### Bug Fixes:
* ending a policy w/ `authorize_if` had flipped conditional
* handle `sensitive?` option in query aggregate/calculation (#963)
* properly retain input order for embedded attributes
* fix `changing_attributes` check implementation
* properly handle transaction errors from bulk creates
* set tenant on query so that root calles to Api.aggreagte work as expected (#929)
* properly construct new query in `build/3`
* make bang variant of field aggregates work correctly (#954)
* enforce multitenancy on aggregates (#952)
* fix missing tenant in some bulk contexts (#951)
* Fix places where tenant is not passed along (#950)
### Improvements:
* allow adding non-public attributes to explicit accept lists
* better error messages for private attribute accepting
* use resource api when verifying its presence in a known api
* change `type` argument position in `Ash.Query.calculate` (#959)
* allow simple check to return error tuple (#956)
* skip unknown inputs when managing relationships
* ignore unknown string-keyed inputs beginning with `_`
* support requesting to ignore additional keys
* add `skip_unknown_inputs` option, use it for embeds in unions
* ensure that update defaults are set
* update spark to 2.0
* update reactor to 3.0
* import Ash.Expr in modules where it is used
* require Ash.QUery in modules where it makes sense
* add structs for more context implementations
* ensure selects are applied on destroys
* support custom expressions
* update upgrade guide to include Splode
* only require primary key if resource has actions or fields
* only build schema if resource has actions or fields
* verify primary key in its own verifier
* add `resource/1` builtin check
* better code interface documentation
* support notifiers within actions
* support specifying multiple filters
* add `sortable?` flags to all fields
* support multiple filters on relationships
* support sensitive? on calculations and arguments
* validate resources in inputs to code interface
* update reactor and tests
* don't require domain on relationships if destination has domain
* always choose to cast atomic
* support casting some embeds atomically
* various 3.0 updates, documented in upgrade.md
* ensure non-static dynamic domains works
* add Ash.ToTenant protocol
* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)
* support bulk and atomic operations in code interfaces
## [v3.0.0-rc.5](https://github.com/ash-project/ash/compare/v3.0.0-rc.4...v3.0.0-rc.5) (2024-03-30)
### Bug Fixes:
* properly retain input order for embedded attributes
### Improvements:
* better error messages for private attribute accepting
* use resource api when verifying its presence in a known api
## [v3.0.0-rc.4](https://github.com/ash-project/ash/compare/v3.0.0-rc.3...v3.0.0-rc.4) (2024-03-29)
### Bug Fixes:
* fix `changing_attributes` check implementation
### Improvements:
* change `type` argument position in `Ash.Query.calculate` (#959)
* allow simple check to return error tuple (#956)
## [v3.0.0-rc.3](https://github.com/ash-project/ash/compare/v3.0.0-rc.2...v3.0.0-rc.3) (2024-03-28)
### Improvements:
* skip unknown inputs when managing relationships
## [v3.0.0-rc.2](https://github.com/ash-project/ash/compare/v3.0.0-rc.1...v3.0.0-rc.2) (2024-03-28)
### Improvements:
* ignore unknown string-keyed inputs beginning with `_`
* support requesting to ignore additional keys
* add `skip_unknown_inputs` option, use it for embeds in unions
## [v3.0.0-rc.1](https://github.com/ash-project/ash/compare/v3.0.0-rc.0...v3.0.0-rc.1) (2024-03-28)
### Breaking Changes:
* 3.0 (#955)
* use `%Ash.NotSelected{}` for unselected values
* default `require_atomic?` to `true`
* raise errors on unknown generic action arguments
* default bulk strategy to `:atomic`
* warnings on `require_atomic?` `true` actions
* revise `Ash.NotSelected` to `Ash.NotLoaded`
* errors on unknown action inputs across the board
* default `api.authorization.authorize` to `:by_default`
* require the api when constructing changesets
* code_interface.define_for -> code_interface.api
* remove registries
* pubsub notifier default to `previous_values?: false`
* requires_original_data? callback defaults to false
* rename Ash.Calculation -> Ash.Resource.Calculation
* improve `Ash.Query.Calculation.new` signature
* anonymous function calculations now take lists and return lists
* make callback contexts into structs
* pass context to builtin lifecycle hook changes
* calculation arguments are now in the `arguments` key of the context
* remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`
* make picosat_elixir optional with `simple_sat`
* rename api to domain
* remove `Ash.Changeset.new!`
* deprecate `private?: false` in favor of `public?: true`
* default `default_accept` is now `[]`
* `Ash.CiString.new/1` returns `nil` on `nil` input
* clean up and reorganize `Ash` functions
* remove context-based functionality
* Deprecate calling functions on (domain) api in favor of `Ash`
* add `attribute_public?` and update `attribute_writable?` behavior
* update atomic behaviors, default to invalid
* changeset.filters -> changeset.filter
* remove deprecated functions
* remove and simplify `Ash.Filter.TemplateHelpers`
* keyword lists are no longer special cased in ash expressions
* introduce strict mode to calculations
* reverse order of before action & before transaction hooks
* default read actions are now paginatable
* require explicit accept lists in default actions
* remove Ash.Flow and Ash.Engine
* standardize various exception keys and names
* use `Splode` for errors
* move simple_notifiers to an option instead of a DSL builder
* update spark for better autocomplete, configure autocomplete for key functions
* swap position of sort order and arguments in calculation sorting
* add `include_nil?` aggregate option, and default it to `false`
* errors on unknown inputs for calculations
### Features:
* code interface on the domain
### Bug Fixes:
* properly handle transaction errors from bulk creates
* set tenant on query so that root calles to Api.aggreagte work as expected (#929)
* properly construct new query in `build/3`
* make bang variant of field aggregates work correctly (#954)
* enforce multitenancy on aggregates (#952)
* fix missing tenant in some bulk contexts (#951)
* Fix places where tenant is not passed along (#950)
### Improvements:
* ensure that update defaults are set
* update spark to 2.0
* update reactor to 3.0
* import Ash.Expr in modules where it is used
* require Ash.QUery in modules where it makes sense
* add structs for more context implementations
* ensure selects are applied on destroys
* support custom expressions
* update upgrade guide to include Splode
* only require primary key if resource has actions or fields
* only build schema if resource has actions or fields
* verify primary key in its own verifier
* add `resource/1` builtin check
* better code interface documentation
* support notifiers within actions
* support specifying multiple filters
* add `sortable?` flags to all fields
* support multiple filters on relationships
* support sensitive? on calculations and arguments
* validate resources in inputs to code interface
* update reactor and tests
* don't require domain on relationships if destination has domain
* always choose to cast atomic
* support casting some embeds atomically
* various 3.0 updates, documented in upgrade.md
* ensure non-static dynamic domains works
* add Ash.ToTenant protocol
* use `Keyword.put_new` in `Ash.Context.to_opts` (#953)
* support bulk and atomic operations in code interfaces
## [v3.0.0-rc.0](https://github.com/ash-project/ash/compare/v2.21.2...v3.0.0-rc.0) (2024-03-27)
### Breaking Changes:
- use `%Ash.NotSelected{}` for unselected values
- default `require_atomic?` to `true`
- raise errors on unknown generic action arguments
- default bulk strategy to `:atomic`
- warnings on `require_atomic?` `true` actions
- revise `Ash.NotSelected` to `Ash.NotLoaded`
- errors on unknown action inputs across the board
- default `api.authorization.authorize` to `:by_default`
- require the api when constructing changesets
- code_interface.define_for -> code_interface.api
- remove registries
- pubsub notifier default to `previous_values?: false`
- requires_original_data? callback defaults to false
- rename Ash.Calculation -> Ash.Resource.Calculation
- improve `Ash.Query.Calculation.new` signature
- anonymous function calculations now take lists and return lists
- make callback contexts into structs
- pass context to builtin lifecycle hook changes
- calculation arguments are now in the `arguments` key of the context
- remove `aggregates` and `calculations` from `Filter.parse` and `Filter.parse_input`
- make picosat_elixir optional with `simple_sat`
- rename api to domain
- remove `Ash.Changeset.new!/2` (`Ash.Changeset.new/1` is still present)
- deprecate `private?: false` in favor of `public?: true`
- default `default_accept` is now `[]`
- `Ash.CiString.new/1` returns `nil` on `nil` input
- clean up and reorganize `Ash` functions
- remove context-based functionality
- Deprecate calling functions on (domain) api in favor of `Ash`
- add `attribute_public?` and update `attribute_writable?` behavior
- changeset.filters was a map, it is now changeset.filter and is an expression
- remove `Ash.Filter.TemplateHelpers`, all functionality moved to `Ash.Expr`
- keyword lists are no longer special cased in ash expressions
- introduce strict mode to calculations
- reverse order of before action & before transaction hooks
- default read actions are now paginatable with keyset and offset pagination
- move Ash.Flow and Ash.Engine into a separate package
- standardize various exception keys and names
- use `splode` for errors
- move simple_notifiers to an option to `use Ash.Resource` instead of its own DSL
- update spark for better autocomplete, configure autocomplete for key functions
- swap position of sort order and arguments in calculation sorting
- add `include_nil?` aggregate option, and default it to `false`
### Features:
- code interface on the domain
- Policies on the domain
- add Ash.ToTenant protocol
- support for custom expressions
- support action-specific notifiers
- support specifying multiple filters in a read action and relationship
- support sensitive? on calculations and arguments
- support bulk and atomic operations in code interfaces
### Bug Fixes:
- set tenant on query so that root calles to Api.aggreagte work as expected (#929)
- properly construct new query in `build/3`
### Improvements:
- update spark to 2.0
- import Ash.Expr in modules where it is used
- use structs for more context implementations
- only require primary key and build schema if resource has actions or fields
- better generated code interface documentation
- add `sortable?` flags to all fields
- validate resources in inputs to code interface
- don't require domain on relationships if destination resource has domain
## [v2.21.2](https://github.com/ash-project/ash/compare/v2.21.1...v2.21.2) (2024-03-26)
### Bug Fixes:
- don't try to reselect fields when pkeys are missing
## [v2.21.1](https://github.com/ash-project/ash/compare/v2.21.0...v2.21.1) (2024-03-25)
### Improvements:
- detect loaded-through types
## [v2.21.0](https://github.com/ash-project/ash/compare/v2.20.3...v2.21.0) (2024-03-24)
### Features:
- add less_than, greater_than constraints to float, decimal (#936)
- allow providing descriptions to Ash.Type.Enum values (#940)
### Bug Fixes:
- convert `%{__struct__: T}` into `%T{}` (#947)
- corrections for `reload`/`reload!` (#942)
- show that `Policy.Check.strict_check` can return an error tuple (#945)
- remove unnecessary function
- fully expand calculation and aggregate references for applying authorization
- batch_change/3 is never called for updates (#938)
- bulk updates for streams ignore :batch_size
- don't double-encode vector data (#934)
- update set/get/update_context function specs to use maps (#935)
### Improvements:
- support `load` option for create/update/destroy (#946)
- restore old behavior of leveraging in memory values for calculations
- simplify inspect for aggregates
- add `matches` built-in policy check (#937)
## [v2.20.3](https://github.com/ash-project/ash/compare/v2.20.2...v2.20.3) (2024-03-20)
### Bug Fixes:
- ensure calculation context is set on aggregate contents
- set `source_attribute` from `join_relationship` in `many_to_many` (#932)
## [v2.20.2](https://github.com/ash-project/ash/compare/v2.20.1...v2.20.2) (2024-03-19)
### Bug Fixes:
- use proper logic for atomic `present` validations
- Set tenant correctly when reading many_to_many relationship. (#928)
- properly match no_rollback error
- load with right module in `get_rewrites` of `Ash.Type.Struct` (#927)
- ensure that calculation dependency loader combines selects
- properly handle raised errors from async calculations
- ensure depended on attributes are selected in calculations
- properly merge related selects when merging loads
### Improvements:
- cast atomic reference types, makes life easier for data layers
- use `wrap_list` for `where` in `changes.change` (#926)
- don't require Mix to compile an Ash resource
## [v2.20.1](https://github.com/ash-project/ash/compare/v2.20.0...v2.20.1) (2024-03-11)
### Bug Fixes:
- typespec for `action` policy check supports list of action names (#924)
- ensure that message is honored in atomic validations
- don't require actor when constructing aggregate query
### Improvements:
- store casted values even if they are `nil`
- Ash.Reactor: Backport improvements from 3.0 branch.
## [v2.20.0](https://github.com/ash-project/ash/compare/v2.19.14...v2.20.0) (2024-03-05)
### Features:
- Ash.Reactor: Add a Reactor extension that makes working with resources easy. (#683)
- Add `Ash.Reactor` with create support.
### Bug Fixes:
- correct atomic implementation of `present` validation
- track keys that are set to `nil` in changesets, for use in atomic upgrade
- properly cast atomic constraints for integer
- more fixes for atomic length validations
- fix atomic error for string length type validation
- Mimic copying `Ash.Notifier` seems to break the compiler for some reason.
### Improvements:
- do not perform atomic upgrade on destroy actions
- Make undo actions for `update` and `destroy` actions more explicit. (#920)
- Ash.Reactor: Make undo actions for `update` and `destroy` more explicit.
- rename `get` to `read_one` in `Ash.Reactor`
- Add `Ash.Reactor` update support.
- Add `Ash.Reactor` destroy support.
- Ash.Reactor: Support for transactional handling of notifications.
- Ash.Reactor: Add `read` and `get` steps.
- Ash.Reactor: add support for generic actions.
- Add `undo` capability to `create` step.
- transaction and undo working.
- Automatically thread Ash tracers through Reactor.
- Ash.Reactor: Add undo to generic actions.
## [v2.19.14](https://github.com/ash-project/ash/compare/v2.19.13...v2.19.14) (2024-03-01)
### Bug Fixes:
- properly match return type of `Type.new` in expr expansion
## [v2.19.13](https://github.com/ash-project/ash/compare/v2.19.12...v2.19.13) (2024-03-01)
### Improvements:
- cast expression calculations if they don't do it
## [v2.19.12](https://github.com/ash-project/ash/compare/v2.19.11...v2.19.12) (2024-02-29)
### Bug Fixes:
- properly scope expanded calculations
- properly scope expanded calculations
### Improvements:
- aggregate sort replaces query sort
## [v2.19.11](https://github.com/ash-project/ash/compare/v2.19.10...v2.19.11) (2024-02-29)
### Bug Fixes:
- properly add aggregate authorization everywhere
- ensure calculation arguments are not ignored when parsing filters
- properly authorize aggregates
## [v2.19.10](https://github.com/ash-project/ash/compare/v2.19.9...v2.19.10) (2024-02-29)
### Bug Fixes:
- bad reference in atomic validations
- prevent leakage of stale async_limiter's pid (#916)
## [v2.19.9](https://github.com/ash-project/ash/compare/v2.19.8...v2.19.9) (2024-02-26)
### Bug Fixes:
- ensure that policies are applied to aggregates referenced in calculations
- ensure records are returned from bulk actions in atomic upgrades
- handle small logic error in notification sending for bulk actions
## [v2.19.8](https://github.com/ash-project/ash/compare/v2.19.7...v2.19.8) (2024-02-25)
### Bug Fixes:
- ensure actor context is set in filter
- properly handle limit/offset for aggregates
- don't use `Aggregate.new` for builtin aggregates
- merge root query into aggregate queries, don't apply both
### Improvements:
- don't duplicate base filter in aggregates
## [v2.19.7](https://github.com/ash-project/ash/compare/v2.19.6...v2.19.7) (2024-02-24)
### Bug Fixes:
- return proper pattern from select builtin change
## [v2.19.6](https://github.com/ash-project/ash/compare/v2.19.5...v2.19.6) (2024-02-24)
### Bug Fixes:
- properly catch errors in atomic changeset casting
- use `Ash.Changeset.set_context` on changesets
## [v2.19.5](https://github.com/ash-project/ash/compare/v2.19.4...v2.19.5) (2024-02-22)
### Bug Fixes:
- properly fail early on missing actor in policies
- handle `:continue` case in authorizer
- validations run regardless of if the relevant fields are changing
## [v2.19.4](https://github.com/ash-project/ash/compare/v2.19.3...v2.19.4) (2024-02-22)
### Bug Fixes:
- honor soft destroys for atomic bulk destroys
- properly set context on query and changeset
- pass correct options into `Api.stream!` for bulk_destroy
- check attributes after arguments for `present?`
- correct `for_read` calls in update and destroy actions (#907)
## [v2.19.3](https://github.com/ash-project/ash/compare/v2.19.2...v2.19.3) (2024-02-17)
### Bug Fixes:
- properly annotate `run_flow`'s recursive DSL tag
## [v2.19.2](https://github.com/ash-project/ash/compare/v2.19.1...v2.19.2) (2024-02-17)
### Bug Fixes:
- ensure that to-many relationships are loaded as lists
## [v2.19.1](https://github.com/ash-project/ash/compare/v2.19.0...v2.19.1) (2024-02-16)
### Bug Fixes:
- honor `not_found_error?` in `read_one`
### Improvements:
- pass `tenant` to context in custom changes
- `Ash.Context.to_opts` now checks for a `tenant`
## [v2.19.0](https://github.com/ash-project/ash/compare/v2.18.1...v2.19.0) (2024-02-16)
### Features:
- allow using custom delimiters for pubsub topics
- support functions in parse predicates (#874)
- support returning streams from mod calc (#864)
### Bug Fixes:
- remove unneeded code for calculations in a filter (#904)
- restore `not_found_error?` behavior in `Ash.Flow`
- handle cases where no primary keys are present better
- ensure that filters are parsed from policy authorizer ahead of time
- check if query is a query before calling `.__validated_for_action__`
- properly authorize actions in flow
- handle warning about incompatible types (#892)
- properly refer to attributes in `changing_attributes/1`
- remove unneeded code for calculations in a filter (#891)
- evaluate templates to unknown at ref
- handle atomic_ref templates and `changing_attributes/1`
- replace refs for relationships use correct action (#888)
- handle not found case in destroy (#890)
- handle not found case in destroy
- add case where authoriztion did not change query
- properly map sort input and non-input refs in keyset filters
- properly match on invalid query from before_action
- ensure proper context set on atomic upgrade
- fix nil ++ list error in bulk destroy
- ensure we retain the sort order of embedded resources
- retain sort on inputs on casting embedded inputs
- properly get rewrites for embedded types
- ensure after_transaction hooks are always run
- handle records in `Ash.destroy` and `Ash.update`
- pre-template change/validation option in bulk update/destroy
- fix query match error in bulk destroy/update
- don't consider primary key matches with `nil` values
- continue cleanup in `ManagedRelationshipHelpers` (#873)
- fix pattern match error on certain policy conditions
- use primary key for lateral join source in ets
- set right `accessing_from` name in many to many managed create (#868)
- set_tenant on fully atomic changesets
- handle api.can case in authorize_changeset
- properly bypass authorization in atomic update switch-over
- properly set action_type on atomic changesets
- extract relationship filters from pre-authorization query
- retain metadata on updates, atomic and otherwise
- properly load expression -> runtime calculation deps
- ignore `input?` when considering refs equal in filter subset checking
- change names of code interface methods for calculations (#863)
- properly mark manuall created input refs with `input?: true`
- clean vars should handle map vars
- properly merge union loads
- support expression calculations referencing runtime calculations
- set default access type properly
- properly handle the case where all valid scenarios are pruned
- properly prevent the atomic handling of manual update actions
- fix passing extra opts to stream
- properly check if data layer can update_query
- Ash.Type.Float to support min/max constraints(#856)
- add calculations before distinct is applied in data layer query
- properly set index on embedded type array errors
- use correct option for relationship in atomic `relate_actor` (#855)
- only count resources the actor is allowed to see (#853)
- only count resources the actor is allowed to see
- deselect known forbidden fields _after_ query authorization is complete
- `soft?` in destroy action options is a boolean, not an atom (#851)
- load fails because of empty list instead of query (#847)
- don't attempt to derive `destination_attribute_on_join_resource`
- `join_relationship` in many to many can make `through` optional (#846)
- make sure query has action (#844)
- pass in actor to api.can call (#843)
- pass in actor to api.can call
- do not check primary key fields in filter (#839)
- add page opts to context again (#838)
- return errors with query from read action
- properly set defaults on upsert in mnesia
- don't load through attributes twice, but also don't miss any
- handle errors properly from invalid loads
- handle data layer calculations for missing records
- only load through calculations in the correct order
- properly detect cyclic dependencies in calculation runner
- properly annotate in-query calculations as complete for dependency calculation
- fix `present?` and `load_through` bugs
- don't require pagination in incorrect cases
- get tests passing for bulk creates again
### Improvements:
- handle stale update/destroys
- support `authorize_query_with` for bulk updates/destroys
- support `authorize_changeset_with` for bulk updates/destroys
- don't authorize query on synthesized atomic update/destroys
- show field name in NotLoaded inspect
- implement `requires_original_data?` for `Ash.Notifier.PubSub`
- support policies requiring original data
- change atomicity requirements when datalayers don't support it
- add `on_match: :update_join` to `manage_relationship` (#875)
- don't call telemetry when compiling
- various policy behavior cleanups
- add `join_keys` option to `manage_relationship` (#866)
- don't run `check` in cases that require strict checks
- atomic_batches behavior for bulk destroys
- allow strategy selection for bulk actions
- change nested field filtering to be done with `at_path`
- support referencing non-array embeds in input filters
- bulk update in batches if not given a query
- update action should respect load and select
- introduce `require_atomic?`, which defaults to `false` in 2.0, `true` in 3.0
- better support around the mixing of atomic and non atomic changes/validations
- more atomic implementations
- support loading and selecting in bulk operations
- use atomic create actions where possible
- always define `merge_load/4`
- derive `source_attribute_on_join_resource` for many to many
- atomic implementation for `relate_actor`
- include a message along with the non-atomic signifier
- support transactions on bulk destroys
- support transactions in bulk updates
- `count_nils/1` function
- `present/absent` atomic implementation
- add `atomic_ref/1` template helper
- Change typespec of tenant from String.t() to term() (#845)
- handle pkey-less resources when attaching fields
- set lazy defaults when applying changeset attributes
- add `prepend?: true` option to add_change
- optimize embedded resource creation
- rewrite read actions to not use `Ash.Engine` (#836)
## [v2.18.1](https://github.com/ash-project/ash/compare/v2.18.0...v2.18.1) (2024-01-12)
### Bug Fixes:
- use current read action for counting
## [v2.18.0](https://github.com/ash-project/ash/compare/v2.17.24...v2.18.0) (2024-01-12)
### Features:
- Allow `:self` as an option when requesting a relative page from a given page (#833)
### Bug Fixes:
- set tenant attribute in bulk create
### Improvements:
- add `all_tenants?` option to identities
- support Ash.CiString in string_join (#832)
- Add code interface support in Info and Builder. (#828)
- authorize each related join using `join_filters`
## [v2.17.24](https://github.com/ash-project/ash/compare/v2.17.23...v2.17.24) (2024-01-12)
### Bug Fixes:
- fix runtime filter parsing & make last arg optional
- undo incorrect behaviour in runtime evaluation
- fix typespecs and cleanup Ash.Resource.Builder (#827)
### Improvements:
- support `join_filters` in aggregates
## [v2.17.23](https://github.com/ash-project/ash/compare/v2.17.22...v2.17.23) (2024-01-10)
### Bug Fixes:
- authorize aggregate references in calculations
### Improvements:
- error on using `relate_actor` with `:many` cardinality relationships
## [v2.17.22](https://github.com/ash-project/ash/compare/v2.17.21...v2.17.22) (2024-01-09)
### Bug Fixes:
- only put keywords to be interpolated in message in error vars (#821)
- only put keywords to be interpolated in message in error vars
- ignore empty relationship paths when authorizing relationships
- properly build query from opts in aggregates
### Improvements:
- append new entities in `Ash.Resource.Builder`
- simplify aggregate loading, remove `Ash.Engine` from it
- add atomic implementation for builtin `increment` change
- simplify related path authorization, use same tool as aggregates now use
## [v2.17.21](https://github.com/ash-project/ash/compare/v2.17.20...v2.17.21) (2024-01-05)
### Bug Fixes:
- don't consider ash field signals as present
### Improvements:
- refactor filter requests to not use `Ash.Engine`
## [v2.17.20](https://github.com/ash-project/ash/compare/v2.17.19...v2.17.20) (2024-01-04)
### Bug Fixes:
- add required check for stream pagination
### Improvements:
- atomic validation implementations for most validations
- support type operator overloading
- add some atomic implementations
## [v2.17.19](https://github.com/ash-project/ash/compare/v2.17.18...v2.17.19) (2023-12-30)
### Improvements:
- support `:no_rollback` and `return_query/2` callback
- add a `return_query/2` callback for data layers
## [v2.17.18](https://github.com/ash-project/ash/compare/v2.17.17...v2.17.18) (2023-12-29)
### Bug Fixes:
- ensure `__source__` is set on nested embedded attributes
- don't include unknown `authorize?` value in changesets
### Improvements:
- support `{:error, :no_rollback, error}` from data layer callbacks
- always update the join relationship
- use new `api` option in `Ash.Query.for_read/4`
- support using the new `api` option in actions
- accept `api` option in `Ash.Changeset.for_*` functions
- update `Ash` interface for working with new style resources
- better formatting of nested expressions
- helpful errors when misusing `.` in expressions
## [v2.17.17](https://github.com/ash-project/ash/compare/v2.17.16...v2.17.17) (2023-12-23)
### Bug Fixes:
- properly move maps & lists to expression paths
- set tenant when running authorization queries
## [v2.17.16](https://github.com/ash-project/ash/compare/v2.17.15...v2.17.16) (2023-12-23)
### Improvements:
- simplify used aggregate detection
- add `lazy/1` to expressions
- support providing an `input` key in predicate maps
## [v2.17.15](https://github.com/ash-project/ash/compare/v2.17.14...v2.17.15) (2023-12-21)
### Improvements:
- support streaming without keyset pagination
- add callbacks for bulk actions on manual actions
- base case iterative bulk destroy implemented
- add iterative, streaming implementation for bulk updates
- test `ASH_THREE` subprojects
## [v2.17.14](https://github.com/ash-project/ash/compare/v2.17.13...v2.17.14) (2023-12-20)
### Bug Fixes:
- empty milliseconds for utc datetime must have precision 6
- ensure actor & authorize? contexts are set even if not provided
- ignore load/limit/offset in aggregate queries, instead of raising
- properly set `changed?` for all changesets
- honor tenant option on aggregates
- pass proper context into manual actions, remove unnecessary changeset code
- ensure actions always raise an error class
### Improvements:
- detect impending `manage_relationship` calls when checking attribute presence
- add stacktrace context to errors better
- support tenancy on manual actions
- lay the groundwork for fully atomic actions
- rewrite creates to not use `Ash.Engine`
- remove Ash.Engine from update/destroy actions
## [v2.17.13](https://github.com/ash-project/ash/compare/v2.17.12...v2.17.13) (2023-12-14)
### Bug Fixes:
- properly unnested union values passed into `Ash.Type.Union.prepare_change_array`
### Improvements:
- add `Ash.Error.from_json/2`
- accept expressions in `Ash.Query.calculate`
## [v2.17.12](https://github.com/ash-project/ash/compare/v2.17.11...v2.17.12) (2023-12-14)
### Bug Fixes:
- thread context through when setting source constraint on embeds
### Improvements:
- honor field policies in sort expressions
## [v2.17.11](https://github.com/ash-project/ash/compare/v2.17.10...v2.17.11) (2023-12-13)
### Bug Fixes:
- don't create invalid datetimes when scrubbing microseconds
- prepare change with `nil` old value on union type change
- properly prepare union value changes when old & new are union structs
- fix `dump_to_embedded_array`
- test failures and credo issue
### Improvements:
- additional atomic callbacks
- add `warn_on_transaction_hooks?: false` config
- accept an action input in `Ash.Error.to_ash_error/3`
- include tenant in change context
## [v2.17.10](https://github.com/ash-project/ash/compare/v2.17.9...v2.17.10) (2023-12-10)
### Bug Fixes:
- add back in api level verifiers
### Improvements:
- support `nil` values in struct type callbacks
## [v2.17.9](https://github.com/ash-project/ash/compare/v2.17.8...v2.17.9) (2023-12-07)
### Bug Fixes:
- don't apply default limit unless pagination is required
- properly handle union changes for lists of embeds
- honor `default_limit` option in pagination
### Improvements:
- support `embed_nil_values?` for trimming down stored embeds
## [v2.17.8](https://github.com/ash-project/ash/compare/v2.17.7...v2.17.8) (2023-12-06)
### Bug Fixes:
- add back in `builtin_predicate_operators/0`
- various runtime expression evaluation fixes
- honor read action for `Api.get` calls.
- various fixes to calculation expansion and execution
### Improvements:
- use loaded calculation values in expressions
## [v2.17.7](https://github.com/ash-project/ash/compare/v2.17.6...v2.17.7) (2023-11-29)
### Bug Fixes:
- don't eager evaluate composite type construction
### Improvements:
- forbid using resources as types
- add `composite_type/2` and `composite_type/3`
## [v2.17.6](https://github.com/ash-project/ash/compare/v2.17.5...v2.17.6) (2023-11-27)
### Bug Fixes:
- ensure NewType honors new composite callbacks
### Improvements:
- support key aliases for composite types
## [v2.17.5](https://github.com/ash-project/ash/compare/v2.17.4...v2.17.5) (2023-11-27)
### Bug Fixes:
- properly create new vectors from strings
### Improvements:
- add `composite?/1` and `composite_types/1` to `Ash.Type`
## [v2.17.4](https://github.com/ash-project/ash/compare/v2.17.3...v2.17.4) (2023-11-24)
### Bug Fixes:
- properly resolve nested calculation dependencies
- don't apply sort on manage relationship lookup
- don't apply filter on manage relationship lookup if it has a parent expr
- change_attribute failing on a union attribute (#778)
- convert upsert fields before passing to data layer (#777)
## [v2.17.3](https://github.com/ash-project/ash/compare/v2.17.2...v2.17.3) (2023-11-16)
### Bug Fixes:
- use `sort` and `filter` to `synonymous_relationship` checks
## [v2.17.2](https://github.com/ash-project/ash/compare/v2.17.1...v2.17.2) (2023-11-16)
### Bug Fixes:
- properly set actor context on calc expressions in ets data layer
- properly pass authorize? option when loading aggregates
- properly associate lateral join records with `no_attributes? true`
- set aggregate context as well as calculation context in filters
- set actor when computing aggregates that reference calculations
- dialyzer issues on sort
## [v2.17.1](https://github.com/ash-project/ash/compare/v2.17.0...v2.17.1) (2023-11-14)
### Bug Fixes:
- properly return constraints in aggregate get_type
- properly include relationship name message when relationship cannot be found (#770)
## [v2.17.0](https://github.com/ash-project/ash/compare/v2.16.1...v2.17.0) (2023-11-13)
### Features:
- Expand upsert_fields option (#761)
### Bug Fixes:
- properly thread constraints through aggregates
- remove destroyed or unrelated data from the relationship (#767)
- properly strip extra record requested to detect `more?` pages.
- don't attempt to key a struct
### Improvements:
- honor `authorize?: false` option in generic actions
## [v2.16.1](https://github.com/ash-project/ash/compare/v2.16.0...v2.16.1) (2023-10-27)
### Bug Fixes:
- ensure item constraints are passed to array casting
- handle non-list values in `Ash.Actions.Sort.process/4`
- optimize and make `Ash.Type` more consistent
- fix typespec for `include_source/2`
### Improvements:
- detect more parent expressions
## [v2.16.0](https://github.com/ash-project/ash/compare/v2.15.20...v2.16.0) (2023-10-25)
### Features:
- Add unknown argument error when passing an unknown key to an action. (#750)
### Bug Fixes:
- don't reorder global validations/changes
- use latest spark, and new persisters callback
- properly validate belongs_to relationships
- remove invalid usages of `unsafe_change_attribute/3`
- handle builtin types in unions (#752)
### Improvements:
- Add ash_three? feature flag for Ash 3.0 related behaviors.
## [v2.15.20](https://github.com/ash-project/ash/compare/v2.15.19...v2.15.20) (2023-10-24)
### Bug Fixes:
- Change heading levels in generated livebook to have only one H1 (#747)
- code gen interfaces check type first argument (#749)
- properly support `get` in `Ash`
- add back in accidentally removed transformer
- properly determine resource from `Ash.get!/2`
- cast functional default values
- temporarily omit overzealous validation
- properly honor `max_concurrency` option
- support tenant option in api.can
- properly use constraints when casting expression values
- don't re-case constraints in the `type` function
### Improvements:
- add `Ash.Test.assert_has_error` and `Ash.Test.refute_has_error`
- support `to_error_class` taking changeset/query/input
- add "filename" parameter to the livebook generator. (#746)
- support an `api` option to `use Ash.Resource` (#715)
- support an `api` option to `use Ash.Resource`
- add functions to `Ash` for resources w/ configured apis
- default code_interface.define_for to resource's ash api
- cast_input for default values at compile time
- optimize bulk creates where results are not returned
- rewrite bulk creates, optimize changeset functions (#744)
- better storage_type handling, undo function change
## [v2.15.19](https://github.com/ash-project/ash/compare/v2.15.18...v2.15.19) (2023-10-17)
### Bug Fixes:
- handle new type constraints properly
### Improvements:
- properly honor ecto type `init` callback
## [v2.15.18](https://github.com/ash-project/ash/compare/v2.15.17...v2.15.18) (2023-10-17)
### Bug Fixes:
- honor `max_concurrency` option
- handle generic actions in `list_arguments_and_attributes`
- fix type casting for embedded resources
- ensure after action hooks are run on bulk creates
- return records from batches if items have after action hooks
- don't transform errors to changesets when rolling back in with_hooks
- undo previous changes where transactional actions might not roll back
- undo regression where errors weren't wrapped in a changeset
- provide full constraints when determining `Ash.Type.NewType` storage types
- go back to original default timestamp behavior
### Improvements:
- various optimizations and compile time caching
- set default many to many options (#737)
- various performance improvements
- various optimizations for bulk create actions
- support `max_concurrency` option on bulk creates
- better error message on missing identities
- better error message on invalid data passed to `YourApi.load`
- better handling of nested errors in transactions
## [v2.15.17](https://github.com/ash-project/ash/compare/v2.15.16...v2.15.17) (2023-10-11)
### Bug Fixes:
- properly authorize access to query aggregates in all cases
## [v2.15.16](https://github.com/ash-project/ash/compare/v2.15.15...v2.15.16) (2023-10-11)
### Improvements:
- move various transformers to be verifiers
## [v2.15.15](https://github.com/ash-project/ash/compare/v2.15.14...v2.15.15) (2023-10-11)
### Improvements:
- support atomics on upserts
## [v2.15.14](https://github.com/ash-project/ash/compare/v2.15.13...v2.15.14) (2023-10-11)
### Improvements:
- ensure all changesets sent batched to data layer have same set of atomics
## [v2.15.13](https://github.com/ash-project/ash/compare/v2.15.12...v2.15.13) (2023-10-11)
### Bug Fixes:
- move misplaced file and fix typespecs for Ash.DataLayer.Ets.Info
- properly set `invalid_keys` on action inputs
- properly validate required arguments for generic actions
## [v2.15.12](https://github.com/ash-project/ash/compare/v2.15.11...v2.15.12) (2023-10-10)
### Improvements:
- set storage type for citext to `ci_string`
## [v2.15.11](https://github.com/ash-project/ash/compare/v2.15.10...v2.15.11) (2023-10-10)
### Bug Fixes:
- honor `authorize?` option for calls to aggregate
## [v2.15.10](https://github.com/ash-project/ash/compare/v2.15.9...v2.15.10) (2023-10-09)
### Bug Fixes:
- handle `false` values properly when passed to flows
### Improvements:
- support to-one reference paths in calculations
- add `Ash.Sort.expr_sort`. In 3.0 sort should be a macro
## [v2.15.9](https://github.com/ash-project/ash/compare/v2.15.8...v2.15.9) (2023-10-06)
### Bug Fixes:
- properly rollback transactions on returned errors in generic actions
- generate keysets immediately after read action
- prepare_change_array on embedded types needs to handle `nil`
- handle_change_array on embedded types needs to honor `nil`
### Improvements:
- allow overriding `cast_input/2` on `NewType`
## [v2.15.8](https://github.com/ash-project/ash/compare/v2.15.7...v2.15.8) (2023-10-03)
### Bug Fixes:
- don't use `||` when fetching arguments because `false || nil` is `nil`
- handle exceptions in generic actions
- fix types for `min`/`max` constraints in `Type.Float` (#718)
- lower compile time dependencies
- raise cleaner error on missing action in bulk creates
- allow for `ref` to contain nested templates
### Improvements:
- massage changesets & queries in `Ash.Error.to_ash_error/3`
## [v2.15.7](https://github.com/ash-project/ash/compare/v2.15.6...v2.15.7) (2023-09-29)
### Bug Fixes:
- return unions as is if load is empty (#714)
## [v2.15.6](https://github.com/ash-project/ash/compare/v2.15.5...v2.15.6) (2023-09-29)
### Bug Fixes:
- unions, only load through types when loadable
- handle empty list loads
## [v2.15.5](https://github.com/ash-project/ash/compare/v2.15.4...v2.15.5) (2023-09-28)
### Bug Fixes:
- ensure constraints are properly set in map/new_types
### Improvements:
- don't double cast ci strings
## [v2.15.4](https://github.com/ash-project/ash/compare/v2.15.3...v2.15.4) (2023-09-28)
### Bug Fixes:
- only set non-nil values unless **keep_nil** in seed creation
## [v2.15.3](https://github.com/ash-project/ash/compare/v2.15.2...v2.15.3) (2023-09-28)
### Bug Fixes:
- Ash.Seed extracts attributes from the struct now
## [v2.15.2](https://github.com/ash-project/ash/compare/v2.15.1...v2.15.2) (2023-09-28)
### Bug Fixes:
- properly perform field authorization on loaded through types
- usage of `get_by` with `belongs_to` attribute (#712)
## [v2.15.1](https://github.com/ash-project/ash/compare/v2.15.0...v2.15.1) (2023-09-27)
### Bug Fixes:
- static checks with conditions could be overly or insufficiently restrictive
- set field policy opts on field policy conditions
- move `Resource.Transformers.BelongsToSourceField` into entity (#709)
### Improvements:
- add `context` option to `bulk_create`
## [v2.15.0](https://github.com/ash-project/ash/compare/v2.14.21...v2.15.0) (2023-09-27)
### Features:
- expose query or changeset to field policies (#701)
### Bug Fixes:
- don't authorize on identity usage validations
- handle empty batches in bulk create
- update stream_data dependency, as we use the latest version
### Improvements:
- expose max/min constraints on `Ash.Type.Float`
- rework `utc_datetime` to `datetime`
- explicitly validate manual action return types
## [v2.14.21](https://github.com/ash-project/ash/compare/v2.14.20...v2.14.21) (2023-09-25)
### Improvements:
- deprecate old school manual actions
- better UX around nimble options errors
- remove old, now-deprecated config
- add `Ash.Query.around_transaction/2`
## [v2.14.20](https://github.com/ash-project/ash/compare/v2.14.19...v2.14.20) (2023-09-22)
### Bug Fixes:
- revert `:wrap_list` usage for `topic` in PubSub, needs recursion (#702)
## [v2.14.19](https://github.com/ash-project/ash/compare/v2.14.18...v2.14.19) (2023-09-21)
### Bug Fixes:
- more usages of `:wrap_list` type (#700)
- add missing usage of `:default_belongs_to_type` (#699)
### Improvements:
- add `sequence` generator utility
## [v2.14.18](https://github.com/ash-project/ash/compare/v2.14.17...v2.14.18) (2023-09-20)
### Bug Fixes:
- properly wrap [tracer] in Ash.Flow
- use `:wrap_list` type where appropriate (#698)
- `get_by` option can accept a single atom (#697)
- properly handle `nil` values in embedded resources
- ensure that `can` always returns an error when asked
- get type for manual action at compile time
### Improvements:
- make `storage_type` overridable by new_types
- support `map_with_tag` storage mode for `Ash.Union`.
- if no authorizers are set, anyone can do anything
- explicit error on after_action hook mismatch
## [v2.14.17](https://github.com/ash-project/ash/compare/v2.14.16...v2.14.17) (2023-09-15)
### Improvements:
- recommit the dsl cheatsheets, and update ash-ci
- add `allow_nil?` to generic actions, defaults to false
## [v2.14.16](https://github.com/ash-project/ash/compare/v2.14.15...v2.14.16) (2023-09-13)
### Bug Fixes:
- properly handle bubbled up exceptions from type casting
- typo in new tracer setting logic
- properly expose nested errors on unions
### Improvements:
- `set_handled_error/3` for when errors are returned
## [v2.14.15](https://github.com/ash-project/ash/compare/v2.14.14...v2.14.15) (2023-09-13)
### Bug Fixes:
- propertly handle configured list of tracers
## [v2.14.14](https://github.com/ash-project/ash/compare/v2.14.13...v2.14.14) (2023-09-12)
### Improvements:
- support `trace_type?/2` in tracers
- support stacktraces in `set_error`
- support multiple tracers, instead of just one
## [v2.14.13](https://github.com/ash-project/ash/compare/v2.14.12...v2.14.13) (2023-09-12)
### Bug Fixes:
- fix formatting for policies with conditions
- policy mermaid chart fix `forbid_unless` behavior
### Improvements:
- support vector types
## [v2.14.12](https://github.com/ash-project/ash/compare/v2.14.11...v2.14.12) (2023-09-05)
### Improvements:
- Allow resources to opt out of the primary key requirement. (#687)
## [v2.14.11](https://github.com/ash-project/ash/compare/v2.14.10...v2.14.11) (2023-09-04)
### Bug Fixes:
- better handling for negate error messages
## [v2.14.10](https://github.com/ash-project/ash/compare/v2.14.9...v2.14.10) (2023-09-04)
### Improvements:
- raise runtime error on misuse of `negate`
## [v2.14.9](https://github.com/ash-project/ash/compare/v2.14.8...v2.14.9) (2023-09-04)
### Bug Fixes:
- compile before ash tasks
## [v2.14.8](https://github.com/ash-project/ash/compare/v2.14.7...v2.14.8) (2023-09-04)
### Improvements:
- add `ash.reset` and `ash.tear_down`
## [v2.14.7](https://github.com/ash-project/ash/compare/v2.14.6...v2.14.7) (2023-09-04)
### Bug Fixes:
- fix no such action error on create changesets
- remove policy documentation due to compile time links
- show policy conditions, and fix final destination of last policy condition
- include path in unique path for anonymous aggregates
### Improvements:
- show policy mermaid chart in moduledocs
- add `mix ash.generate_policy_chart`
## [v2.14.6](https://github.com/ash-project/ash/compare/v2.14.5...v2.14.6) (2023-09-01)
### Bug Fixes:
- give anonymous aggregates constant names
- sort operator names in keyset (#684)
## [v2.14.5](https://github.com/ash-project/ash/compare/v2.14.4...v2.14.5) (2023-08-31)
### Bug Fixes:
- action.update_default -> field.update_default typo
- ensure that errors/records return the proper value in bulk creates
- properly optimized nested `get_path` calls
- simplify and fix duplicate detection in embedded resources
- better handling of runtime maps & lists
- properly handle `as` option for calculations in calculation dependencies
### Improvements:
- add `Ash.Context.to_opts/1-2`
- add topic docs for atomics
- implement atomics, expression-based changes (#682)
- hide `__order__` and `__lateral_join_source__` on records
## [v2.14.4](https://github.com/ash-project/ash/compare/v2.14.3...v2.14.4) (2023-08-22)
### Bug Fixes:
- handle inline aggregates in calculation resolver
## [v2.14.3](https://github.com/ash-project/ash/compare/v2.14.2...v2.14.3) (2023-08-22)
### Bug Fixes:
- init validations at runtime not compile time
- Ash.Filter: Don't overly constrain related references. (#678)
- handle nil constraints in `cast_input`
- properly handle in-line maps in exprs
- don't cast notloaded/forbidden values at runtime
- add required errors for missing read arguments
- don't evaluate unknown types in basic operators
### Improvements:
- support in-line aggregates
- Set api field for ActionInput when running action (#676)
- make resource's DSL attributes section patchable (#675)
- validate all actions and accept/reject fields at once. (#674)
## [v2.14.2](https://github.com/ash-project/ash/compare/v2.14.1...v2.14.2) (2023-08-17)
### Bug Fixes:
- Enum types only have `storage_type/0` still
- inspecting a query now only shows arguments explicitly set
- don't set attributes or arguments to invalid values
### Improvements:
- storage_type/0 -> storage_type/1
- Ash.Resource.Calculation: set struct defaults. (#673)
- track invalid keys, don't add required errors for them
- properly set path into error instead of on error messages
- expose union errors with path when tag is set
- find all installed extensions by default
## [v2.14.1](https://github.com/ash-project/ash/compare/v2.14.0...v2.14.1) (2023-08-14)
### Bug Fixes:
- handle atomic/string union type identifiers better
- handle empty field policy lists better internally
### Improvements:
- add initial implementation of new mix tasks
- add plural_name
## [v2.14.0](https://github.com/ash-project/ash/compare/v2.13.4...v2.14.0) (2023-08-09)
### Bug Fixes:
- optimized boolean expression building typo
## [v2.13.4](https://github.com/ash-project/ash/compare/v2.13.3...v2.13.4) (2023-08-08)
### Bug Fixes:
- don't optimized in/== predicates across incorrect boolean expressions
- various fixes with runtime evaluation of aggregates
- handle mnesia transaction errors properly
- fix badly formatted error message
- better error message in `validate_related_resource_inclusion`
### Improvements:
- add `from_many?` option to `has_one`
- initialize change opts in bulk actions
## [v2.13.3](https://github.com/ash-project/ash/compare/v2.13.2...v2.13.3) (2023-08-01)
### Bug Fixes:
- handle changeset errors in mnesia transactions
- fix builder for action preparations
### Improvements:
- validate resourcesin apis
- added `round/1` and `round/2` to expressions
- add `new/1` to all ash errors, because its nicer
- allow for `parent/1` expressions to be resolved "later"
- support `parent/1` in relationships
- enrich mnesdia data layer
## [v2.13.2](https://github.com/ash-project/ash/compare/v2.13.1...v2.13.2) (2023-07-22)
### Bug Fixes:
- before/after batch callbacks are no longer broken
## [v2.13.1](https://github.com/ash-project/ash/compare/v2.13.0...v2.13.1) (2023-07-21)
### Improvements:
- remove ecto after compile hook
## [v2.13.0](https://github.com/ash-project/ash/compare/v2.12.1...v2.13.0) (2023-07-21)
### Features:
- validate arg (#662)
- validate argument unequality
- validate argument in
### Bug Fixes:
- try to cast_stored expression calculation results
- read argument value in `ArgumentEquals` validation (#664)
### Improvements:
- add aggregate context when adding aggregates
## [v2.12.1](https://github.com/ash-project/ash/compare/v2.12.0...v2.12.1) (2023-07-19)
### Improvements:
- support `distinct_sort` in `Query.build/2`
- inspect `distinct_sort`
## [v2.12.0](https://github.com/ash-project/ash/compare/v2.11.11...v2.12.0) (2023-07-19)
### Features:
- validate argument equality (#659)
### Bug Fixes:
- `Keyword.fetch` on keywords, fix test name
- allow the query & related fields to be read before authorization status is complete
### Improvements:
- support `distinct_sort`
- use `Comp.equal?` for `actor_attribute_equals` check
## [v2.11.11](https://github.com/ash-project/ash/compare/v2.11.10...v2.11.11) (2023-07-18)
### Bug Fixes:
- only depend on calcs in runtime calcs
### Improvements:
- support distincting on calculations
- support distinct in ets data layer for testing
## [v2.11.10](https://github.com/ash-project/ash/compare/v2.11.9...v2.11.10) (2023-07-18)
### Bug Fixes:
- handle manual relationships where source field doesn't exist
## [v2.11.9](https://github.com/ash-project/ash/compare/v2.11.8...v2.11.9) (2023-07-18)
### Bug Fixes:
- only error on incorrect destination managed relationships when they are resources
### Improvements:
- support the `-` unary operator
## [v2.11.8](https://github.com/ash-project/ash/compare/v2.11.7...v2.11.8) (2023-07-13)
### Improvements:
- add `ForbiddenField` exception
- warn on api missing from config
- support resources directly in API modules
- compile time warning on resources not detected in any apis
## [v2.11.7](https://github.com/ash-project/ash/compare/v2.11.6...v2.11.7) (2023-07-13)
### Improvements:
- `exists` type aggregate
## [v2.11.6](https://github.com/ash-project/ash/compare/v2.11.5...v2.11.6) (2023-07-12)
### Improvements:
- add `at/2` function
## [v2.11.5](https://github.com/ash-project/ash/compare/v2.11.4...v2.11.5) (2023-07-12)
### Bug Fixes:
- incorrect error for casting binary UUID (#653)
- fix and improve policy breakdown logs
- incorrect typespec for `bulk_create/5`. (#646)
### Improvements:
- add `string_split` expression
- add field_policy_bypass
- optimize field selection/loading when possible
- deselect fields we know statically are not visible
## [v2.11.4](https://github.com/ash-project/ash/compare/v2.11.3...v2.11.4) (2023-07-10)
### Bug Fixes:
- add `handle_change/3` and `prepare_change/3` to `Ash.Type.Union` (#642)
## [v2.11.3](https://github.com/ash-project/ash/compare/v2.11.2...v2.11.3) (2023-07-06)
### Bug Fixes:
- properly detect selected attributes for changeset field policies
- run before_action after authorization
### Improvements:
- Add `Negate` validation (#636)
## [v2.11.2](https://github.com/ash-project/ash/compare/v2.11.1...v2.11.2) (2023-07-04)
### Bug Fixes:
- return accumulator to correct state after altering exists
- typo in at_most validation message (#640)
## [v2.11.1](https://github.com/ash-project/ash/compare/v2.11.0...v2.11.1) (2023-07-04)
### Bug Fixes:
- select attributes in load statement
## [v2.11.0](https://github.com/ash-project/ash/compare/v2.11.0-rc.3...v2.11.0) (2023-07-04)
### Bug Fixes:
- don't loan unless we need to for runtime filters
## [v2.11.0-rc.3](https://github.com/ash-project/ash/compare/v2.11.0-rc.2...v2.11.0-rc.3) (2023-06-29)
### Bug Fixes:
- load after all hooks have completed
- don't allow `is_nil` as an expression operator
- proper source field loading on related data
- reselect all selected attributes on action loading
- don't deselect fields on loading for changesets
### Improvements:
- better behavior for invalid filter value errors
## [v2.11.0-rc.2](https://github.com/ash-project/ash/compare/v2.11.0-rc.1...v2.11.0-rc.2) (2023-06-28)
### Features:
- Adds Ash.Changeset around_transaction (#632)
### Bug Fixes:
- select after setting notification data
### Improvements:
- support partial eager evaluation of functions
## [v2.11.0-rc.1](https://github.com/ash-project/ash/compare/v2.11.0-rc.0...v2.11.0-rc.1) (2023-06-24)
### Improvements:
- support specifying calculation as an option
## [v2.11.0-rc.0](https://github.com/ash-project/ash/compare/v2.10.2...v2.11.0-rc.0) (2023-06-23)
### Features:
- add `field_policies`
### Bug Fixes:
- fix field policy expressions
- handle various inconsistencies in runtime expression runner
## [v2.10.2](https://github.com/ash-project/ash/compare/v2.10.1...v2.10.2) (2023-06-22)
### Improvements:
- fix loading w/ only nil values
- add verifier for identity fields. (#626)
- adds verifier for identity fields.
## [v2.10.1](https://github.com/ash-project/ash/compare/v2.10.0...v2.10.1) (2023-06-16)
### Bug Fixes:
- check paginability before streaming
- properly set notification_data from loaded record
- properly handle lazy loaded many to many relationships
- remove duplicate doc for `authorize?` in `Query.for_read_opts` (#623)
- set notification data with loaded result
- honor `not_found_error?: true` opt in code interface get actions (#620)
- typo on keyset refactor
### Improvements:
- fix problems w/ nested loads using relationship load calcs
## [v2.10.0](https://github.com/ash-project/ash/compare/v2.9.29...v2.10.0) (2023-06-14)
### Features:
- generate some action helpers with code interface (#614)
### Bug Fixes:
- ensure attributes for keyset pagination are selected
### Improvements:
- add support for generic actions in `api.can` (#617)
## [v2.9.29](https://github.com/ash-project/ash/compare/v2.9.28...v2.9.29) (2023-06-12)
### Bug Fixes:
- can_load?/1 -> can_load?/2
- handle new load calculations in nested `loading?` checks
## [v2.9.28](https://github.com/ash-project/ash/compare/v2.9.27...v2.9.28) (2023-06-12)
### Bug Fixes:
- don't load `nil` values for runtime types
- properly set `upsert_keys` on bulk upserts
- continue refactor in code interface (#611)
### Improvements:
- properly pass calculation args in keyset filters
## [v2.9.27](https://github.com/ash-project/ash/compare/v2.9.26...v2.9.27) (2023-06-10)
### Bug Fixes:
- honor query limit when streaming
- refactor out some repetition in code interface (#609)
## [v2.9.26](https://github.com/ash-project/ash/compare/v2.9.25...v2.9.26) (2023-06-09)
### Bug Fixes:
- properly handle loading through list types
### Improvements:
- better keyset pagination behavior on first and last pages
## [v2.9.25](https://github.com/ash-project/ash/compare/v2.9.24...v2.9.25) (2023-06-09)
### Bug Fixes:
- handle api missing in code interface calls
## [v2.9.24](https://github.com/ash-project/ash/compare/v2.9.23...v2.9.24) (2023-06-09)
### Bug Fixes:
- pass empty select statement when loading on changesets
- fixes for loading through attributes
- drop proper opts keys when calling api in code interface (#608)
## [v2.9.23](https://github.com/ash-project/ash/compare/v2.9.22...v2.9.23) (2023-06-09)
### Bug Fixes:
- remove validation that was breaking real design patterns
## [v2.9.22](https://github.com/ash-project/ash/compare/v2.9.21...v2.9.22) (2023-06-09)
### Bug Fixes:
- various fixes to data loading
- properly set tenant on nested calculation loads
- properly set calc_name to resource calculation name on aliased calc loads
- check correct calculation dependency for relationship
- don't use `to_string` on the calculation names
- don't need to check current aggs/calcs in filters anymore
- set query tenant on calc dep loads
- copy tenant to step on flow build (#603)
- ensure add_tenant/1 checks the correctkey (#601)
### Improvements:
- optimize `LoadRelationship` calculation
- `Ash.Query.accessing/2` to get a list of fields being accessed
- builting `LoadAttribute` and `LoadRelationship` calculations
- warn on invalid/impossible policies
- support loading through types
- properly set tenant from initial data
## [v2.9.21](https://github.com/ash-project/ash/compare/v2.9.20...v2.9.21) (2023-06-06)
### Bug Fixes:
- properly chain batch to each change in bulk creates
- properly handle failed bulk creates with no errors
### Improvements:
- handle `nil`s in memory the same way sql would have
## [v2.9.20](https://github.com/ash-project/ash/compare/v2.9.19...v2.9.20) (2023-06-05)
### Bug Fixes:
- also do not autogenerate values for optional fields that have a generator (#599)
- rename few error files to match module names (#597)
### Improvements:
- support `changeset.load`
## [v2.9.19](https://github.com/ash-project/ash/compare/v2.9.18...v2.9.19) (2023-06-02)
### Bug Fixes:
- Only create values for attributes that did not get a generator (#595)
- remove field name from string length error message (#594)
- remove field name from string length error message
- remove old unused `Error.Changes.UnknownError`
- do not capitalize ash error messages
- change error kind code for `Ash.Error.Forbidden.Policy`
### Improvements:
- verify reserved calc names, support `as` input
## [v2.9.18](https://github.com/ash-project/ash/compare/v2.9.17...v2.9.18) (2023-05-31)
### Bug Fixes:
- properly load aggregates required for keyset pagination
## [v2.9.17](https://github.com/ash-project/ash/compare/v2.9.16...v2.9.17) (2023-05-31)
### Bug Fixes:
- properly load depended on source attributes
## [v2.9.16](https://github.com/ash-project/ash/compare/v2.9.15...v2.9.16) (2023-05-29)
### Bug Fixes:
- handle pre-hydrated predicates in expressions
- handle `nil` errors on bulk creates
- add `:forbidden` to `error_class`, lowercase code for `Forbidden` (#589)
## [v2.9.15](https://github.com/ash-project/ash/compare/v2.9.14...v2.9.15) (2023-05-27)
### Bug Fixes:
- proper required value validations in bulk creates
- don't use error count in place of errors
### Improvements:
- make `loading?/2` smarter
## [v2.9.14](https://github.com/ash-project/ash/compare/v2.9.13...v2.9.14) (2023-05-26)
### Bug Fixes:
- properly manage relationships on bulk creates
- validations could undo certain changeset changes in bulk creates
- properly upsert on non batchable rows
## [v2.9.13](https://github.com/ash-project/ash/compare/v2.9.12...v2.9.13) (2023-05-25)
### Bug Fixes:
- properly honor the `return_errors?` option
## [v2.9.12](https://github.com/ash-project/ash/compare/v2.9.11...v2.9.12) (2023-05-23)
### Bug Fixes:
- properly wrap errored changesets in bulk creates
- don't notify unless `notify?: true` in bulk creates
- properly wrap errored changesets in `{:error` in bulk creates
### Improvements:
- better support for multiple code interfaces w/ same name
## [v2.9.11](https://github.com/ash-project/ash/compare/v2.9.10...v2.9.11) (2023-05-23)
### Bug Fixes:
- swap `Exception.exception?` for `Kernel.is_exception` (#584)
### Improvements:
- handle bulk transaction errors better
## [v2.9.10](https://github.com/ash-project/ash/compare/v2.9.9...v2.9.10) (2023-05-18)
### Bug Fixes:
- accidental variable shadowing in calculation loading.
- add missing batch_size opt for bulk_create (#581)
## [v2.9.9](https://github.com/ash-project/ash/compare/v2.9.8...v2.9.9) (2023-05-18)
### Bug Fixes:
- errors on casting arrays of unions in newtypes
## [v2.9.8](https://github.com/ash-project/ash/compare/v2.9.7...v2.9.8) (2023-05-17)
### Improvements:
- add unavailable error
## [v2.9.7](https://github.com/ash-project/ash/compare/v2.9.6...v2.9.7) (2023-05-16)
### Bug Fixes:
- don't require `{:data_layer, *}` for custom locks
### Improvements:
- add `get_and_lock/1` builtin change
## [v2.9.6](https://github.com/ash-project/ash/compare/v2.9.5...v2.9.6) (2023-05-15)
### Bug Fixes:
- don't use `:map` as storage type for `Map`
### Improvements:
- Ash.Type.Module: Add `:module` type. (#578)
- handle ci strings in `cast_stored`
- better default overflow logic
- custom stale record error
## [v2.9.5](https://github.com/ash-project/ash/compare/v2.9.4...v2.9.5) (2023-05-08)
### Bug Fixes:
- user proper upsert identity for bulk operations
### Improvements:
- optimistic locking via `changeset.filters`
## [v2.9.4](https://github.com/ash-project/ash/compare/v2.9.3...v2.9.4) (2023-05-04)
### Bug Fixes:
- ecto type of map is just `:map`
## [v2.9.3](https://github.com/ash-project/ash/compare/v2.9.2...v2.9.3) (2023-05-03)
### Bug Fixes:
- unbound variable in schema definition
### Improvements:
- support bulk upserts
## [v2.9.2](https://github.com/ash-project/ash/compare/v2.9.1...v2.9.2) (2023-05-02)
### Bug Fixes:
- fix dialyzer
- proper return value for synthesized bulk creates
- assorted bulk create fixes
- set upsert context from action on create changesets
- handle invalid input in basic actions
### Improvements:
- bulk create improvements, docs
- finishing initial touches on bulk actions
- bulk create actions
- initial support for basic actions
- better messages for missed notifications
- retain stacktraces from task errors
## [v2.9.1](https://github.com/ash-project/ash/compare/v2.9.0...v2.9.1) (2023-05-01)
### Bug Fixes:
- handle map relationship data in lateral join
## [v2.9.0](https://github.com/ash-project/ash/compare/v2.8.1...v2.9.0) (2023-05-01)
### Features:
- `attribute_in/2` builtin validation
### Bug Fixes:
- proper source path for lateral joined relationships
### Improvements:
- error if relationship.api is not an Ash.Api
## [v2.8.1](https://github.com/ash-project/ash/compare/v2.8.0...v2.8.1) (2023-04-28)
### Improvements:
- more typespec fixes
- support lock option on read
- data layer can? might get a dsl, not a resource
## [v2.8.0](https://github.com/ash-project/ash/compare/v2.7.1...v2.8.0) (2023-04-28)
### Features:
- add `Api.stream!/1`
### Bug Fixes:
- set flow argument defaults
- handle join relationship in different api
- don't warn on being managed from attribute changing
- don't initially require attributes for belongs to relationships being managed
- simple equality filter should not traverse `or`s
### Improvements:
- introduce basic locking
- include resource validations by default
- validate explicit api configurations, with good error messages
## [v2.7.1](https://github.com/ash-project/ash/compare/v2.7.0...v2.7.1) (2023-04-21)
### Bug Fixes:
- more fixes to optimized boolean filter building
## [v2.7.0](https://github.com/ash-project/ash/compare/v2.6.31...v2.7.0) (2023-04-20)
### Features:
- add `fields/1` and `public_fields/1` to Ash.Resource.Info (#569)
### Bug Fixes:
- don't optimize across `or` boundaries
- handle calculation deps w/ multiple nested relationship paths
- only do tenant things in ETS if strategy is `:context`
- add the spark function version of calculations
- proper error message on invalid inline function calculation
- Add tenant attribute to identity attributes on upserts (#565)
### Improvements:
- Add upserts option to flow's create step (#566)
- Change storage type of Ash.Type.Term to :binary (#561)
- automatically gather up notifications
## [v2.6.31](https://github.com/ash-project/ash/compare/v2.6.30...v2.6.31) (2023-04-11)
### Bug Fixes:
- properly require attributes on creates
## [v2.6.30](https://github.com/ash-project/ash/compare/v2.6.29...v2.6.30) (2023-04-10)
### Bug Fixes:
- don't require values if a changeset result has been set
- properly return errors on invalid calculation arguments
- user unpaginated_read for `read_one`
- handle strings better in refs
- consider strings in `ref`
### Improvements:
- add build_action_metadata to resource builder
- add `Ash.merge_context/1` and `Ash.update_context/1`
- add constraints to maps (#556)
## [v2.6.29](https://github.com/ash-project/ash/compare/v2.6.28...v2.6.29) (2023-04-04)
### Bug Fixes:
- various ash flow return value fixes
- Fix set_new_attribute by adding missing option to set_attribute (#553)
- show context on all errors
- include error context in top level of errors
### Improvements:
- validate returnable steps in flow returns
- update touched_resources logic
- Add :field option to relate_actor change (#546)
## [v2.6.28](https://github.com/ash-project/ash/compare/v2.6.27...v2.6.28) (2023-04-03)
### Bug Fixes:
- properly handle nested calculation selects
- fix typespecs and `not_found_error?` code interface option
- typespec support `Expr.t()` in calculation builder
- remove bad default for struct constraint
- use values when already loading aggregates
### Improvements:
- thread context through when loading data
- update spark to fix deeply nested DSLs
- read_uses_flow?: Build stub for `Ash.Actions.Flows.Read`.
- properly set related resource
- simpler required attributes behavior
- add :subfield option to relates_to_actor_via (#540)
- add `accessing_from/2` builtin check
- rewrite calculation loader
- add `{set,update,get}_context` to `Ash.PlugHelpers` (#534)
- improve compile times with ðª
- fix action typespecs
- add option `set_when_nil?` to builtin change `set_attribute` (#528)
## [v2.6.27](https://github.com/ash-project/ash/compare/v2.6.26...v2.6.27) (2023-03-22)
### Improvements:
- add `update_actor` to `Ash.Plughelpers` (#532)
## [v2.6.26](https://github.com/ash-project/ash/compare/v2.6.25...v2.6.26) (2023-03-21)
### Bug Fixes:
- use proper arguments for aggregating queries
## [v2.6.25](https://github.com/ash-project/ash/compare/v2.6.24...v2.6.25) (2023-03-21)
### Improvements:
- add `skip_global_validations?` option for actions
## [v2.6.24](https://github.com/ash-project/ash/compare/v2.6.23...v2.6.24) (2023-03-21)
### Bug Fixes:
- datetime_add was actually datetime_subtract in elixir
- prevent exception when describing some checks (#531)
### Improvements:
- Add `get_by` option to read actions. (#530)
## [v2.6.23](https://github.com/ash-project/ash/compare/v2.6.22...v2.6.23) (2023-03-21)
### Improvements:
- builder & typespec improvements
## [v2.6.22](https://github.com/ash-project/ash/compare/v2.6.21...v2.6.22) (2023-03-20)
### Bug Fixes:
- properly handle multi-resource transaction return values
- various fixes in aggregate authorization behavior
- use builtin short names for builtin type helper
- properly set builtin types
### Improvements:
- better resource detection of transactions in `Ash.Flow`
- better formatting for branches in flow charts
- add `:read_action` and `:authorize?` configurations for resource aggregates
- Add `before_action/1` and `after_action/1` to `Ash.Resource.Preparations.Builtins`. (#526)
## [v2.6.21](https://github.com/ash-project/ash/compare/v2.6.20...v2.6.21) (2023-03-13)
### Improvements:
- add `Ash.Type.NewType`
- add `:unknown` for all potential facts
- optimize policy check running with laziness
- don't select when running policy queries
## [v2.6.20](https://github.com/ash-project/ash/compare/v2.6.19...v2.6.20) (2023-03-10)
### Bug Fixes:
- remove pre_flight expression checking
### Improvements:
- Add builtin changes for lifecycle hooks. (#523)
## [v2.6.19](https://github.com/ash-project/ash/compare/v2.6.18...v2.6.19) (2023-03-09)
### Bug Fixes:
- properly return `false` on forbidden errors
## [v2.6.18](https://github.com/ash-project/ash/compare/v2.6.17...v2.6.18) (2023-03-08)
### Improvements:
- add `Api.can?` and `Api.can`
## [v2.6.17](https://github.com/ash-project/ash/compare/v2.6.16...v2.6.17) (2023-03-06)
### Bug Fixes:
- add `actor` back to transaction metadata
### Improvements:
- add `delay_global_validations?` action option
## [v2.6.16](https://github.com/ash-project/ash/compare/v2.6.15...v2.6.16) (2023-03-03)
### Bug Fixes:
- calc loading in keyset pagination
### Improvements:
- add new date expressions
## [v2.6.15](https://github.com/ash-project/ash/compare/v2.6.14...v2.6.15) (2023-02-27)
### Bug Fixes:
- properly handle allow_nil fields in keyset pagination
## [v2.6.14](https://github.com/ash-project/ash/compare/v2.6.13...v2.6.14) (2023-02-24)
### Bug Fixes:
- don't reselect fields automatically
- ensure data layer is compiled
### Improvements:
- introduce `reselect_all?` option for loading
## [v2.6.13](https://github.com/ash-project/ash/compare/v2.6.12...v2.6.13) (2023-02-24)
### Bug Fixes:
- only use `resource_to_query/2`
## [v2.6.12](https://github.com/ash-project/ash/compare/v2.6.11...v2.6.12) (2023-02-24)
### Bug Fixes:
- support `nil` values in `dump_to_native`
- properly support calc expansion in policies
- support `nil` cast for resource type
### Improvements:
- support record's as calculate arguments
- include actor in all calculation context
## [v2.6.11](https://github.com/ash-project/ash/compare/v2.6.10...v2.6.11) (2023-02-23)
### Bug Fixes:
- allow argument references in policies
### Improvements:
- don't eager load sort data
## [v2.6.10](https://github.com/ash-project/ash/compare/v2.6.9...v2.6.10) (2023-02-21)
### Bug Fixes:
- properly handle list args for functions
- set query context from `before_action` hooks into initial query
- set context into `initial_query`
### Improvements:
- Implement string_join expr function (#515)
## [v2.6.9](https://github.com/ash-project/ash/compare/v2.6.8...v2.6.9) (2023-02-21)
### Bug Fixes:
- make resource diagram task recursive
- use `private.internal?` to bypass require_actor?
- properly call `run_aggregate_query_with_lateral_join`
### Improvements:
- add `force` variations of set arguments
## [v2.6.8](https://github.com/ash-project/ash/compare/v2.6.7...v2.6.8) (2023-02-16)
### Bug Fixes:
- don't overwrite keyset when loading data
## [v2.6.7](https://github.com/ash-project/ash/compare/v2.6.6...v2.6.7) (2023-02-16)
### Bug Fixes:
- properly return `{:ok, page}` in all cases
## [v2.6.6](https://github.com/ash-project/ash/compare/v2.6.5...v2.6.6) (2023-02-16)
### Bug Fixes:
- authorize?: true by default on flows, pass actor through
- pass actor into engine
## [v2.6.5](https://github.com/ash-project/ash/compare/v2.6.4...v2.6.5) (2023-02-15)
### Bug Fixes:
- properly handle optional args in code interface
## [v2.6.4](https://github.com/ash-project/ash/compare/v2.6.3...v2.6.4) (2023-02-15)
### Bug Fixes:
- handle cases where union type is already atom
- various union fixes
- make `depend_on_resources` more reliable
- use `load/3` for builtin concat calc
### Improvements:
- Add error message when page is added but pagination is not enabled (#511)
- add union type and some tests around it
- add union short name
- add union type
- better operator type casting and expression fixes
## [v2.6.3](https://github.com/ash-project/ash/compare/v2.6.2...v2.6.3) (2023-02-12)
### Bug Fixes:
- fix non-optional pagination
### Improvements:
- add warning on usage of transaction hooks when in a surrounding transaction
- add before_transaction and after_transaction
## [v2.6.2](https://github.com/ash-project/ash/compare/v2.6.1...v2.6.2) (2023-02-10)
### Bug Fixes:
- pagination behavior is incorrect
- `nil` as page_opts is acceptable
- fix aggregate.uniq?
## [v2.6.1](https://github.com/ash-project/ash/compare/v2.6.0...v2.6.1) (2023-02-09)
### Bug Fixes:
- Type error: Suggest custom short type names as well (#508)
### Improvements:
- support uniq? for `count`/`list` attributes
## [v2.6.0](https://github.com/ash-project/ash/compare/v2.5.16...v2.6.0) (2023-02-05)
### Features:
- initial (and slightly experimental) Api.aggregate support
### Bug Fixes:
- handle `{:ref, ...}` tuple in static syntax
- various fast follows to api aggregate functions
- pattern match problem in aggregate action
- properly handle nested array type constraint validation
### Improvements:
- update spark for latest doc improvements
- better description of `action_type` check
- add more builders
- stop running preparations if one of them returns an error
## [v2.5.16](https://github.com/ash-project/ash/compare/v2.5.15...v2.5.16) (2023-02-01)
### Bug Fixes:
- load lazily after action when results are set
- fix typespec for `Ash.set_tenant/1`
## [v2.5.15](https://github.com/ash-project/ash/compare/v2.5.14...v2.5.15) (2023-01-31)
### Bug Fixes:
- set proper query aggregate when fetching aggregate values
## [v2.5.14](https://github.com/ash-project/ash/compare/v2.5.13...v2.5.14) (2023-01-30)
### Improvements:
- registry resource validations transformers -> verifiers
- better error message on unknown relationship
## [v2.5.13](https://github.com/ash-project/ash/compare/v2.5.12...v2.5.13) (2023-01-30)
### Bug Fixes:
- use destination query for aggregates, join auth to come later
- check `changeset.valid?` properly on destroys
- properly halt on action errors in `before_action` hooks
### Improvements:
- no async loads except when loading on initial data
- support length constraints on array embeds
## [v2.5.12](https://github.com/ash-project/ash/compare/v2.5.11...v2.5.12) (2023-01-29)
### Improvements:
- simplify aggregate loading, fix bug with auth query resource
## [v2.5.11](https://github.com/ash-project/ash/compare/v2.5.10...v2.5.11) (2023-01-28)
### Improvements:
- support `{:ignore, changeset}` from error handlers
- add read action metadata
## [v2.5.10](https://github.com/ash-project/ash/compare/v2.5.9...v2.5.10) (2023-01-27)
### Improvements:
- upgrade to latest spark for compile time improvements
- improve compile times by reorienting some compile deps
- add relationships to underlying ecto schemas for better escape hatches
- reselect explicitly selected queries on reload
## [v2.5.9](https://github.com/ash-project/ash/compare/v2.5.8...v2.5.9) (2023-01-22)
### Bug Fixes:
- properly surface errors from embedded attributes
- use original pkey for ets upsert lookup
## [v2.5.8](https://github.com/ash-project/ash/compare/v2.5.7...v2.5.8) (2023-01-20)
### Bug Fixes:
- properly prepend the prefix to the topic
## [v2.5.7](https://github.com/ash-project/ash/compare/v2.5.6...v2.5.7) (2023-01-20)
### Bug Fixes:
- properly load depended on aggregates
- properly handle functional manual creates
- Use proper options in `confirm` change.
- only pass action name in Ash.Changeset.for_action (#476)
- properly set the context option on changesets
- return proper value from validation
### Improvements:
- include value in invalid error messages
- cleaner inspect for calculations
- add `set_result` for conditional manual actions/caching
- update docs to new links formats for ash_hq (#483)
- add nil return type to api get/3, read_one/2 and read_one!/2 (#482)
- don't load dependencies for calcs in query
- add `action_is/1` builtin validation
- more compile time optimizations
## [v2.5.6](https://github.com/ash-project/ash/compare/v2.5.5...v2.5.6) (2023-01-19)
### Bug Fixes:
- properly load depended on aggregates
- properly handle functional manual creates
- Use proper options in `confirm` change.
- only pass action name in Ash.Changeset.for_action (#476)
- properly set the context option on changesets
- return proper value from validation
### Improvements:
- cleaner inspect for calculations
- add `set_result` for conditional manual actions/caching
- update docs to new links formats for ash_hq (#483)
- add nil return type to api get/3, read_one/2 and read_one!/2 (#482)
- don't load dependencies for calcs in query
- add `action_is/1` builtin validation
- more compile time optimizations
## [v2.5.5](https://github.com/ash-project/ash/compare/v2.5.4...v2.5.5) (2023-01-19)
### Bug Fixes:
- properly handle functional manual creates
- Use proper options in `confirm` change.
- only pass action name in Ash.Changeset.for_action (#476)
- properly set the context option on changesets
- return proper value from validation
### Improvements:
- add `set_result` for conditional manual actions/caching
- update docs to new links formats for ash_hq (#483)
- add nil return type to api get/3, read_one/2 and read_one!/2 (#482)
- don't load dependencies for calcs in query
- add `action_is/1` builtin validation
- more compile time optimizations
## [v2.5.4](https://github.com/ash-project/ash/compare/v2.5.3...v2.5.4) (2023-01-18)
### Bug Fixes:
- Use proper options in `confirm` change.
- only pass action name in Ash.Changeset.for_action (#476)
- properly set the context option on changesets
- return proper value from validation
### Improvements:
- update docs to new links formats for ash_hq (#483)
- add nil return type to api get/3, read_one/2 and read_one!/2 (#482)
- don't load dependencies for calcs in query
- add `action_is/1` builtin validation
- more compile time optimizations
## [v2.5.3](https://github.com/ash-project/ash/compare/v2.5.2...v2.5.3) (2023-01-18)
### Bug Fixes:
- Use proper options in `confirm` change.
- only pass action name in Ash.Changeset.for_action (#476)
- properly set the context option on changesets
- return proper value from validation
### Improvements:
- update docs to new links formats for ash_hq (#483)
- add nil return type to api get/3, read_one/2 and read_one!/2 (#482)
- don't load dependencies for calcs in query
- add `action_is/1` builtin validation
- more compile time optimizations
## [v2.5.2](https://github.com/ash-project/ash/compare/v2.5.1...v2.5.2) (2023-01-12)
### Bug Fixes:
- properly set the context option on changesets
- return proper value from validation
### Improvements:
- add `action_is/1` builtin validation
- more compile time optimizations
## [v2.5.1](https://github.com/ash-project/ash/compare/v2.5.0...v2.5.1) (2023-01-11)
### Bug Fixes:
- return proper value from validation
### Improvements:
- more compile time optimizations
## [v2.5.0](https://github.com/ash-project/ash/compare/v2.5.0-rc.6...v2.5.0) (2023-01-11)
## [v2.5.0-rc.6](https://github.com/ash-project/ash/compare/v2.5.0-rc.5...v2.5.0-rc.6) (2023-01-09)
### Bug Fixes:
- set interface args to empty list by default
## [v2.5.0-rc.5](https://github.com/ash-project/ash/compare/v2.5.0-rc.4...v2.5.0-rc.5) (2023-01-09)
### Bug Fixes:
- properly zip calculation results with primary keys
### Improvements:
- add `Api.calculate/3` and `define_calculation` code interface builder
## [v2.5.0-rc.4](https://github.com/ash-project/ash/compare/v2.5.0-rc.3...v2.5.0-rc.4) (2023-01-06)
### Bug Fixes:
- more fixes for synonymous relationship paths
## [v2.5.0-rc.3](https://github.com/ash-project/ash/compare/v2.5.0-rc.2...v2.5.0-rc.3) (2023-01-06)
### Bug Fixes:
- stop seeing incorrect relationships as synonymous
## [v2.5.0-rc.2](https://github.com/ash-project/ash/compare/v2.5.0-rc.1...v2.5.0-rc.2) (2023-01-05)
### Bug Fixes:
- various filter & expression fixes
- handle aggregate defaults when evaluating expressions
## [v2.5.0-rc.1](https://github.com/ash-project/ash/compare/v2.5.0-rc.0...v2.5.0-rc.1) (2023-01-05)
### Bug Fixes:
- remove all URI encoding/decoding from core for keysets
### Improvements:
- rename `this` to `parent` for clarity
## [v2.5.0-rc.0](https://github.com/ash-project/ash/compare/v2.4.30...v2.5.0-rc.0) (2023-01-04)
### Features:
- add `this/1` for use inside `exists/2` (and other places eventually)
### Bug Fixes:
- various fixes to expression syntax
- encode the keyset for display in a URI automatically
- fix authorize? method (#472)
- calculations depending on aggregates were not including those dependencies properly
- load types marked with `cast_in_query? false` at runtime
- proper support for nested expressions in calculations
- typo in `cast_in_query?`
- allow lists in expr syntax
### Improvements:
- warn on potentially incompatible relationship attributes
- add `default_belongs_to_type` configuration
- loading an attribute is now equivalent to `ensure_selected`
- support module attributes in exprs
- Add Ash.Error.Invalid.TenantRequired error (#471)
- add constraints to query calculations
- cast_in_query? takes constraints
- support for calculations in aggregate fields
## [v2.4.30](https://github.com/ash-project/ash/compare/v2.4.29...v2.4.30) (2022-12-27)
### Bug Fixes:
- calculation builder using wrong builder
### Improvements:
- add `simple_notifiers` as a compile time optimization
## [v2.4.29](https://github.com/ash-project/ash/compare/v2.4.28...v2.4.29) (2022-12-27)
### Bug Fixes:
- handle `nil` constraints in array
- only start transactions for resources not already in one
### Improvements:
- add calculations to builder
## [v2.4.28](https://github.com/ash-project/ash/compare/v2.4.27...v2.4.28) (2022-12-23)
### Bug Fixes:
- import builtins at the action level, not the section level
- fix broken default behavior around managing relationships.
### Improvements:
- fix tests to handle new defaults
- optimize strict checks
## [v2.4.27](https://github.com/ash-project/ash/compare/v2.4.26...v2.4.27) (2022-12-21)
### Bug Fixes:
- properly include module in doc links
- add test for string generator, and fix it
- only allow `nil` in appropriate circumstances in generator
- respect selects in related_query (#464)
- use action name not struct for embedded generators
- use create generators for embedded types
- support dependencies on pruned branch steps
- ensure type compiled for generator
### Improvements:
- fix decimal generator to only compare with floats at generation
- filter min_length strings in generators
## [v2.4.26](https://github.com/ash-project/ash/compare/v2.4.25...v2.4.26) (2022-12-15)
### Improvements:
- update spark
## [v2.4.25](https://github.com/ash-project/ash/compare/v2.4.24...v2.4.25) (2022-12-15)
### Bug Fixes:
- transaction steps use `failure_mode: :stop`
### Improvements:
- better expression detection
## [v2.4.24](https://github.com/ash-project/ash/compare/v2.4.23...v2.4.24) (2022-12-10)
### Improvements:
- more dependable notifications, support custom notifications better
## [v2.4.23](https://github.com/ash-project/ash/compare/v2.4.22...v2.4.23) (2022-12-08)
### Improvements:
- add more transaction types
## [v2.4.22](https://github.com/ash-project/ash/compare/v2.4.21...v2.4.22) (2022-12-08)
### Bug Fixes:
- depend on latest spark
- different formats for extensions
### Improvements:
- add `:struct` (`Ash.Type.struct`) type
## [v2.4.21](https://github.com/ash-project/ash/compare/v2.4.20...v2.4.21) (2022-12-08)
### Bug Fixes:
- don't lock specific nimble options version
### Improvements:
- replace doc links in sidebar also
- better doc replacement behavior
- dep updates & new aggregate types avg/min/max/custom
## [v2.4.20](https://github.com/ash-project/ash/compare/v2.4.19...v2.4.20) (2022-12-07)
### Bug Fixes:
- more matching fixes on manual relationships
- handle manual relationship load results when building query
### Improvements:
- only set `defaults` when attribute is actually set
- Pass context into query and changeset for\_... functions. (#460)
## [v2.4.19](https://github.com/ash-project/ash/compare/v2.4.18...v2.4.19) (2022-12-04)
### Improvements:
- set context once, early
## [v2.4.18](https://github.com/ash-project/ash/compare/v2.4.17...v2.4.18) (2022-12-01)
### Bug Fixes:
- set proper types in transaction reasons
## [v2.4.17](https://github.com/ash-project/ash/compare/v2.4.16...v2.4.17) (2022-12-01)
### Improvements:
- support data layers implementing transaction level hooks
## [v2.4.16](https://github.com/ash-project/ash/compare/v2.4.15...v2.4.16) (2022-11-30)
### Bug Fixes:
- properly authorize manage relationship calls
### Improvements:
- don't run calculation queries if no records were returned
- don't run queries with `limit: 0`
- more readable flow charts
- `not_found_error?` option on `get?: true` `read` flow steps
## [v2.4.15](https://github.com/ash-project/ash/compare/v2.4.14...v2.4.15) (2022-11-29)
### Improvements:
- add `not_found_error?` option to interface builder and when calling
## [v2.4.14](https://github.com/ash-project/ash/compare/v2.4.13...v2.4.14) (2022-11-29)
### Bug Fixes:
- properly handle arguments with default values in code interface
## [v2.4.13](https://github.com/ash-project/ash/compare/v2.4.12...v2.4.13) (2022-11-29)
### Bug Fixes:
- don't raise a backwards incompatible error message on certian changeset functions
- properly apply managed relationships on manual actions
- properly pass `resource` option in filter policies
## [v2.4.12](https://github.com/ash-project/ash/compare/v2.4.11...v2.4.12) (2022-11-25)
### Bug Fixes:
- don't revisit nodes in the ash engine
- properly map to `:destroy` step names
- handle `Ash.Flow.Step.Destroy` in path matchers
- resolve issue with `authorize_unless` and filter checks
- fix pattern match error in manage relationship reduce
### Improvements:
- optimize various solver boolean optimizations
- more comprehensively remove unnecessary clauses
- prevent changing attributes and arguments after action validation
## [v2.4.11](https://github.com/ash-project/ash/compare/v2.4.10...v2.4.11) (2022-11-22)
### Bug Fixes:
- fix typespec for Api.Info.trace_name/3
### Improvements:
- add error context to error creation / normalisation (#440)
- update hexdocs processor to link guides on hexdocs
## [v2.4.10](https://github.com/ash-project/ash/compare/v2.4.9...v2.4.10) (2022-11-21)
### Improvements:
- return invalid primary key errors for `Api.get` when the input can't be cast
- much more readable errors when building loads
- better check module validation
## [v2.4.9](https://github.com/ash-project/ash/compare/v2.4.8...v2.4.9) (2022-11-21)
### Bug Fixes:
- reselect relationship source fields when loading relationships
- make plug an optional dependency of Ash
## [v2.4.8](https://github.com/ash-project/ash/compare/v2.4.7...v2.4.8) (2022-11-19)
### Bug Fixes:
- fix `where` and `or_where` implementation
## [v2.4.7](https://github.com/ash-project/ash/compare/v2.4.6...v2.4.7) (2022-11-19)
### Improvements:
- add `where` and `or_where` to expr
## [v2.4.6](https://github.com/ash-project/ash/compare/v2.4.5...v2.4.6) (2022-11-19)
### Improvements:
- mark manual action modules as modules
## [v2.4.5](https://github.com/ash-project/ash/compare/v2.4.4...v2.4.5) (2022-11-19)
### Bug Fixes:
- properly pass a map to manual action context
- destroy action types default to accepts [] (#453)
## [v2.4.4](https://github.com/ash-project/ash/compare/v2.4.3...v2.4.4) (2022-11-18)
### Bug Fixes:
- various typespec/build fixes
- handle tuples properly in some cases in expression syntax
- Add missing `[:ash, :query]` telemetry (#451)
### Improvements:
- improve runtime expression running
- add default description for filter checks
- validate that modules exist and are documented when referenced
## [v2.4.3](https://github.com/ash-project/ash/compare/v2.4.2...v2.4.3) (2022-11-15)
### Bug Fixes:
- don't incur compile time dependency for resources used as types
- allow for not-yet-compiled resources as Ash types
- properly raise error on invalid type.
### Improvements:
- optimize sat solving
## [v2.4.2](https://github.com/ash-project/ash/compare/v2.4.1...v2.4.2) (2022-11-03)
### Bug Fixes:
- properly set error vars with list constraints
- when creating changesets/queries that already have arguments, revalidate arguments
### Improvements:
- update to latest spark
- support statically configured upsert actions
- add more builders
## [v2.4.1](https://github.com/ash-project/ash/compare/v2.4.0...v2.4.1) (2022-10-31)
### Bug Fixes:
- fix depend on resources to depend on each resource
- allow references on both sides of `in`
- properly upsert all explicitly changed fields
- traverse maps for `template_references_actor?/1`
### Improvements:
- replace templates in change/preparation/validation opts
## [v2.4.0](https://github.com/ash-project/ash/compare/v2.3.0...v2.4.0) (2022-10-31)
### Features:
- support anonymous functions in DSL
These include:
- custom create/read/update/destroy actions
- changes
- preparations
- validations
- calculations
- manual relationships
See the respective DSL guides for more.
### Bug Fixes:
- don't add required belongs_to error if changeset is invalid (#437)
- don't lazy load when managing relationships
### Improvements:
- support anonymous functions for various behaviour based options
- add more ergonomic manual action definitions.
- more additions to the resource builder, update spark
## [v2.3.0](https://github.com/ash-project/ash/compare/v2.2.0...v2.3.0) (2022-10-27)
### Features:
- Ash.PlugHelpers: standardise conn interface for actors/tenants. (#432)
- add `Ash.Resource.Builder`, the start of DSL builder utilities of rextension writing
### Bug Fixes:
- DataLayer: incorrect typespec for `run_query/2` callback. (#431)
- in Ash.Seed, don't try to update a non-loaded record
- properly load manual to_one relationships
- properly compare against decimal values
### Improvements:
- pass tenant to calculation query explicitly
- allow using `get_path/2` by name, as well as bracket access
- SVG, PDF, PNG, Markdown and plain mermaid formats (#428)
- optimize nested `exists` filter statements
- support floats & decimals in the `compare` validation
## [v2.2.0](https://github.com/ash-project/ash/compare/v2.1.0...v2.2.0) (2022-10-21)
### Features:
- add `Ash.Api.Info.depend_on_resources/1` to get the list of resources at compile time
### Bug Fixes:
- don't attempt to re-authorize access to already retrieved records in `Api.load/2`
### Improvements:
- when returning a page, choose keyset if `before` or `after` was supplied
- add keysets to records if any action supports keysets
- show conditions in policy breakdowns
## [v2.1.0](https://github.com/ash-project/ash/compare/v2.0.0...v2.1.0) (2022-10-19)
### Features:
- Custom short names for types (#423)
A compile env can be set to allow customizing the available type short names. This supports two things:
1. Adding custom type short names, like `attribute :price, :money` mapping to `MyApp.Type.Money`
2. Overriding the builtin type short names, like `attribute, :price, :string` mapping to a custom string type implementation (there is likely no reason to do this)
Commit with unknown type in: feat: Custom short names for types (#423)
See the docs for `Ash.Type` for more information
- add `now()` to expressions
### Bug Fixes:
- set defaults before running changes
### Improvements:
- sort relationship in order of input when managing it
This helps with things like https://github.com/ash-project/ash_phoenix/issues/57
which involve rendering the relationship value after editing it. Retaining
the order allows direct reuse without any gymnastics
## [v2.0.0](https://github.com/ash-project/ash/compare/v1.53.3...v2.0.0) (2022-10-17)
### Features:
- basic livebook generator and mix task (#420)
- mermaid class diagram mix task (#417)
### Bug Fixes:
- properly lateral join when possible
- use `prepend?: true` when applying relationship sorts
- don't miss dependencies in flow diagrams
- fix deps finding in flow charts & flows
- properly load calcs/aggs on manual relationships
- properly load nested manual relationships
- allow overriding validation message on a list of errors (#412)
- reraise errors on task error
- don't show dependencies for run_flow steps in expanded view(they are duplicates)
### Improvements:
- don't eager evaluate `type/2`
- support depending on requests that will be added
- support dynamic action steps in `Ash.Flow`
- add `prepend?: true` option to sort
- use `simple_equality?/0` to allow for optimized equality checking
- mermaid mix task for ER diagrams (#415)
- try to resolve flaky tests by not using named tables for private ets resources
- better unknown error handling
- allow passing query or changeset in can/can?/4 (#410)
## [v2.0.0-rc.15](https://github.com/ash-project/ash/compare/v2.0.0-rc.14...v2.0.0-rc.15) (2022-10-10)
### Bug Fixes:
- handle upsert_identity better with ets/mnesia
- always set source on attributes
### Improvements:
- Improve error when actions reject and accept keys overlap (#405)
- update to latest spark
## [v2.0.0-rc.14](https://github.com/ash-project/ash/compare/v2.0.0-rc.13...v2.0.0-rc.14) (2022-10-07)
### Features:
- list arguments for resource actions in class diagrams (#399)
### Bug Fixes:
- fix chart links rendering
- make `loading?/2` know about calcs and aggs
- properly set source on attributes
- policy fixes from pair session (#403)
- don't evaluate expressions incorrectly after casting
### Improvements:
- add `type` function to ash core
- Allow a single `where` condition for validations (#407)
- haltable flows, branch step type
- simplify async task strategy
- clean up new create authorization simplification
- remove the need for `SetTypes`
- add some info to policy errors
- experimental support for calcualtions accepting expression arguments
- various Ash.Flow improvements, including returning the new `Ash.Flow.Result`
## [v2.0.0-rc.13](https://github.com/ash-project/ash/compare/v2.0.0-rc.12...v2.0.0-rc.13) (2022-10-04)
### Features:
- `show_private?` option for diagrams (#396)
- generate mermaid entity relationship diagrams from a given api (#376)
### Bug Fixes:
- add back in `new/2` to Changeset
- properly load nested calcs
- switch from no_depend_modules in most places
- properly display compare/2 error message
- use the short type for aggregate types
- `kind_to_type/2` returns tagged tuple
### Improvements:
- allow select/load callbacks for calcs to return irrelevant keys
- optimize load equality matching by not using `Comp`
- Forbid reserved field names (#388)
- validate accepted and rejected attributes in actions (#395)
- support zero argument functions in `compare/2`
## [v2.0.0-rc.12](https://github.com/ash-project/ash/compare/v2.0.0-rc.11...v2.0.0-rc.12) (2022-09-30)
### Improvements:
- optimize for `relates_to_actor_via`
## [v2.0.0-rc.11](https://github.com/ash-project/ash/compare/v2.0.0-rc.10...v2.0.0-rc.11) (2022-09-29)
### Bug Fixes:
- use `at_path` when parsing `Exists`
- properly require a condition of a following bypasses
- don't transform == nil to is_nil automatically
- pass path down to keyword list errors
### Improvements:
- optimize relates_to_actor_via checks
## [v2.0.0-rc.10](https://github.com/ash-project/ash/compare/v2.0.0-rc.9...v2.0.0-rc.10) (2022-09-28)
### Bug Fixes:
- bad pattern in `filter.ex`, fix dialyzer
- attempt to evaluate filter checks for strict checks
- only return errors when there actually are errors
- return an error if `data_layer_query/2` is given a query with errors
- various fixes with complex policy statements
- ensure fields selected in-line when loading calcs
- handle statically false conditions in filter logic
- cast embedded datetimes properly
- Ash.Calculation: fix return type for `load/3` callback. (#384)
- warn instead of raise on `:replace` usage
- handle var_args expression with literal args
### Improvements:
- catch more cases in preflight authorization checks
- lazily set required loads/selects for calcs/sorts
- reselect any necessary fields when loading calcs
- set context when creating related filters allowing checks like `filtering_on`
- simplify filter statements further
- don't overconstraint filters on related data
- any filter being statically true means `:authorized`
- properly mark conditions w/ access_type
- use `IsNil` instead of `Eq` when either side is `nil`
- handle string dates for embeds
- remove **timestamps** in favor of simpler macro
## [v2.0.0-rc.9](https://github.com/ash-project/ash/compare/v2.0.0-rc.8...v2.0.0-rc.9) (2022-09-21)
### Bug Fixes:
- fix `replace_relationship` type
## [v2.0.0-rc.8](https://github.com/ash-project/ash/compare/v2.0.0-rc.7...v2.0.0-rc.8) (2022-09-21)
### Bug Fixes:
- properly handle args/nested expression for tuple calcs
- add a case for calculations as tuples in expr filters
- return count, not {:ok, count}
- bad return value when async fetching counts
- remove dbg() call
### Improvements:
- update to latest spark, support dsls in resource info
- deprecate `:replace` in favor of `:append_and_remove`
- add `loading?/1` query helper
- add `loading/1` built in check
## [v2.0.0-rc.7](https://github.com/ash-project/ash/compare/v2.0.0-rc.6...v2.0.0-rc.7) (2022-09-15)
### Bug Fixes:
- `nil` casts as any type (sort of)
- return `nil` on `nil` inputs for length/1
- properly reraise errors raised in tasks
- properly return errors from tasks
- use `Comp.equal?/2` when finding loaded data matches
## [v2.0.0-rc.6](https://github.com/ash-project/ash/compare/v2.0.0-rc.5...v2.0.0-rc.6) (2022-09-15)
### Bug Fixes:
- properly error on types when evaluating expressions at runtime
- properly surface errors all the way from runtime filters
- properly catch errors when running expressions at runtime
### Improvements:
- Implement length function (#379)
## [v2.0.0-rc.5](https://github.com/ash-project/ash/compare/v2.0.0-rc.4...v2.0.0-rc.5) (2022-09-14)
### Bug Fixes:
- inspect the match for default message
### Improvements:
- validate aggregate paths supported
- add `filterable?` option to relationships
- add data layer capability for aggregate relationships & filter relationships
- add guide on manual relationships
## [v2.0.0-rc.4](https://github.com/ash-project/ash/compare/v2.0.0-rc.3...v2.0.0-rc.4) (2022-09-12)
### Bug Fixes:
- fix keyset pagination ordering bug
- short names are snake cased
- properly do pagination
- handle pins in exists
- add better error for `exists/2`
- use root_resource for `related` path in filter
- add `match/3` to upgrading guide
- set root_resource in `exists` parsing
- error fetching relationships in filter expressions
- filter check typespecs
### Improvements:
- add `aggregate_type/2` helper
- make two queries for full keyset pagination support
## [v2.0.0-rc.3](https://github.com/ash-project/ash/compare/v2.0.0-rc.2...v2.0.0-rc.3) (2022-09-06)
### Bug Fixes:
- runtime filter handle new relationship shape
### Improvements:
- add `exists/2` expression
## [v2.0.0-rc.2](https://github.com/ash-project/ash/compare/v2.0.0-rc.1...v2.0.0-rc.2) (2022-09-04)
### Bug Fixes:
- the semantics of `forbid_unless` were not wrong
## [v2.0.0-rc.1](https://github.com/ash-project/ash/compare/v2.0.0-rc.0...v2.0.0-rc.1) (2022-09-04)
### Bug Fixes:
- `forbid_unless` expression compilation
- fix runtime filter join simulation for multiple rows
## [v2.0.0-rc.0](https://github.com/ash-project/ash/compare/v1.53.3...v2.0.0-rc.0) (2022-09-04)
### Bug Fixes:
- Initial Ash 2.0.0-rc.0 release!
## [v1.53.3](https://github.com/ash-project/ash/compare/v1.53.2...v1.53.3) (2022-08-22)
### Bug Fixes:
- False default value for argument is nil in changeset (#364)
- ignore belongs_to in preflight attribute check
- clean up relationship validation logic
- clean up logic around preflight belongs_to validation
### Improvements:
- add `value_is_key` option for managed relationships
- Replace usage of Timex.shift with builtin Calendar functions (#362)
- handle required but not accepted values better
## [v1.53.2](https://github.com/ash-project/ash/compare/v1.53.1...v1.53.2) (2022-08-10)
### Bug Fixes:
- persist a nil actor properly
## [v1.53.1](https://github.com/ash-project/ash/compare/v1.53.0...v1.53.1) (2022-08-10)
### Bug Fixes:
- properly set authorize?: false on runtime filter
- explicitly don't authorize the runtime filter authorization logic
- fix eager function/operator evaluation
- scrub values properly, same as last bug
- map update bug when sanitizing boolean expressions
- fixs runtime filter fallbacks
### Improvements:
- support `authorize?` as a changeset option
- add `actor_present` policy
- add `error?` option to get
- fix various operator evaluators
## [v1.53.0](https://github.com/ash-project/ash/compare/v1.52.0-rc.22...v1.53.0) (2022-08-04)
### Bug Fixes:
- (attempt) to fix calc loading issue
## [v1.52.0-rc.22](https://github.com/ash-project/ash/compare/v1.52.0-rc.21...v1.52.0-rc.22) (2022-08-03)
### Bug Fixes:
- actually use `warn_on_empty?` config
- check for actor on query/changeset for actor context
- pass actor opt down
- don't skip setting tenant when actor is present
- don't use `apply/3` on kernel macros
- small bug in DSL transformer manipulation.
- && and || don't short-circuit to `nil`
- `{:ok, _}` -> `{:known, _}` when evaluating operators
- fix bad evaluation case for operators
- ensure we only take unique related records when lazy loading
### Improvements:
- add warnings to DSL transformer returns
- warn on empty registries
- better sanitization around sensitive attributes in filters
- change `always_authorize?` to `authorize` for multiple options
- add error message for manual action missed
## [v1.52.0-rc.21](https://github.com/ash-project/ash/compare/v1.52.0-rc.20...v1.52.0-rc.21) (2022-07-19)
### Bug Fixes:
- use `Map.get/2` when getting paths if the value is a struct
### Improvements:
- add || and && operators
- sort parsing helpers
- add `Ash.Sort.parse_input!/2`
- add `transfer_context/1` and `get_context_for_transfer/0`
- add process-based actor, tenant and query/changeset context
- add `always_authorize?` and `require_actor?` to api config
- support paths in `actor/1`
## [v1.52.0-rc.20](https://github.com/ash-project/ash/compare/v1.52.0-rc.19...v1.52.0-rc.20) (2022-07-14)
### Features:
- add can?/4 policy utility (#349)
- add can?/4 policy utility
### Improvements:
- add default guide to doc_index
## [v1.52.0-rc.19](https://github.com/ash-project/ash/compare/v1.52.0-rc.18...v1.52.0-rc.19) (2022-07-13)
### Bug Fixes:
- make mnesia and ets work properly when sharing tables
- make updates properly merge with mnesia and ets
- `attribute_writable?` also makes it public
### Improvements:
- code_interface optional arguments
- improve behavior of `lazy?: true` option
## [v1.52.0-rc.18](https://github.com/ash-project/ash/compare/v1.52.0-rc.17...v1.52.0-rc.18) (2022-07-10)
### Bug Fixes:
- fix doc links and include in release
## [v1.52.0-rc.17](https://github.com/ash-project/ash/compare/v1.52.0-rc.16...v1.52.0-rc.17) (2022-07-06)
### Bug Fixes:
- add back in `writable?` option to relationships, and add `attribute_writable?` to `belongs_to`
- don't rescue arbitrary exception/exits
### Improvements:
- add back in DSL docs
- add `match_other_defaults?` to attribute
## [v1.52.0-rc.16](https://github.com/ash-project/ash/compare/v1.52.0-rc.15...v1.52.0-rc.16) (2022-07-05)
### Bug Fixes:
- fix return type for `dump/3` ecto type
- `load/3` returns `{:ok, value} | :error`
### Improvements:
- remove relationship writability, as it all happens through arguments now
- repurpose `writable?` on `belongs_to` to make the attribute writable
## [v1.52.0-rc.15](https://github.com/ash-project/ash/compare/v1.52.0-rc.14...v1.52.0-rc.15) (2022-06-28)
### Bug Fixes:
- ensure type is always set on attributes
## [v1.52.0-rc.14](https://github.com/ash-project/ash/compare/v1.52.0-rc.13...v1.52.0-rc.14) (2022-06-28)
### Bug Fixes:
- don't try to read files that don't exist
### Improvements:
- new timeout error message and test it
## [v1.52.0-rc.13](https://github.com/ash-project/ash/compare/v1.52.0-rc.12...v1.52.0-rc.13) (2022-06-27)
### Bug Fixes:
- bad return value for `destroy!` + `return_notifications?: true`
- use digraph to order transformers
- things breaking due to stricter expectations on type function inputs
- depend on all entries in registry
### Improvements:
- `Ash.Generator`
- add `Ash.Seed` module with seed helpers
- add basic type handling for non embedded resources
- better transformer ordering error
- don't pay massive costs of a function undefined error
- optimize related resource inclusion check
## [v1.52.0-rc.12](https://github.com/ash-project/ash/compare/v1.52.0-rc.11...v1.52.0-rc.12) (2022-06-14)
### Bug Fixes:
- don't disable lexical tracker for extensions
- properly set the `changed?` context
- always return all notifications if `return_notifications?: true`
- read file at compile time for doc index
- when casting atom -> string, stringify it first
### Improvements:
- add resource to notification warning
- add `config :ash, :pub_sub, debug?: true`
- add `from` to notification, and `notification_metadata` to api
## [v1.52.0-rc.11](https://github.com/ash-project/ash/compare/v1.52.0-rc.10...v1.52.0-rc.11) (2022-06-03)
### Bug Fixes:
- move preparation init to runtime
- don't automatically url encode keyset values
- fixed bug where embedded resources would always provide defaults, not allowing you to declare your own (primary?) actions (#339)
- keyset pagination counts all rows
- fetch items closest to cursor by reversing keyset sort
- keyset + before results must be reversed
### Improvements:
- add `identity_priority` and `use_identities` option to manage_relationship
- support limit in simple data layer
- add `key` to `InvalidKeyset` error
## [v1.52.0-rc.10](https://github.com/ash-project/ash/compare/v1.52.0-rc.9...v1.52.0-rc.10) (2022-05-30)
### Improvements:
- better error message on invalid keyset
- added options to the built-in function `relate_actor/1` (#332)
- add `:_pkey` shortcut in pub_sub
- validate `pre_check_with` is set for ets/mnesia identities
- clearer and raised error message on changeset action mismatch
- accept atoms when casting strings
## [v1.52.0-rc.9](https://github.com/ash-project/ash/compare/v1.52.0-rc.8...v1.52.0-rc.9) (2022-05-23)
### Bug Fixes:
- rename `interval` to `duration_name`
- Fix concat (#326)
- Make get and get! consistent with what they raise when no record found (#325)
### Improvements:
- specify that upserts could be related at creation
## [v1.52.0-rc.8](https://github.com/ash-project/ash/compare/v1.52.0-rc.7...v1.52.0-rc.8) (2022-05-18)
### Bug Fixes:
- add resource/action to policy error context
## [v1.52.0-rc.7](https://github.com/ash-project/ash/compare/v1.52.0-rc.6...v1.52.0-rc.7) (2022-05-18)
### Bug Fixes:
- don't ignore lazy load option
## [v1.52.0-rc.6](https://github.com/ash-project/ash/compare/v1.52.0-rc.5...v1.52.0-rc.6) (2022-05-18)
### Bug Fixes:
- return `{:ok, nil}` on nil cast for strings
## [v1.52.0-rc.5](https://github.com/ash-project/ash/compare/v1.52.0-rc.4...v1.52.0-rc.5) (2022-05-17)
### Improvements:
- move ash_policy_authorizer into core as `Ash.Policy.Authorizer`
## [v1.52.0-rc.4](https://github.com/ash-project/ash/compare/v1.52.0-rc.3...v1.52.0-rc.4) (2022-05-17)
### Bug Fixes:
- run after_action in create properly
## [v1.52.0-rc.3](https://github.com/ash-project/ash/compare/v1.52.0-rc.2...v1.52.0-rc.3) (2022-05-17)
### Bug Fixes:
- require calculations specified on resource load
## [v1.52.0-rc.2](https://github.com/ash-project/ash/compare/v1.52.0-rc.1...v1.52.0-rc.2) (2022-05-13)
### Bug Fixes:
- ensure that the default accept is used
- distinct before limit and offset
- add distinct in data_layer_query
- merge calculations when merging loads
- add `no_depend_modules` for changes/validations
- match on `:unknown` not `{:ok, :unknown}`
- run calc in data layer if it returns `:unknown`
- don't ignore lexical tracker on modules in DSL
- don't treat single actions of a type as primary
- render contributor images correctly in hexdocs (#321)
- go back to old method of checking for resource
- properly load from `load` statement in calculations
- send notifications in all cases
- use unpaginated read when loading
- properly handle errors in mnesia transactions
- default custom steps to be async?: false
- get tests/dialyzer passing
### Improvements:
- work on module dependencies
- use new `no_depend_modules` everywhere
- add `no_attributes?` relationships
- add manual read actions
- calculation values from requests
- small optimizations
- more flow features/fixes, debug step
- work on transaction flow steps
## [v1.52.0-rc.1](https://github.com/ash-project/ash/compare/v1.52.0-rc.0...v1.52.0-rc.1) (2022-04-19)
### Bug Fixes:
- Handle date type cast_input with nil value (#311)
- fix expression logic
- don't throw away timeout exit
- timeouts @ the engine, not the parent process
- timeout logic was timing out after the fact
- uniqueify `list_refs` even further
- flaky test issue
- Enforce unique action names (#308)
- pass tenant option to requests properly
- Fix typespecs in Ash.Api (#307)
- fix resource relationship validation
- fix paths for load in flow
- aggregate/calculation filter issues
- show error message in `NoSuchResource`
- import builtin preparations in global preparations block
### Improvements:
- `load` on `cast_stored` in embedded type
- add descriptions to mermaid charts/flow
- tons of engine/timeout improvements
- implement NaiveDateTime type (#312)
- Improve usability of finding by primary key (ID) (#294)
- Add time type matching existing date type (#310)
- flow -> mermaid chart
- flow tenants
- fix nested map statements in flow
- add dynamic allow list
- uniqify list_references
- set default timeout to 30_000
- remove coverage from CI
- fully deprecate the `resource` entity
- add eager validate identities
- percolate `nil` values in operators in ash expression language (like SQL)
- add `return_destroyed?` option
- add `api` option to relationships
- make default actions and primary actions far more explicit
- better error messages on unknown
- better loading behavior for managed relationships
- add lazy? option for loading
- show value in atom error list
- add `modify_query` callback
- add overview
- add build_entity!
- properly parse `{:_ref, path, name}`
- add `deselect` to build
- validates attributes and relationships have unique names (#300)
- validate no embeds in api
## [v1.52.0-rc.0](https://github.com/ash-project/ash/compare/v1.51.2...v1.52.0-rc.0) (2022-03-25)
### Features:
- add `Ash.Flow`
- support recursive DSL entities.
- manual relationships
### Bug Fixes:
- add `load` option convenience for reads/code interface
- handle errors in all action types where `changeset` wasn't resolved
- always sanitize requests before we spawn them
- context name in loading manual relationships
- get aggregate query from proper engine path
- handle error case in create
- don't require attributes if an argument overrides them
- fix hanging issue when adding engine requests
- don't require `writable?: false` attributes
- pull aggregate values properly
- fix nested section configs having wrong path
- don't rescue errors in resource_formatter
- add `input/2` to resource modules
- move back to more efficient formatter
- make the formatter safer, again
- typo in changeset.ex (#291)
### Improvements:
- properly attach authorization_filters to loaded items
- add `ref` template helper
- add transaction steps to flow
- unimport to avoid name collisions in nested DSLs
- disable lexical tracker when expanding aliases
- temporarily move init to runtime for changes
## [v1.51.2](https://github.com/ash-project/ash/compare/v1.51.1...v1.51.2) (2022-02-17)
### Bug Fixes:
- don't blow away sections when formatting
- properly reorder sections in the formatter
## [v1.51.1](https://github.com/ash-project/ash/compare/v1.51.0...v1.51.1) (2022-02-17)
### Bug Fixes:
- solve reorder bugs in formatter
## [v1.51.0](https://github.com/ash-project/ash/compare/v1.50.21...v1.51.0) (2022-02-14)
### Features:
- add `source` option to attributes
## [v1.50.21](https://github.com/ash-project/ash/compare/v1.50.20...v1.50.21) (2022-02-14)
### Improvements:
- add `cast_in_query?/0` to `Ash.Type`
## [v1.50.20](https://github.com/ash-project/ash/compare/v1.50.19...v1.50.20) (2022-02-11)
### Improvements:
- small data layer improvements
## [v1.50.19](https://github.com/ash-project/ash/compare/v1.50.18...v1.50.19) (2022-02-07)
### Bug Fixes:
- include a missing module
- properly set filterability on attributes
## [v1.50.18](https://github.com/ash-project/ash/compare/v1.50.17...v1.50.18) (2022-02-07)
### Bug Fixes:
### Improvements:
- initial implementation of ash resource formatter
- ensure no reserved names can be used as constraints
## [v1.50.17](https://github.com/ash-project/ash/compare/v1.50.16...v1.50.17) (2022-01-31)
### Improvements:
- optimize `if` and `is_nil` functions
## [v1.50.16](https://github.com/ash-project/ash/compare/v1.50.15...v1.50.16) (2022-01-24)
### Bug Fixes:
- use `ash_struct_fields` to accumulate schema struct field defaults
## [v1.50.15](https://github.com/ash-project/ash/compare/v1.50.14...v1.50.15) (2022-01-19)
### Bug Fixes:
- don't call add_aggregates w/ a map
- allow new `filter` pattern in typespec
### Improvements:
- add `where` to `change`
- support data layers bulk adding aggregates
## [v1.50.14](https://github.com/ash-project/ash/compare/v1.50.13...v1.50.14) (2021-12-21)
### Bug Fixes:
- fix recursion in `do_reverse_relationship_path/3`
### Improvements:
- add more authorizer state management
- customizable exception for authorizers
## [v1.50.13](https://github.com/ash-project/ash/compare/v1.50.12...v1.50.13) (2021-12-21)
### Bug Fixes:
- properly construct reverse relationship paths
### Improvements:
- cover more potential cases in filter parsing
## [v1.50.12](https://github.com/ash-project/ash/compare/v1.50.11...v1.50.12) (2021-12-19)
### Bug Fixes:
- support new versions of ecto's struct fields
- fixes for elixir_sense plugin
## [v1.50.11](https://github.com/ash-project/ash/compare/v1.50.10...v1.50.11) (2021-12-13)
### Improvements:
- add elixir_sense extension, to be merged when ready (#275)
## [v1.50.10](https://github.com/ash-project/ash/compare/v1.50.9...v1.50.10) (2021-12-08)
### Improvements:
- add `Ash.DataLayer.Simple.set_data/2`
- complete mutually_exclusive_and_collectively_exhaustive logic
## [v1.50.9](https://github.com/ash-project/ash/compare/v1.50.8...v1.50.9) (2021-12-06)
### Bug Fixes:
- undo an unnecessary `contains` change
- WIP attempt to resolve ci_string typing errors
### Improvements:
- catch more equivalencey cases around is_nil in sat solver
## [v1.50.8](https://github.com/ash-project/ash/compare/v1.50.7...v1.50.8) (2021-12-01)
### Bug Fixes:
- case clause error in `Query.equivalent_to?`
## [v1.50.7](https://github.com/ash-project/ash/compare/v1.50.6...v1.50.7) (2021-12-01)
### Bug Fixes:
- missing rename on refactor
- typo in `unquote`
- mark `contains` as a predicate
### Improvements:
- expose small filter helpers
- make to_simple_filter fail better, add failure option
## [v1.50.6](https://github.com/ash-project/ash/compare/v1.50.5...v1.50.6) (2021-11-26)
### Improvements:
- add `Transformer.eval/3` (for special use cases only)
## [v1.50.5](https://github.com/ash-project/ash/compare/v1.50.4...v1.50.5) (2021-11-25)
### Improvements:
- track defaults being set
## [v1.50.4](https://github.com/ash-project/ash/compare/v1.50.3...v1.50.4) (2021-11-17)
### Improvements:
- add `Ash.Query.equivalent_to/2`
## [v1.50.3](https://github.com/ash-project/ash/compare/v1.50.2...v1.50.3) (2021-11-17)
### Improvements:
- add `subset_of?` and `superset_of?` query macros
## [v1.50.2](https://github.com/ash-project/ash/compare/v1.50.1...v1.50.2) (2021-11-13)
### Bug Fixes:
- run calculations inline by default
- use Date.add when using LessThanOrEqual with date value (#281)
- cast nil input on strings
### Improvements:
- support do/else blocks in if
- support `cond`
## [v1.50.1](https://github.com/ash-project/ash/compare/v1.50.0...v1.50.1) (2021-11-09)
### Bug Fixes:
- simplify and improve allow_nil checking
## [v1.50.0](https://github.com/ash-project/ash/compare/v1.49.0...v1.50.0) (2021-11-09)
### Breaking Changes:
- breaking!: explicitly setting a value to nil on create no longer falls back to the default value
## [v1.49.0](https://github.com/ash-project/ash/compare/v1.48.0-rc.30...v1.49.0) (2021-11-03)
### Bug Fixes:
- don't ask the data layer to sort if no sort is applied
- set tenant at start of query build (#278)
### Improvements:
- still filter in cases w/o a lateral join on load
## [v1.48.0-rc.30](https://github.com/ash-project/ash/compare/v1.48.0-rc.29...v1.48.0-rc.30) (2021-11-01)
### Bug Fixes:
- set storage_type to `:uuid` for Ash.Type.UUID
### Improvements:
- `only_when_valid?` on changes
## [v1.48.0-rc.29](https://github.com/ash-project/ash/compare/v1.48.0-rc.28...v1.48.0-rc.29) (2021-10-29)
### Bug Fixes:
## [v1.48.0-rc.28](https://github.com/ash-project/ash/compare/v1.48.0-rc.27...v1.48.0-rc.28) (2021-10-29)
### Bug Fixes:
- add changes from last release that I forgot
## [v1.48.0-rc.27](https://github.com/ash-project/ash/compare/v1.48.0-rc.26...v1.48.0-rc.27) (2021-10-29)
### Improvements:
- compile time optimizations via configuration
## [v1.48.0-rc.26](https://github.com/ash-project/ash/compare/v1.48.0-rc.25...v1.48.0-rc.26) (2021-10-28)
### Bug Fixes:
- correctly handle errors in validate_required_belongs_to (#276)
- set actor when loading to manage belongs_to
- cast to string before concatenating
### Improvements:
- set `action` into data layer context
## [v1.48.0-rc.25](https://github.com/ash-project/ash/compare/v1.48.0-rc.24...v1.48.0-rc.25) (2021-10-25)
### Bug Fixes:
- always lateral join for many to many relationships
### Improvements:
- add `default` option for aggregates
## [v1.48.0-rc.24](https://github.com/ash-project/ash/compare/v1.48.0-rc.23...v1.48.0-rc.24) (2021-10-25)
### Bug Fixes:
- unset `load` when running calculation queries
### Improvements:
- add `allow_async?` to calculations, default to false
- add elixir evaluation step to expression calculations
- global resource preparations
## [v1.48.0-rc.23](https://github.com/ash-project/ash/compare/v1.48.0-rc.22...v1.48.0-rc.23) (2021-10-24)
### Bug Fixes:
- breaking change! disambiguating functions in keyword filter syntax
## [v1.48.0-rc.22](https://github.com/ash-project/ash/compare/v1.48.0-rc.21...v1.48.0-rc.22) (2021-10-23)
### Bug Fixes:
- use correct typespec for `Ash.Sort.parse_input/2`
## [v1.48.0-rc.21](https://github.com/ash-project/ash/compare/v1.48.0-rc.20...v1.48.0-rc.21) (2021-10-22)
### Improvements:
- add get? metadata
## [v1.48.0-rc.20](https://github.com/ash-project/ash/compare/v1.48.0-rc.19...v1.48.0-rc.20) (2021-10-21)
### Improvements:
- custom error paths for managed relationships
## [v1.48.0-rc.19](https://github.com/ash-project/ash/compare/v1.48.0-rc.18...v1.48.0-rc.19) (2021-10-20)
### Bug Fixes:
- honor `get_by` and `get_by_identity` on bang (!) interfaces
## [v1.48.0-rc.18](https://github.com/ash-project/ash/compare/v1.48.0-rc.17...v1.48.0-rc.18) (2021-10-20)
### Improvements:
- add `get_by` and `get_by_identity` to code interface
- compile time validations for managed relationships
## [v1.48.0-rc.17](https://github.com/ash-project/ash/compare/v1.48.0-rc.16...v1.48.0-rc.17) (2021-10-19)
### Bug Fixes:
- don't require primary actions if disabled
## [v1.48.0-rc.16](https://github.com/ash-project/ash/compare/v1.48.0-rc.15...v1.48.0-rc.16) (2021-10-19)
### Improvements:
- add `primary_actions?` option
## [v1.48.0-rc.15](https://github.com/ash-project/ash/compare/v1.48.0-rc.14...v1.48.0-rc.15) (2021-10-15)
### Bug Fixes:
- don't validate allow_nil in attribute casting
## [v1.48.0-rc.14](https://github.com/ash-project/ash/compare/v1.48.0-rc.13...v1.48.0-rc.14) (2021-10-13)
### Bug Fixes:
- fix code interface on resources
### Improvements:
- breaking change! api level code interface _removed_, contact me on discord if you want a way to avoid changing to resource-based interface, but otherwise
- use proper equality checking in places where we were using simple elixir equality checking
## [v1.48.0-rc.13](https://github.com/ash-project/ash/compare/v1.48.0-rc.12...v1.48.0-rc.13) (2021-10-12)
### Bug Fixes:
- honor base query still when removing filters
## [v1.48.0-rc.12](https://github.com/ash-project/ash/compare/v1.48.0-rc.11...v1.48.0-rc.12) (2021-10-11)
### Bug Fixes:
- move related field validations to resource
- remove join_attributes, which didn't do anything anyway
### Improvements:
- add resource registry validation
## [v1.48.0-rc.11](https://github.com/ash-project/ash/compare/v1.48.0-rc.10...v1.48.0-rc.11) (2021-10-09)
### Bug Fixes:
- handle errors when validation calculation constraints
- remove certain modules from avoiding recompilation
### Improvements:
- support `module_prefix` for dsl extensions
## [v1.48.0-rc.10](https://github.com/ash-project/ash/compare/v1.48.0-rc.9...v1.48.0-rc.10) (2021-10-07)
### Bug Fixes:
- remove certain modules from avoiding recompilation
## [v1.48.0-rc.9](https://github.com/ash-project/ash/compare/v1.48.0-rc.8...v1.48.0-rc.9) (2021-10-07)
### Improvements:
- deprecation!
## [v1.48.0-rc.8](https://github.com/ash-project/ash/compare/v1.48.0-rc.7...v1.48.0-rc.8) (2021-10-06)
### Bug Fixes:
- make arrays default to nil_items?: false
### Improvements:
- breaking change! don't define code interface by default
## [v1.48.0-rc.7](https://github.com/ash-project/ash/compare/v1.48.0-rc.6...v1.48.0-rc.7) (2021-09-30)
### Bug Fixes:
- ensure changeset is up to date in `after_action` hooks
- fix a case where `unwrap_or_raise!` returned the wrong value on destroy
- fix typo on lateral join checker
- set default attribute type (in case it is explicitly set to nil) on belongs_to attributes
- if an error with no message is produced, don't attempt to concat nil with a string
### Improvements:
- simpler patterns around soft destroy actions
- add `set_option/4` to transformer helpers
- add `where` option to validate that accepts a list of validations
- prevent more unnecessary lateral joins
- only issue a lateral join when required (#269)
## [v1.48.0-rc.6](https://github.com/ash-project/ash/compare/v1.48.0-rc.5...v1.48.0-rc.6) (2021-09-20)
### Bug Fixes:
- support `on` for global changes
- return proper result when input is struct
- remove File.read! from docs
### Improvements:
- skip resource action if no changes have been made
- add `changing_attributes?/1` to determine if any attributes are changing
- add global changes
## [v1.48.0-rc.5](https://github.com/ash-project/ash/compare/v1.48.0-rc.4...v1.48.0-rc.5) (2021-09-17)
### Improvements:
- upgrade docs/tooling for elixir_sense
- set docs statically
## [v1.48.0-rc.4](https://github.com/ash-project/ash/compare/v1.48.0-rc.3...v1.48.0-rc.4) (2021-09-17)
### Improvements:
- improvements for elixirsense integration
## [v1.48.0-rc.3](https://github.com/ash-project/ash/compare/v1.48.0-rc.2...v1.48.0-rc.3) (2021-09-16)
### Improvements:
- transformer/extension improvements
- add path to errors
## [v1.48.0-rc.2](https://github.com/ash-project/ash/compare/v1.48.0-rc.1...v1.48.0-rc.2) (2021-09-15)
### Bug Fixes:
- set tenant properly on create interface
- update type spec for Ash.Sort to include single atom instead of only list. (#263)
### Improvements:
- support non-endpoint pubsub adapters
## [v1.48.0-rc.1](https://github.com/ash-project/ash/compare/v1.48.0-rc.0...v1.48.0-rc.1) (2021-09-13)
### Bug Fixes:
- check action type properly in attribute validations
## [v1.48.0-rc.0](https://github.com/ash-project/ash/compare/v1.47.12...v1.48.0-rc.0) (2021-09-13)
### Breaking Changes:
- update ecto version
### Bug Fixes:
- pass constraints to sub-fields loaded in embeddable resources
- take creates into account w/ attribute_equals and attribute_does_not_equal
- set changeset in destroy authorization request
### Improvements:
- use paramaterized types under the hood
## [v1.47.12](https://github.com/ash-project/ash/compare/v1.47.11...v1.47.12) (2021-09-12)
### Bug Fixes:
- return not found in all cases on get
- don't allow get! to return nil
- don't do db filters on creation
- honor `allow_nil_input` in required validations
### Improvements:
- add `after_action` option to create/update
- add config :ash, disable_async?: true
- add `meta[:order]` option for managed relationships
## [v1.47.11](https://github.com/ash-project/ash/compare/v1.47.10...v1.47.11) (2021-08-29)
### Bug Fixes:
- hydrate metadata types
### Improvements:
- remove metadata from read actions
## [v1.47.10](https://github.com/ash-project/ash/compare/v1.47.9...v1.47.10) (2021-08-29)
### Bug Fixes:
- update to latest picosat_elixir for releases
- cast `nil` enum values properly
- set api in destroy action hooks
### Improvements:
- support action level metadata
- add `on_match: :destroy` option
- if a map is given for a list, take it's keys
- set better error paths for invalid relationships
- include api in changeset inspect
## [v1.47.9](https://github.com/ash-project/ash/compare/v1.47.8...v1.47.9) (2021-08-11)
### Bug Fixes:
- set argument defaults early
- don't add indices to non-list inputs in managed relationships
## [v1.47.8](https://github.com/ash-project/ash/compare/v1.47.7...v1.47.8) (2021-08-05)
### Bug Fixes:
- stop managed relationships from sourcing wrong data
## [v1.47.7](https://github.com/ash-project/ash/compare/v1.47.6...v1.47.7) (2021-08-04)
### Bug Fixes:
- redact fields in the resource struct as well
- allow `before_action` to manage `belongs_to` relationships
- load belongs to relationships before managing them
- don't lookup nil input
- don't look for matches for nil
- don't accept list inputs for managed belongs_to
- don't use list inputs in belongs_to managed
- remove belongs to related after action
- fix more cases where belongs_to isn't replaced
## [v1.47.6](https://github.com/ash-project/ash/compare/v1.47.5...v1.47.6) (2021-08-01)
### Bug Fixes:
- honor `on_missing:` behavior for belongs_to relationships
- properly remove old belongs_to records
## [v1.47.5](https://github.com/ash-project/ash/compare/v1.47.4...v1.47.5) (2021-07-28)
### Bug Fixes:
- set source_query tenant in lateral join
### Improvements:
- add `belongs_to` attributes _after_ the others
## [v1.47.4](https://github.com/ash-project/ash/compare/v1.47.3...v1.47.4) (2021-07-25)
### Improvements:
- pull relationship paths out of functions
## [v1.47.3](https://github.com/ash-project/ash/compare/v1.47.2...v1.47.3) (2021-07-23)
### Bug Fixes:
- no need to trap exits anymore
## [v1.47.2](https://github.com/ash-project/ash/compare/v1.47.1...v1.47.2) (2021-07-23)
### Bug Fixes:
- don't match on explicitly `:exit`
## [v1.47.1](https://github.com/ash-project/ash/compare/v1.47.0...v1.47.1) (2021-07-23)
### Bug Fixes:
- catch normal exit message from engine
- flush engine state always
## [v1.47.0](https://github.com/ash-project/ash/compare/v1.46.13...v1.47.0) (2021-07-22)
### Features:
- Ash.Resource.Info: add &public_field/2 helper (#254)
- Ash.Resource.Info: add &sortable?/3 helper
### Bug Fixes:
- load calculations from sorts properly
- rename conflicting test name
- fix complex attribute check
- disallow aggregate/calculation sorting w/ keyset pagination
## [v1.46.13](https://github.com/ash-project/ash/compare/v1.46.12...v1.46.13) (2021-07-21)
### Bug Fixes:
- ensure calculation compiled
- don't limit/offset aggregate queries
## [v1.46.12](https://github.com/ash-project/ash/compare/v1.46.11...v1.46.12) (2021-07-20)
### Bug Fixes:
- call `get_type` in cast_stored again
## [v1.46.11](https://github.com/ash-project/ash/compare/v1.46.10...v1.46.11) (2021-07-19)
### Improvements:
- speed up type loading
- add `__order__` field to be used by data layers
## [v1.46.10](https://github.com/ash-project/ash/compare/v1.46.9...v1.46.10) (2021-07-18)
### Bug Fixes:
- missing apply_attributes clause
### Improvements:
- add `force?` option to `apply_attributes/2`
## [v1.46.9](https://github.com/ash-project/ash/compare/v1.46.8...v1.46.9) (2021-07-18)
### Bug Fixes:
- demonitor engine pid after run
## [v1.46.8](https://github.com/ash-project/ash/compare/v1.46.7...v1.46.8) (2021-07-18)
### Bug Fixes:
- on_lookup read is always on destination
## [v1.46.7](https://github.com/ash-project/ash/compare/v1.46.6...v1.46.7) (2021-07-17)
### Bug Fixes:
- set item constraints properly
### Improvements:
- add on_lookup_read_action
## [v1.46.6](https://github.com/ash-project/ash/compare/v1.46.5...v1.46.6) (2021-07-15)
### Bug Fixes:
- fix simple data layer filtering
### Improvements:
- add in error paths for managed relationships
- set error paths on managed rels
## [v1.46.5](https://github.com/ash-project/ash/compare/v1.46.4...v1.46.5) (2021-07-09)
### Improvements:
- always replace error message vars
- minimize relationship source changeset context inspect size
## [v1.46.4](https://github.com/ash-project/ash/compare/v1.46.3...v1.46.4) (2021-07-08)
### Bug Fixes:
- cast empty string to nil in atom
- accept strings for atom types again
- don't turn strings to atoms in `:atom` type
- don't do unnecessary validation in type
## [v1.46.3](https://github.com/ash-project/ash/compare/v1.46.2...v1.46.3) (2021-07-05)
### Bug Fixes:
- build aggregate paths properly
## [v1.46.2](https://github.com/ash-project/ash/compare/v1.46.1...v1.46.2) (2021-07-04)
### Improvements:
- info only `required?` flag for `has_one`
## [v1.46.1](https://github.com/ash-project/ash/compare/v1.46.0...v1.46.1) (2021-07-02)
### Bug Fixes:
- properly determine reverse aggregate relationship
- ensure calculation modules are compiled
- attempt to fix calculation compile time issues
## [v1.46.0](https://github.com/ash-project/ash/compare/v1.45.0-rc20...v1.46.0) (2021-07-02)
## [v1.45.0-rc20](https://github.com/ash-project/ash/compare/v1.45.0-rc19...v1.45.0-rc20) (2021-07-01)
### Bug Fixes:
- allow sorting on aggs, w/o loading
- ensure query in `ensure_selected`
- handle sorting empty data properly
- manage ets tables properly
- link request handler to engine and runner, solve mem leak
- ensure ci_strings casted after constraints
- Revert "more optimized types"
- revert a suboptimal change to the type system
- don't call `type()` on `:string`
- optimize ash type loading
### Improvements:
- if "" fails to cast, cast it as `nil` instead
- ReadActionRequiresActor error
- `ensure_selected` change
- don't perform `match` on `nil`
- add `{:arg, :name}` input for `set_attribute`
- revamp ci_string
- add `Ash.Type.type/1`
- more optimized types
## [v1.45.0-rc19](https://github.com/ash-project/ash/compare/v1.45.0-rc18...v1.45.0-rc19) (2021-06-29)
### Bug Fixes:
- ensure query in `ensure_selected`
- handle sorting empty data properly
- manage ets tables properly
- link request handler to engine and runner, solve mem leak
- ensure ci_strings casted after constraints
- Revert "more optimized types"
- revert a suboptimal change to the type system
- don't call `type()` on `:string`
- optimize ash type loading
### Improvements:
- if "" fails to cast, cast it as `nil` instead
- ReadActionRequiresActor error
- `ensure_selected` change
- don't perform `match` on `nil`
- add `{:arg, :name}` input for `set_attribute`
- revamp ci_string
- add `Ash.Type.type/1`
- more optimized types
## [v1.45.0-rc18](https://github.com/ash-project/ash/compare/v1.45.0-rc17...v1.45.0-rc18) (2021-06-28)
### Bug Fixes:
- handle sorting empty data properly
- manage ets tables properly
- link request handler to engine and runner, solve mem leak
- ensure ci_strings casted after constraints
- Revert "more optimized types"
- revert a suboptimal change to the type system
- don't call `type()` on `:string`
- optimize ash type loading
### Improvements:
- if "" fails to cast, cast it as `nil` instead
- ReadActionRequiresActor error
- `ensure_selected` change
- don't perform `match` on `nil`
- add `{:arg, :name}` input for `set_attribute`
- revamp ci_string
- add `Ash.Type.type/1`
- more optimized types
## [v1.45.0-rc17](https://github.com/ash-project/ash/compare/v1.45.0-rc16...v1.45.0-rc17) (2021-06-28)
### Bug Fixes:
- link request handler to engine and runner, solve mem leak
- ensure ci_strings casted after constraints
- Revert "more optimized types"
- revert a suboptimal change to the type system
- don't call `type()` on `:string`
- optimize ash type loading
### Improvements:
- if "" fails to cast, cast it as `nil` instead
- ReadActionRequiresActor error
- `ensure_selected` change
- don't perform `match` on `nil`
- add `{:arg, :name}` input for `set_attribute`
- revamp ci_string
- add `Ash.Type.type/1`
- more optimized types
## [v1.45.0-rc16](https://github.com/ash-project/ash/compare/v1.45.0-rc15...v1.45.0-rc16) (2021-06-25)
### Bug Fixes:
- ensure ci_strings casted after constraints
- Revert "more optimized types"
- revert a suboptimal change to the type system
- don't call `type()` on `:string`
- optimize ash type loading
### Improvements:
- add `{:arg, :name}` input for `set_attribute`
- revamp ci_string
- add `Ash.Type.type/1`
- more optimized types
## [v1.45.0-rc15](https://github.com/ash-project/ash/compare/v1.45.0-rc14...v1.45.0-rc15) (2021-06-25)
### Bug Fixes:
- ensure ci_strings casted after constraints
- Revert "more optimized types"
- revert a suboptimal change to the type system
- don't call `type()` on `:string`
- optimize ash type loading
### Improvements:
- revamp ci_string
- add `Ash.Type.type/1`
- more optimized types
## [v1.45.0-rc14](https://github.com/ash-project/ash/compare/v1.45.0-rc13...v1.45.0-rc14) (2021-06-24)
### Bug Fixes:
- Revert "more optimized types"
- revert a suboptimal change to the type system
- don't call `type()` on `:string`
- optimize ash type loading
### Improvements:
- add `Ash.Type.type/1`
- more optimized types
## [v1.45.0-rc11](https://github.com/ash-project/ash/compare/v1.45.0-rc10...v1.45.0-rc11) (2021-06-24)
### Bug Fixes:
- revert a suboptimal change to the type system
- don't call `type()` on `:string`
- optimize ash type loading
### Improvements:
- add `Ash.Type.type/1`
- more optimized types
## [v1.45.0-rc10](https://github.com/ash-project/ash/compare/v1.45.0-rc9...v1.45.0-rc10) (2021-06-24)
### Bug Fixes:
- optimize ash type loading
## [v1.45.0-rc9](https://github.com/ash-project/ash/compare/v1.45.0-rc8...v1.45.0-rc9) (2021-06-23)
### Bug Fixes:
- pass opts through to Jason.Encode.string/2
### Improvements:
- add `error_handler` for create/update/destroy actions
## [v1.45.0-rc8](https://github.com/ash-project/ash/compare/v1.45.0-rc7...v1.45.0-rc8) (2021-06-23)
### Bug Fixes:
- properly encode ci string to json
### Improvements:
- more engine logging
## [v1.45.0-rc7](https://github.com/ash-project/ash/compare/v1.45.0-rc6...v1.45.0-rc7) (2021-06-22)
### Bug Fixes:
- `:infinity` on engine genserver calls
## [v1.45.0-rc6](https://github.com/ash-project/ash/compare/v1.45.0-rc5...v1.45.0-rc6) (2021-06-08)
### Bug Fixes:
- hide **metadata** field on inspect
- load relationships required for calculations (optimize later)
## [v1.45.0-rc5](https://github.com/ash-project/ash/compare/v1.45.0-rc4...v1.45.0-rc5) (2021-06-08)
### Bug Fixes:
- don't halt on request handler failure
- properly error when more than 2 requests of the same type are primary
- properly process sort when the sort is an atom
- properly calculate reverse relationship paths
## [v1.45.0-rc4](https://github.com/ash-project/ash/compare/v1.45.0-rc3...v1.45.0-rc4) (2021-06-05)
### Improvements:
- support calculation sorts
## [v1.45.0-rc3](https://github.com/ash-project/ash/compare/v1.45.0-rc2...v1.45.0-rc3) (2021-06-05)
### Bug Fixes:
- always wait on the engine if it hasn't completed
## [v1.45.0-rc2](https://github.com/ash-project/ash/compare/v1.45.0-rc1...v1.45.0-rc2) (2021-06-04)
### Bug Fixes:
- always wait for engine
### Improvements:
- spawn async requests where possible
## [v1.45.0-rc1](https://github.com/ash-project/ash/compare/v1.45.0-rc0...v1.45.0-rc1) (2021-06-04)
### Bug Fixes:
- constraints on calculations
- better calculation inspect
- allow supplying stacktraces when building errors
## [v1.45.0-rc0](https://github.com/ash-project/ash/compare/v1.44.13...v1.45.0-rc0) (2021-06-04)
### Features:
- expression based calculations for filterable/sortable calculations
- expression calculations for sorting/filtering
- add compare validator (#242)
### Bug Fixes:
- aggregate authorization issues
- ensure create functions generated by code_interface accept tenant in the opts list (#243)
### Improvements:
- tons of improvements across the board
- small improvements/fixes across the board
- Update remaining builtin validators (#244)
## [v1.44.13](https://github.com/ash-project/ash/compare/v1.44.12...v1.44.13) (2021-05-28)
### Bug Fixes:
- properly process managed belongs to relationships
- cast nil -> {:ok, nil} in all cases
- set tenant even on non-tenant resources where relevant (#241)
## [v1.44.12](https://github.com/ash-project/ash/compare/v1.44.11...v1.44.12) (2021-05-23)
### Improvements:
- define embedded schemas where appropriate
## [v1.44.11](https://github.com/ash-project/ash/compare/v1.44.10...v1.44.11) (2021-05-20)
### Improvements:
- calculation.select/2 + `select` calculation option
## [v1.44.10](https://github.com/ash-project/ash/compare/v1.44.9...v1.44.10) (2021-05-20)
### Bug Fixes:
- run after_action hooks in the proper order
### Improvements:
- add `validate_destination_attribute?`
- add builtin `select` change
## [v1.44.9](https://github.com/ash-project/ash/compare/v1.44.8...v1.44.9) (2021-05-20)
### Improvements:
- set moduledoc to description if one is not set
## [v1.44.8](https://github.com/ash-project/ash/compare/v1.44.7...v1.44.8) (2021-05-19)
### Bug Fixes:
- fix dialyzer errors for enum + code interface
## [v1.44.7](https://github.com/ash-project/ash/compare/v1.44.6...v1.44.7) (2021-05-19)
### Bug Fixes:
- fix code interface + `args` combo error
### Improvements:
- support specifying the `upsert_identity` option
## [v1.44.6](https://github.com/ash-project/ash/compare/v1.44.5...v1.44.6) (2021-05-18)
### Bug Fixes:
- `ignore?: true` still accumulates changes
- properly require_attributes before setting defaults
## [v1.44.5](https://github.com/ash-project/ash/compare/v1.44.4...v1.44.5) (2021-05-18)
### Bug Fixes:
- set default values before calling resource changes
### Improvements:
- `ignore?` option for `manage_relationship` change
## [v1.44.4](https://github.com/ash-project/ash/compare/v1.44.3...v1.44.4) (2021-05-17)
### Bug Fixes:
- reverse-reverse relationship detection
## [v1.44.3](https://github.com/ash-project/ash/compare/v1.44.2...v1.44.3) (2021-05-17)
### Bug Fixes:
- support non-predicates in satsolver
## [v1.44.2](https://github.com/ash-project/ash/compare/v1.44.1...v1.44.2) (2021-05-15)
### Bug Fixes:
- raise better error w/ invalid filter expression
### Improvements:
- expose `default_value/1` in aggregate
- transactions for reads, notifications from read callbacks
## [v1.44.1](https://github.com/ash-project/ash/compare/v1.44.0...v1.44.1) (2021-05-14)
### Bug Fixes:
- handle error return in code_interface getter
## [v1.44.0](https://github.com/ash-project/ash/compare/v1.43.12...v1.44.0) (2021-05-14)
### Features:
- `on_no_match: :match` supported for to_one rels
### Bug Fixes:
- rename `context` -> `relationship_context` to avoid conflict
### Improvements:
- various managed relationship improvements
## [v1.43.12](https://github.com/ash-project/ash/compare/v1.43.11...v1.43.12) (2021-05-11)
### Improvements:
- set `__source__` context for embeds
- utility `manage_relationship_source` context
## [v1.43.11](https://github.com/ash-project/ash/compare/v1.43.10...v1.43.11) (2021-05-09)
### Bug Fixes:
- internal rename (requires version bump for other packages)
## [v1.43.10](https://github.com/ash-project/ash/compare/v1.43.9...v1.43.10) (2021-05-09)
### Bug Fixes:
- run action changes on destroy
- pattern match manage_relationship notifications fix
### Improvements:
- add `manual?` option for create/update/destroy
- ensure data layer can perform aggregates
## [v1.43.9](https://github.com/ash-project/ash/compare/v1.43.8...v1.43.9) (2021-05-09)
### Bug Fixes:
- don't fail on nil root filters
### Improvements:
- support filtering on related aggregates
- autoload aggregates used in filters
## [v1.43.8](https://github.com/ash-project/ash/compare/v1.43.7...v1.43.8) (2021-05-07)
### Bug Fixes:
- don't raise unnecessary side load error
## [v1.43.7](https://github.com/ash-project/ash/compare/v1.43.6...v1.43.7) (2021-05-07)
### Improvements:
- fix data-based side loads
## [v1.43.6](https://github.com/ash-project/ash/compare/v1.43.5...v1.43.6) (2021-05-07)
### Bug Fixes:
- IsNil function to IsNil operator
- function clause match error in not expression
## [v1.43.5](https://github.com/ash-project/ash/compare/v1.43.4...v1.43.5) (2021-05-07)
### Bug Fixes:
- limit 1 on to one side load queries
## [v1.43.4](https://github.com/ash-project/ash/compare/v1.43.3...v1.43.4) (2021-05-07)
### Improvements:
- support sorted relationships
## [v1.43.3](https://github.com/ash-project/ash/compare/v1.43.2...v1.43.3) (2021-05-06)
### Bug Fixes:
- don't consider contextual relationships as reverse relationships
- support `not` in query expressions
## [v1.43.2](https://github.com/ash-project/ash/compare/v1.43.1...v1.43.2) (2021-05-04)
### Bug Fixes:
- include aggregates in count request for aggregate filters
## [v1.43.1](https://github.com/ash-project/ash/compare/v1.43.0...v1.43.1) (2021-05-04)
### Bug Fixes:
- use base_query for aritifical limit/offset when loading
## [v1.43.0](https://github.com/ash-project/ash/compare/v1.42.0...v1.43.0) (2021-05-03)
### Features:
- rework lateral joins for many to many performance boost
### Improvements:
- add `read_action` option
## [v1.42.0](https://github.com/ash-project/ash/compare/v1.41.12...v1.42.0) (2021-04-29)
### Features:
- inner lateral join for many to many relationships
### Improvements:
- inner later join for many to many relationships
- support relationship filters
## [v1.41.12](https://github.com/ash-project/ash/compare/v1.41.11...v1.41.12) (2021-04-27)
### Improvements:
- add `has` filter predicate
## [v1.41.11](https://github.com/ash-project/ash/compare/v1.41.10...v1.41.11) (2021-04-26)
### Improvements:
- add `:list` aggregate kind
## [v1.41.10](https://github.com/ash-project/ash/compare/v1.41.9...v1.41.10) (2021-04-25)
### Bug Fixes:
- don't include `NotLoaded` in `manage_relationship`
## [v1.41.9](https://github.com/ash-project/ash/compare/v1.41.8...v1.41.9) (2021-04-23)
### Bug Fixes:
- compile time fixes
### Improvements:
- add `require_attributes` to create/update/destroy
## [v1.41.8](https://github.com/ash-project/ash/compare/v1.41.7...v1.41.8) (2021-04-21)
### Bug Fixes:
- don't consider nils for pkey matching
### Improvements:
- add first class support for enum types
- Add detailed parameter checking for Api read functions (#229)
## [v1.41.7](https://github.com/ash-project/ash/compare/v1.41.6...v1.41.7) (2021-04-18)
### Bug Fixes:
- clearer errors when resource fails to compile
- don't preload multiplicatively
- Decimal casting issues on ash_postgres (#227)
### Improvements:
- add list access to `context`
- add Resource.input/1
## [v1.41.6](https://github.com/ash-project/ash/compare/v1.41.5...v1.41.6) (2021-04-16)
### Bug Fixes:
- use items for single constraints
## [v1.41.5](https://github.com/ash-project/ash/compare/v1.41.4...v1.41.5) (2021-04-15)
### Bug Fixes:
- don't overwrite select in side_load
## [v1.41.4](https://github.com/ash-project/ash/compare/v1.41.3...v1.41.4) (2021-04-15)
### Bug Fixes:
- load relationships for management properly
- `fetch_key` bug in embedded types
- handle_indexed_maps for embedded types
## [v1.41.3](https://github.com/ash-project/ash/compare/v1.41.2...v1.41.3) (2021-04-14)
### Bug Fixes:
- handle no key provided to `NotFound`
## [v1.41.2](https://github.com/ash-project/ash/compare/v1.41.1...v1.41.2) (2021-04-13)
### Bug Fixes:
- embedded cast_stored must cast all key/values
- ci_string constraints when `nil`
- manage_relationship change turns embedded resources to maps
- fixes for common types parsing from embedded, e.g utc_datetime_usec
### Improvements:
- special provisions for casting to embedded type (e.g uuid)
## [v1.41.1](https://github.com/ash-project/ash/compare/v1.41.0...v1.41.1) (2021-04-13)
### Bug Fixes:
- `get!` should raise on `nil` not `{:ok, nil}`
## [v1.41.0](https://github.com/ash-project/ash/compare/v1.40.0...v1.41.0) (2021-04-13)
### Features:
- change `get?: true` interface functions to raise on `nil`
### Bug Fixes:
- allow_nil -> allow_nil_input
- allow api.load/2 to load calculations
### Improvements:
- add `allow_nil_input` to create actions for api layers
- add `load/1` builtin change
## [v1.40.0](https://github.com/ash-project/ash/compare/v1.39.7...v1.40.0) (2021-04-13)
### Features:
- change `get?: true` interface functions to raise on `nil`
### Bug Fixes:
- allow api.load/2 to load calculations
### Improvements:
- add `allow_nil_input` to create actions for api layers
- add `load/1` builtin change
## [v1.39.7](https://github.com/ash-project/ash/compare/v1.39.6...v1.39.7) (2021-04-12)
### Bug Fixes:
- always select necessary load fields for nested loads
## [v1.39.6](https://github.com/ash-project/ash/compare/v1.39.5...v1.39.6) (2021-04-10)
### Bug Fixes:
- always select necessary fields for side loading
## [v1.39.5](https://github.com/ash-project/ash/compare/v1.39.4...v1.39.5) (2021-04-09)
### Bug Fixes:
- logic bug in selecting specific fields
## [v1.39.4](https://github.com/ash-project/ash/compare/v1.39.3...v1.39.4) (2021-04-09)
### Improvements:
- support the datalayer selecting fields in reads
## [v1.39.3](https://github.com/ash-project/ash/compare/v1.39.2...v1.39.3) (2021-04-04)
### Improvements:
- add sum aggregate (#221)
## [v1.39.2](https://github.com/ash-project/ash/compare/v1.39.1...v1.39.2) (2021-04-04)
### Improvements:
- allow specifying that calculation can't be nil (#220)
## [v1.39.1](https://github.com/ash-project/ash/compare/v1.39.0...v1.39.1) (2021-04-03)
### Bug Fixes:
- update struct_field logic for latest ecto
- apply proper interface operation when opts aren't passed
## [v1.39.0](https://github.com/ash-project/ash/compare/v1.38.0...v1.39.0) (2021-04-01)
### Features:
- support `Ash.Query.distinct/2`
- add `build/2` query preparation
### Bug Fixes:
- manage*relationships \_before* after_action callbacks
### Improvements:
- `before_action?` on `validate`, validate inline
## [v1.38.0](https://github.com/ash-project/ash/compare/v1.37.2...v1.38.0) (2021-03-31)
### Features:
- support `Ash.Query.distinct/2`
- add `build/2` query preparation
### Bug Fixes:
- manage*relationships \_before* after_action callbacks
## [v1.37.2](https://github.com/ash-project/ash/compare/v1.37.1...v1.37.2) (2021-03-29)
### Bug Fixes:
- don't overwrite managed `belongs_to` relationships
- handle `on_lookup` + `on_no_match` for `belongs_to`
- fix required relationships and add test
- fix required relationships
- various managed_relationship fixes
## [v1.37.1](https://github.com/ash-project/ash/compare/v1.37.0...v1.37.1) (2021-03-28)
### Bug Fixes:
- fix required relationships and add test
- fix required relationships
- various managed_relationship fixes
## [v1.37.0](https://github.com/ash-project/ash/compare/v1.36.22...v1.37.0) (2021-03-25)
### Features:
- add manage relationship types
### Improvements:
- don't accept relationships on actions anymore
- require arguments
## [v1.36.22](https://github.com/ash-project/ash/compare/v1.36.21...v1.36.22) (2021-03-24)
### Bug Fixes:
- add tenant metadata before after action hooks
## [v1.36.21](https://github.com/ash-project/ash/compare/v1.36.20...v1.36.21) (2021-03-24)
### Bug Fixes:
- support type aliases in more type casting functions
- support `tenant` option in read interface
## [v1.36.20](https://github.com/ash-project/ash/compare/v1.36.19...v1.36.20) (2021-03-24)
### Bug Fixes:
- support `tenant` option in read interface
## [v1.36.19](https://github.com/ash-project/ash/compare/v1.36.18...v1.36.19) (2021-03-22)
### Bug Fixes:
- always return changeset when runner failed
## [v1.36.18](https://github.com/ash-project/ash/compare/v1.36.17...v1.36.18) (2021-03-22)
### Improvements:
- docs + dialyzer + error improvements
## [v1.36.17](https://github.com/ash-project/ash/compare/v1.36.16...v1.36.17) (2021-03-22)
### Bug Fixes:
- don't require values when managing relationships
- Revert "fix: force_change_attributes before passing to action"
## [v1.36.16](https://github.com/ash-project/ash/compare/v1.36.15...v1.36.16) (2021-03-22)
### Bug Fixes:
- force_change_attributes before passing to action
## [v1.36.15](https://github.com/ash-project/ash/compare/v1.36.14...v1.36.15) (2021-03-21)
### Bug Fixes:
- exception on invalid query arguments
- allow casting strings as uuids (for embedded types)
### Improvements:
- retain actor context from changeset
## [v1.36.14](https://github.com/ash-project/ash/compare/v1.36.13...v1.36.14) (2021-03-21)
### Improvements:
- Add float type (#204)
## [v1.36.13](https://github.com/ash-project/ash/compare/v1.36.12...v1.36.13) (2021-03-20)
### Bug Fixes:
- avoid exception in `Changeset.new/2` for bad attribute
- use ecto's uuid type under the hood
### Improvements:
- raise informative errors on bad inputs to `for_*`
## [v1.36.12](https://github.com/ash-project/ash/compare/v1.36.11...v1.36.12) (2021-03-19)
### Improvements:
- make `Ash.Error` a public module
## [v1.36.11](https://github.com/ash-project/ash/compare/v1.36.10...v1.36.11) (2021-03-19)
### Improvements:
- docs/default value for params
## [v1.36.10](https://github.com/ash-project/ash/compare/v1.36.9...v1.36.10) (2021-03-19)
### Bug Fixes:
- set `source_attribute` when replacing `belongs_to` relationship
- don't consider `false` as absent value
- set argument name in `manage_relationship`
### Improvements:
- trim whitespace in uuid
## [v1.36.9](https://github.com/ash-project/ash/compare/v1.36.8...v1.36.9) (2021-03-18)
### Improvements:
- improve the behavior of defaults
## [v1.36.8](https://github.com/ash-project/ash/compare/v1.36.7...v1.36.8) (2021-03-17)
### Bug Fixes:
- validate required attributes _after_ before_action hooks
## [v1.36.7](https://github.com/ash-project/ash/compare/v1.36.6...v1.36.7) (2021-03-17)
### Improvements:
- discard certain empty values for embed input
## [v1.36.6](https://github.com/ash-project/ash/compare/v1.36.5...v1.36.6) (2021-03-15)
### Bug Fixes:
- force*change attrs \_after* `for_create/update`
- pattern match errors in `manage_relationships`
- clean up some error cases
- only default accept to `public` attributes
- allow_nil?: false + default interaction
## [v1.36.5](https://github.com/ash-project/ash/compare/v1.36.4...v1.36.5) (2021-03-14)
### Bug Fixes:
- remove the `as` option
### Improvements:
- Add timestamps() attribute (#198)
## [v1.36.4](https://github.com/ash-project/ash/compare/v1.36.3...v1.36.4) (2021-03-13)
### Bug Fixes:
- properly validate `allow_nil?: false` on update
- properly validate `allow_nil?: false` private attributes
## [v1.36.3](https://github.com/ash-project/ash/compare/v1.36.2...v1.36.3) (2021-03-13)
### Bug Fixes:
- set argument default on cast
## [v1.36.2](https://github.com/ash-project/ash/compare/v1.36.1...v1.36.2) (2021-03-12)
### Bug Fixes:
- fix pub_sub on update
- fix `publish_all` pub_sub notifier
### Improvements:
- derive has_one destination_attribute
- finalize code API logic
- add not_found_message + violation_message for relationships
- support `get_by_<identity>` in interface
- support sublists in pub_sub topics
- support `:_tenant` in pub_sub topics
## [v1.36.1](https://github.com/ash-project/ash/compare/v1.36.0...v1.36.1) (2021-03-09)
### Bug Fixes:
- properly filter aggregates
### Improvements:
- accept `tenant` in `for_read`
## [v1.36.0](https://github.com/ash-project/ash/compare/v1.35.1...v1.36.0) (2021-03-08)
### Features:
- functional interface on the Api module
- resource aliases
### Improvements:
- update interface to accept query/changesets
- require completely unique action names
## [v1.35.1](https://github.com/ash-project/ash/compare/v1.35.0...v1.35.1) (2021-03-07)
### Bug Fixes:
- don't reverse sub-entities in DSL
## [v1.35.0](https://github.com/ash-project/ash/compare/v1.34.9...v1.35.0) (2021-03-07)
### Features:
- support `Ash.Query.select/3` and `Ash.Changeset.select/3`
## [v1.34.9](https://github.com/ash-project/ash/compare/v1.34.8...v1.34.9) (2021-03-05)
### Improvements:
- ignore destination field on some relationship inputs
## [v1.34.8](https://github.com/ash-project/ash/compare/v1.34.7...v1.34.8) (2021-03-05)
### Bug Fixes:
- various validation lifecycle fixes
- don't fetch sideloads for empty data
### Improvements:
- various validation lifecycle options
## [v1.34.7](https://github.com/ash-project/ash/compare/v1.34.6...v1.34.7) (2021-02-26)
### Bug Fixes:
- fix nested boolean expression optimization
## [v1.34.6](https://github.com/ash-project/ash/compare/v1.34.5...v1.34.6) (2021-02-24)
### Bug Fixes:
- manage_relationship fixes, input + option defaults
## [v1.34.5](https://github.com/ash-project/ash/compare/v1.34.4...v1.34.5) (2021-02-24)
### Bug Fixes:
- treat empty string as `nil` in `manage_relationship`
- be more conservative (and more correct) when optimizing predicates
## [v1.34.4](https://github.com/ash-project/ash/compare/v1.34.3...v1.34.4) (2021-02-24)
### Bug Fixes:
- treat empty string as `nil` in `manage_relationship`
- be more conservative (and more correct) when optimizing predicates
## [v1.34.3](https://github.com/ash-project/ash/compare/v1.34.2...v1.34.3) (2021-02-23)
### Bug Fixes:
- fix builtin `mange_relationship` change
## [v1.34.2](https://github.com/ash-project/ash/compare/v1.34.1...v1.34.2) (2021-02-23)
### Bug Fixes:
- support belongs_to relationships properly
## [v1.34.1](https://github.com/ash-project/ash/compare/v1.34.0...v1.34.1) (2021-02-23)
### Bug Fixes:
- authorize if actor key is present
## [v1.34.0](https://github.com/ash-project/ash/compare/v1.33.1...v1.34.0) (2021-02-23)
### Features:
- refactored manage_relationship options/behavior
### Improvements:
- many compile time fixes via code splitting
- Guess destination_attribute for has many relationships (#187)
- Implement string length validation (#183)
## [v1.33.1](https://github.com/ash-project/ash/compare/v1.33.0...v1.33.1) (2021-02-23)
### Improvements:
- many compile time fixes via code splitting
- Guess destination_attribute for has many relationships (#187)
- Implement string length validation (#183)
## [v1.33.0](https://github.com/ash-project/ash/compare/v1.32.2...v1.33.0) (2021-02-05)
### Features:
- add default_context
- add `manage_relationship/4`
- add relationship specific context (for postgres polymorphism)
- add `reject` (opposite of `accept`)
### Bug Fixes:
- support `manage_relationship` for `belongs_to`
### Improvements:
- set_context change/preparation
- set `accept` by default
## [v1.32.2](https://github.com/ash-project/ash/compare/v1.32.1...v1.32.2) (2021-01-28)
### Improvements:
- support `{:filter, _}` authorization results for changesets
## [v1.32.1](https://github.com/ash-project/ash/compare/v1.32.0...v1.32.1) (2021-01-27)
### Bug Fixes:
- only run authorization once per request
- don't error on replacing empty relationship with empty
### Improvements:
- support `tenant` option to `get/2`
- support `message` option on identities
## [v1.32.0](https://github.com/ash-project/ash/compare/v1.31.1...v1.32.0) (2021-01-25)
### Features:
- add `after_action` for queries
### Bug Fixes:
- default to calculating filters on `data_layer_query`
## [v1.31.1](https://github.com/ash-project/ash/compare/v1.31.0...v1.31.1) (2021-01-24)
### Bug Fixes:
- remove invalid boolean expression optimization
### Improvements:
- make form errors work better with phoenix
## [v1.31.0](https://github.com/ash-project/ash/compare/v1.30.2...v1.31.0) (2021-01-24)
### Features:
- add `contains/2` query function
### Bug Fixes:
- various ci_string improvements
## [v1.30.2](https://github.com/ash-project/ash/compare/v1.30.1...v1.30.2) (2021-01-22)
### Bug Fixes:
- add explicit jason dependency
## [v1.30.1](https://github.com/ash-project/ash/compare/v1.30.0...v1.30.1) (2021-01-22)
### Bug Fixes:
- update elixir versions in CI
## [v1.30.0](https://github.com/ash-project/ash/compare/v1.29.0-rc1...v1.30.0) (2021-01-22)
### Bug Fixes:
- add action filters in `for_read/3`
- don't let local runner processes mix up messages
- runtime filter filters properly
## [v1.29.0-rc1](https://github.com/ash-project/ash/compare/v1.28.0-rc0...v1.29.0-rc1) (2021-01-21)
## [v1.29.0-rc0](https://github.com/ash-project/ash/compare/v1.28.1...v1.29.0-rc0) (2021-01-21)
### Features:
- freeform expressions
- validatiosn in actions
- query arguments
- add `Ash.Query.for_read/3`
- return changeset with API errors
- add case insensitive string `CiString`/`:ci_string`
- support `context/1` and `arg/1` in filter templates
- support targeting notifications with the `for` option
- add `ago/2` query function
- add basic arithmetic operators (+, \*, -, /)
- `sensitive?` option for attributes
- `sensitive?` option for arguments
- `private` arguments, which canât be set using `for_<action>`
- add `prevent_change` which will erase changes just before the changeset is committed
- add `match?` validation that supports a custom error message
- add `interval` type to support `ago/2` function
- add `url_encoded_binary` type
- add `function` type
### Bug Fixes:
- properly expand module aliases for options w/o compile time dependency
### Improvements:
- support all string constraints for ci_string
- `changing?` is now a validation
- add `Transformer.get_persisted/3`
- add `api` field to `Notification`
- standardize errors, add `to_error_class`
- use `Comp` everywhere
- use action on changeset if set by `for_<action_type>`
- `action_failed?` field on change sets
- remove ability for data layers to add operators (for now at least)
- Changeset.apply_attributes/2 now returns an error tuple
- add a bunch of new/informative errors
- runtime filter now uses left join logic (a naive implementation of it)
- support more filter templates in resources
- basic/naive type system for operators/functions
- Add trim/allow_empty to string type (#171)
## [v1.28.1](https://github.com/ash-project/ash/compare/v1.28.0...v1.28.1) (2021-01-12)
### Improvements:
- Improve attribute defaults (#164)
## [v1.28.0](https://github.com/ash-project/ash/compare/v1.27.1...v1.28.0) (2021-01-12)
### Features:
- Add Embedded Resources (#170)
### Bug Fixes:
- Correct error message (#163)
### Improvements:
- Add built in decimal type (#162)
## [v1.27.1](https://github.com/ash-project/ash/compare/v1.27.0...v1.27.1) (2021-01-08)
### Bug Fixes:
- fix small sort bugs
### Improvements:
- add `Ash.Sort.parse_input/2`
## [v1.27.0](https://github.com/ash-project/ash/compare/v1.26.13...v1.27.0) (2021-01-08)
### Breaking Changes:
- Use usec timestamps by default
### Improvements:
- Add built in usec datetime type (#160) (#161)
## [v1.26.13](https://github.com/ash-project/ash/compare/v1.26.12...v1.26.13) (2021-01-08)
### Bug Fixes:
- only cast public relationships/attributes
## [v1.26.12](https://github.com/ash-project/ash/compare/v1.26.11...v1.26.12) (2021-01-08)
### Bug Fixes:
- `allow_nil?: false` for `integer_primary_key`
## [v1.26.11](https://github.com/ash-project/ash/compare/v1.26.10...v1.26.11) (2021-01-08)
### Improvements:
- add `for_<action>` helpers
## [v1.26.10](https://github.com/ash-project/ash/compare/v1.26.9...v1.26.10) (2021-01-07)
### Improvements:
- Add built in binary type (#156)
## [v1.26.9](https://github.com/ash-project/ash/compare/v1.26.8...v1.26.9) (2021-01-06)
### Bug Fixes:
- the `__resource__` change broke some extensions
## [v1.26.8](https://github.com/ash-project/ash/compare/v1.26.7...v1.26.8) (2021-01-06)
### Bug Fixes:
- add back `extensions/1` helper to resources
## [v1.26.7](https://github.com/ash-project/ash/compare/v1.26.6...v1.26.7) (2021-01-06)
### Bug Fixes:
- lazy loaded module issues (e.g in iex)
### Improvements:
- optimize not-in and fix dialyzer
- rework filter creation + subset checking
## [v1.26.6](https://github.com/ash-project/ash/compare/v1.26.5...v1.26.6) (2020-12-30)
### Bug Fixes:
- validate read action existence
### Improvements:
- support autocompletion on Api funcs
## [v1.26.5](https://github.com/ash-project/ash/compare/v1.26.4...v1.26.5) (2020-12-30)
### Improvements:
- default actions
## [v1.26.4](https://github.com/ash-project/ash/compare/v1.26.3...v1.26.4) (2020-12-30)
### Bug Fixes:
- fix compile issues, add docs
## [v1.26.3](https://github.com/ash-project/ash/compare/v1.26.2...v1.26.3) (2020-12-30)
### Improvements:
- add `parse_input/3` to `Ash.Filter`
## [v1.26.2](https://github.com/ash-project/ash/compare/v1.26.1...v1.26.2) (2020-12-29)
### Improvements:
- describe operator types
## [v1.26.1](https://github.com/ash-project/ash/compare/v1.26.0...v1.26.1) (2020-12-29)
### Bug Fixes:
- only accept kw list in `aggregate/5`
## [v1.26.0](https://github.com/ash-project/ash/compare/v1.25.8...v1.26.0) (2020-12-29)
### Features:
- support `:first` aggregate (#153)
- support more sort orders
## [v1.25.8](https://github.com/ash-project/ash/compare/v1.25.7...v1.25.8) (2020-12-27)
### Bug Fixes:
- separate builders + description in sections
## [v1.25.7](https://github.com/ash-project/ash/compare/v1.25.6...v1.25.7) (2020-12-27)
### Bug Fixes:
- support `examples` on dsl sections
## [v1.25.6](https://github.com/ash-project/ash/compare/v1.25.5...v1.25.6) (2020-12-27)
### Bug Fixes:
- cast string argument names
- uuid/id pkeys should `allow_nil`
## [v1.25.5](https://github.com/ash-project/ash/compare/v1.25.4...v1.25.5) (2020-12-23)
### Bug Fixes:
- support operators on both sides for not_eq
## [v1.25.4](https://github.com/ash-project/ash/compare/v1.25.3...v1.25.4) (2020-12-23)
### Bug Fixes:
- fix filtering for ets + mnesia data layers
## [v1.25.3](https://github.com/ash-project/ash/compare/v1.25.2...v1.25.3) (2020-12-23)
### Bug Fixes:
- various pagination, runtime, and auth bugs
- default pagination limit triggers pagination
## [v1.25.2](https://github.com/ash-project/ash/compare/v1.25.1...v1.25.2) (2020-12-06)
### Bug Fixes:
- resolve warning from nimbleoptions deprecation
## [v1.25.1](https://github.com/ash-project/ash/compare/v1.25.0...v1.25.1) (2020-12-02)
### Improvements:
- support confirming arguments, test allow_nil?
## [v1.25.0](https://github.com/ash-project/ash/compare/v1.24.2...v1.25.0) (2020-12-02)
### Features:
- support arguments for actions
## [v1.24.2](https://github.com/ash-project/ash/compare/v1.24.1...v1.24.2) (2020-12-01)
### Bug Fixes:
- various build fixes
- various small utility fixes
- update get-tag
## [v1.24.1](https://github.com/ash-project/ash/compare/v1.24.0...v1.24.1) (2020-11-08)
### Bug Fixes:
- do not require private attributes in create api (#143)
## [v1.24.0](https://github.com/ash-project/ash/compare/v1.23.3...v1.24.0) (2020-11-07)
### Features:
- add uuid_primary_key/2 and integer_primary_key/2
## [v1.23.3](https://github.com/ash-project/ash/compare/v1.23.2...v1.23.3) (2020-11-07)
### Bug Fixes:
- derived belongs_to attributes are required if their parent is
## [v1.23.2](https://github.com/ash-project/ash/compare/v1.23.1...v1.23.2) (2020-11-06)
### Bug Fixes:
- default create/update timestamps to private?
## [v1.23.1](https://github.com/ash-project/ash/compare/v1.23.0...v1.23.1) (2020-11-06)
### Bug Fixes:
- set proper pagination defaults
## [v1.23.0](https://github.com/ash-project/ash/compare/v1.22.1...v1.23.0) (2020-11-03)
### Features:
- Add property: private? for attributes, relationships, aggregates, and calculations (#140)
## [v1.22.1](https://github.com/ash-project/ash/compare/v1.22.0...v1.22.1) (2020-10-29)
### Improvements:
- support specifying that some options are modules
## [v1.22.0](https://github.com/ash-project/ash/compare/v1.21.0...v1.22.0) (2020-10-28)
### Features:
- multitenancy! and tons of various fixes (#139)
## [v1.21.0](https://github.com/ash-project/ash/compare/v1.20.1...v1.21.0) (2020-10-28)
### Improvements:
- trace $callers through engine genservers
## [v1.20.1](https://github.com/ash-project/ash/compare/v1.20.0...v1.20.1) (2020-10-21)
### Bug Fixes:
- better not_found error handling
## [v1.20.0](https://github.com/ash-project/ash/compare/v1.19.1...v1.20.0) (2020-10-21)
### Features:
- Optimize relationship records replacement (#135)
### Bug Fixes:
- remove unused code
- various fixes and improvements
## [v1.19.1](https://github.com/ash-project/ash/compare/v1.19.0...v1.19.1) (2020-10-17)
### Bug Fixes:
- invalid function arg parsing w/ ref
## [v1.19.0](https://github.com/ash-project/ash/compare/v1.18.1...v1.19.0) (2020-10-17)
### Features:
- pubsub notifier (#134)
## [v1.18.1](https://github.com/ash-project/ash/compare/v1.18.0...v1.18.1) (2020-10-16)
### Bug Fixes:
- engine hanging on parallel requests
## [v1.18.0](https://github.com/ash-project/ash/compare/v1.17.1...v1.18.0) (2020-10-15)
### Features:
- add notifiers (#133)
- Add `:one_of` constraint to the Atom type (#130)
## [v1.17.1](https://github.com/ash-project/ash/compare/v1.17.0...v1.17.1) (2020-10-12)
### Bug Fixes:
- bugs with keyset pagination
## [v1.17.0](https://github.com/ash-project/ash/compare/v1.16.2...v1.17.0) (2020-10-12)
### Features:
- Add pagination (#131)
## [v1.16.2](https://github.com/ash-project/ash/compare/v1.16.1...v1.16.2) (2020-10-10)
### Bug Fixes:
- parse functions properly
## [v1.16.1](https://github.com/ash-project/ash/compare/v1.16.0...v1.16.1) (2020-10-10)
### Bug Fixes:
- fix dialyzer
- fix certain versions of elixir having issues
## [v1.16.0](https://github.com/ash-project/ash/compare/v1.15.1...v1.16.0) (2020-10-08)
### Features:
- expression based filter
## [v1.15.1](https://github.com/ash-project/ash/compare/v1.15.0...v1.15.1) (2020-10-07)
## [v1.15.0](https://github.com/ash-project/ash/compare/v1.14.0...v1.15.0) (2020-10-06)
### Features:
- filter rewrite to op/function/ref based structure
- added description for missing resources (#117)
### Bug Fixes:
- add module name to errors (#127)
- Fix composite key in changeset functions (#125)
## [v1.14.0](https://github.com/ash-project/ash/compare/v1.13.4...v1.14.0) (2020-09-24)
### Features:
- descriptions for actions and relationships (#116)
### Bug Fixes:
- typespec/error message improvements
## [v1.13.4](https://github.com/ash-project/ash/compare/v1.13.3...v1.13.4) (2020-09-21)
### Bug Fixes:
- upgrade picosat dependency
- correct comment in UUID type (#115)
## [v1.13.3](https://github.com/ash-project/ash/compare/v1.13.2...v1.13.3) (2020-09-19)
### Features:
- set_attribute builtin change
- (greater_than/less_than)\_or_equal predicates
- support deletes as updates via "soft"
- support base_filters
### Bug Fixes:
- less_than predicate was flipped for runtime
## [v1.13.2](https://github.com/ash-project/ash/compare/v1.13.1...v1.13.2) (2020-09-07)
### Bug Fixes:
- remove delegate data layer (#112)
- delete process/global storage properly
## [v1.13.1](https://github.com/ash-project/ash/compare/v1.13.0...v1.13.1) (2020-09-04)
### Bug Fixes:
- Fix identities (#110)
## [v1.13.0](https://github.com/ash-project/ash/compare/v1.12.0...v1.13.0) (2020-09-02)
### Features:
- required belongs_to relationships (#107)
- support filter templates on read actions
- builtin concat calculation
- add changes to actions (#106)
- add `accept` option to create/update actions (#105)
- add `Ash.NotLoaded` back, simpler defaults
- improve errors (add stacktraces)
### Bug Fixes:
- various delegate data layer improvements
- engine halting issues
- resolve engine deadlocks
- support nested lists of filters
## [v1.12.0](https://github.com/ash-project/ash/compare/v1.11.1...v1.12.0) (2020-08-27)
### Features:
- add `one_of` validation
- add `simple` data layer, and make it default
### Bug Fixes:
- allow anonymous functions in the dsl
## [v1.11.1](https://github.com/ash-project/ash/compare/v1.11.0...v1.11.1) (2020-08-26)
### Bug Fixes:
- only update filter when its a filter
- set resource in delegation query
## [v1.11.0](https://github.com/ash-project/ash/compare/v1.10.0...v1.11.0) (2020-08-26)
### Features:
- support inner lateral joins (#100)
- add identities, to enhance `get` calls (#99)
- initial calculation support (#98)
- initial calculation support
### Bug Fixes:
- spec + dialyzer fixes
- spec mix task run as no_return
## [v1.10.0](https://github.com/ash-project/ash/compare/v1.9.0...v1.10.0) (2020-08-22)
### Features:
- Add delegate data_layer (#97)
## [v1.9.0](https://github.com/ash-project/ash/compare/v1.8.0...v1.9.0) (2020-08-19)
### Features:
- various custom data_layer features
## [v1.8.0](https://github.com/ash-project/ash/compare/v1.7.0...v1.8.0) (2020-08-18)
### Features:
- streamline `load` by accepting ok/error
### Bug Fixes:
- extensions: resolve duplicate nested entities
- use Ecto's NotLoaded for assocs for now
- create/update typespecs were wrong
## [v1.7.0](https://github.com/ash-project/ash/compare/v1.6.8...v1.7.0) (2020-08-17)
### Features:
- add `is_nil` predicate
### Bug Fixes:
- add lexical scope to DSL for imports
- crash on entity w/ no options specified
- convert `eq: nil` into is_nil, fix credo
## [v1.6.8](https://github.com/ash-project/ash/compare/v1.6.7...v1.6.8) (2020-08-15)
### Bug Fixes:
- some day tag names will work
## [v1.6.7](https://github.com/ash-project/ash/compare/v1.6.6...v1.6.7) (2020-08-15)
### Bug Fixes:
- get the tag name for real this time
## [v1.6.6](https://github.com/ash-project/ash/compare/v1.6.5...v1.6.6) (2020-08-15)
### Bug Fixes:
- try again to get the version name in tweets
## [v1.6.5](https://github.com/ash-project/ash/compare/v1.6.4...v1.6.5) (2020-08-15)
### Bug Fixes:
- get the version property
## [v1.6.4](https://github.com/ash-project/ash/compare/v1.6.3...v1.6.4) (2020-08-15)
### Bug Fixes:
- test out automatic tweeting
## [v1.6.3](https://github.com/ash-project/ash/compare/v1.6.2...v1.6.3) (2020-08-15)
### Bug Fixes:
- remove bad package reference from the docs
## [v1.6.2](https://github.com/ash-project/ash/compare/v1.6.1...v1.6.2) (2020-08-13)
### Bug Fixes:
- various fixes for graphql extension
## [v1.6.1](https://github.com/ash-project/ash/compare/v1.6.0...v1.6.1) (2020-08-10)
### Bug Fixes:
- `load` typespecs
## [v1.6.0](https://github.com/ash-project/ash/compare/v1.5.1...v1.6.0) (2020-08-10)
### Features:
- add named aggregates
### Bug Fixes:
- various fixes from json:api integration
## [v1.5.1](https://github.com/ash-project/ash/compare/v1.5.0...v1.5.1) (2020-07-24)
### Bug Fixes:
- scope data layer feature to aggregate kind
## v1.5.0 (2020-07-24)
### Features:
- group metadata by path and async?: false
- run aggregates async if not in query
- aggregations!
## [v1.4.1](https://github.com/ash-project/ash/compare/1.4.0...v1.4.1) (2020-07-20)
### Bug Fixes:
- simplify dsl building using `on_load`
## [v1.4.0](https://github.com/ash-project/ash/compare/1.3.1...v1.4.0) (2020-07-16)
### Features:
- allow editing join association attributes
## [v1.3.1](https://github.com/ash-project/ash/compare/1.3.0...v1.3.1) (2020-07-16)
### Bug Fixes:
- use proper errors everywhere
## [v1.3.0](https://github.com/ash-project/ash/compare/1.2.1...v1.3.0) (2020-07-15)
### Features:
- various small refactors + validations
## [v1.2.1](https://github.com/ash-project/ash/compare/1.2.0...v1.2.1) (2020-07-13)
### Bug Fixes:
- changeset + set_state issues
## [v1.2.0](https://github.com/ash-project/ash/compare/1.1.3...v1.2.0) (2020-07-13)
### Features:
- refactor changes into changesets
## [v1.1.3](https://github.com/ash-project/ash/compare/1.1.2...v1.1.3) (2020-07-09)
## [v1.1.2](https://github.com/ash-project/ash/compare/1.1.1...v1.1.2) (2020-07-09)
## [v1.1.1](https://github.com/ash-project/ash/compare/1.1.0...v1.1.1) (2020-07-09)
### Bug Fixes:
- small fixes
## [v1.1.0](https://github.com/ash-project/ash/compare/1.0.3...v1.1.0) (2020-07-09)
### Features:
- lots of docs, simplify query generation
- validate relationship keys
## [v1.0.3](https://github.com/ash-project/ash/compare/1.0.2...v1.0.3) (2020-07-08)
## [v1.0.2](https://github.com/ash-project/ash/compare/1.0.1...v1.0.2) (2020-07-07)
## [v1.0.1](https://github.com/ash-project/ash/compare/1.0.0...v1.0.1) (2020-07-07)
## [v1.0.0](https://github.com/ash-project/ash/compare/0.10.0...v1.0.0) (2020-07-07)
### Breaking Changes:
- remove initial subscriptions pass
### Features:
- general improvements
### Bug Fixes:
- in predicate + engine errors
## [v0.10.0](https://github.com/ash-project/ash/compare/0.9.1...v0.10.0) (2020-07-02)
### Breaking Changes:
- remove atom type, add docs
### Features:
- list types
- refactor ash types to modules, add constraints
### Bug Fixes:
- remove benchee, ensure mnesia always uses transactions
- try clearing cache to fix CI
- stop gitignoring the mnesia data layer
- try to fix ash.formatter task
- test/improve parallelizable requests
- require that resources have primary keys
## [v0.9.1](https://github.com/ash-project/ash/compare/0.9.0...v0.9.1) (2020-06-30)
### Bug Fixes:
- move to simpler transaction logic
## [v0.9.0](https://github.com/ash-project/ash/compare/0.8.0...v0.9.0) (2020-06-29)
### Features:
- add less_than and greater_than filter support
- validate all related resources in API
### Bug Fixes:
- fix tests/credo
- fix tests, add tests for gt/lt filters
## [v0.8.0](https://github.com/ash-project/ash/compare/0.7.0...v0.8.0) (2020-06-29)
### Features:
- cross data layer filters
- cross data layer filtering
## [v0.7.0](https://github.com/ash-project/ash/compare/0.6.5...v0.7.0) (2020-06-27)
### Features:
- section option configuration
### Bug Fixes:
- set persistent_term properly
## [v0.6.5](https://github.com/ash-project/ash/compare/0.6.4...v0.6.5) (2020-06-22)
### Bug Fixes:
- use authorization filters in side loads
## [v0.6.4](https://github.com/ash-project/ash/compare/0.6.3...v0.6.4) (2020-06-22)
### Bug Fixes:
- remove reverse relationships
## [v0.6.3](https://github.com/ash-project/ash/compare/0.6.2...v0.6.3) (2020-06-22)
### Bug Fixes:
- many filter/side load fixes/improvements
## [v0.6.2](https://github.com/ash-project/ash/compare/0.6.1...v0.6.2) (2020-06-20)
### Bug Fixes:
- allow side_load option on create/update
## [v0.6.1](https://github.com/ash-project/ash/compare/0.6.0...v0.6.1) (2020-06-20)
### Bug Fixes:
- raised error message contents
- parent error messages
- relationship path clause
## [v0.6.0](https://github.com/ash-project/ash/compare/0.5.2...v0.6.0) (2020-06-19)
### Features:
- boolean filter refactor (#78)
- predicate behaviour
## [v0.5.2](https://github.com/ash-project/ash/compare/0.5.1...v0.5.2) (2020-06-15)
### Bug Fixes:
- consider nested entities in ash.formatter
## [v0.5.1](https://github.com/ash-project/ash/compare/0.5.0...v0.5.1) (2020-06-15)
### Bug Fixes:
- compile application in ash.formatter task
## [v0.5.0](https://github.com/ash-project/ash/compare/0.4.0...v0.5.0) (2020-06-15)
### Features:
- extension section module imports, generated .formatter.exs (#71)
## [v0.4.0](https://github.com/ash-project/ash/compare/0.3.0...v0.4.0) (2020-06-14)
### Features:
- rebuild DSL inner workings for extensibility (#70)
- add `after_compile` and validate primary key
### Bug Fixes:
- dialyzer warnings
- honor the `authorize?` flag
### Improvements:
- add `date` support (#68)
## [v0.3.0](https://github.com/ash-project/ash/compare/0.2.0...v0.3.0) (2020-06-05)
### Features:
- remove name/type from ash core
### Bug Fixes:
- account for action/actor args to interface
- remove the rest of the deps on name/type
- add `resource_module?/1` back to `Ash`
## [v0.2.0](https://github.com/ash-project/ash/compare/0.1.9...v0.2.0) (2020-06-05)
### Features:
- use option schemas in the interface (#30)
## [v0.1.9](https://github.com/ash-project/ash/compare/0.1.8...v0.1.9) (2020-06-04)
### Bug Fixes:
- references to error handling code
- fix empty filter checks
## [v0.1.8](https://github.com/ash-project/ash/compare/0.1.7...v0.1.8) (2020-06-02)
This release is a test of our automatic hex.pm package publishing
## [v0.1.7](https://github.com/ash-project/ash/compare/0.1.6...v0.1.7) (2020-06-02)
This release is a test of our automatic hex.pm package publishing
## [v0.1.6](https://github.com/ash-project/ash/compare/0.1.5...v0.1.6) (2020-06-02)
This release is a test of our automatic hex.pm package publishing
## [v0.1.5](https://github.com/ash-project/ash/compare/0.1.4...v0.1.5) (2020-06-02)
This release is a test of our automatic hex.pm package publishing
## [v0.1.4](https://github.com/ash-project/ash/compare/0.1.3...v0.1.4) (2020-06-02)
This release covers the initial linting/dialyzing improvements
## (2020-06-01)
### Changelog Begins