Commit graph

1050 commits

Author SHA1 Message Date
Zach Daniel
7a1e32908a improvement: more flow features/fixes, debug step 2022-04-25 17:01:23 -04:00
Zach Daniel
d16432750f fix: use unpaginated read when loading 2022-04-20 19:43:41 -04:00
Zach Daniel
3fc088d1fc fix: properly handle errors in mnesia transactions
improvement: work on transaction flow steps
2022-04-20 14:38:35 -04:00
Frank Dugan III
f291680622
Chore: Fix typo (#318) 2022-04-20 10:17:59 -04:00
Zach Daniel
49929de5a1 fix: default custom steps to be async?: false 2022-04-19 12:04:25 -04:00
Zach Daniel
e7c6ac0f4f fix: get tests/dialyzer passing 2022-04-19 11:29:28 -04:00
Zach Daniel
6f9f0137ec chore: release version v1.52.0-rc.1 2022-04-18 23:50:26 -04:00
Zach Daniel
0de8b7bc2c chore: add flow descriptions 2022-04-18 21:13:36 -04:00
Zach Daniel
61f250d620 improvement: load on cast_stored in embedded type 2022-04-18 17:45:10 -04:00
Zach Daniel
7dc5e54af0 improvement: add descriptions to mermaid charts/flow 2022-04-18 13:39:54 -04:00
Zach Daniel
4e19223173 improvement: tons of engine/timeout improvements 2022-04-17 23:56:01 -04:00
Josh Price
c03c3d6175
improvement: implement NaiveDateTime type (#312) 2022-04-16 22:09:44 -04:00
Josh Price
21eca98530
improvement: Improve usability of finding by primary key (ID) (#294) 2022-04-16 13:25:34 -04:00
Josh Price
6ac4a84ec9
fix: Handle date type cast_input with nil value (#311) 2022-04-16 11:12:20 -04:00
Josh Price
cf314d5a6b
improvement: Add time type matching existing date type (#310) 2022-04-16 09:31:31 -04:00
Zach Daniel
e452c40919 chore: handle non-boolean values from runtime filter 2022-04-10 20:21:36 -04:00
Zach Daniel
9f21435dbf fix: fix expression logic
improvement: flow -> mermaid chart
improvement: flow tenants
improvement: fix nested map statements in flow
2022-04-10 20:00:57 -04:00
Zach Daniel
ea1adcf230 fix: remove IO.inspect 2022-04-08 02:15:46 -04:00
Zach Daniel
25f5a27525 fix: don't throw away timeout exit 2022-04-08 02:12:41 -04:00
Zach Daniel
20a9f76c8d fix: timeouts @ the engine, not the parent process 2022-04-08 02:04:26 -04:00
Zach Daniel
24d9948ddb fix: timeout logic was timing out after the fact 2022-04-08 01:48:45 -04:00
Zach Daniel
868bb9a6e7 fix: uniqueify list_refs even further 2022-04-07 22:53:56 -04:00
Zach Daniel
c98910add6 improvement: add dynamic allow list
improvement: uniqify list_references
2022-04-07 22:33:48 -04:00
Zach Daniel
5bf8c39975 improvement: set default timeout to 30_000 2022-04-07 02:13:41 -04:00
Joe Cole
6dcbe26abe
fix: Enforce unique action names (#308)
Co-authored-by: Joe Cole <{ID}+{username}@users.noreply.github.com>
2022-04-07 01:14:07 -04:00
Zach Daniel
e23f2a705d fix: pass tenant option to requests properly
docs: work on docs
2022-04-06 23:13:21 -04:00
Zach Daniel
0309f7131e improvement: fully deprecate the resource entity 2022-04-06 13:12:22 -04:00
Zach Daniel
be9e564d57 chore: fix identity docs/tests 2022-04-06 12:22:34 -04:00
Zach Daniel
4fc53baf5f improvement: add eager validate identities
improvement: percolate `nil` values in operators in ash expresion language (like SQL)
chore: more docs work
2022-04-06 12:00:32 -04:00
Damir Vandic
3ea7dc2ec0
fix: Fix typespecs in Ash.Api (#307) 2022-04-05 18:11:40 -04:00
Zach Daniel
7c13322aa4 improvement: add return_destroyed? option 2022-04-05 12:42:50 -04:00
Zach Daniel
84ed398980 chore: docs/ci work 2022-04-05 03:59:34 -04:00
Zach Daniel
a012287c3b fix: fix resource relationship validation 2022-04-04 15:18:53 -04:00
Zach Daniel
6c523b9752 continue working on docs 2022-04-04 14:55:05 -04:00
Zach Daniel
022708c6b5 improvement: add api option to relationships
improvement: make default actions and primary actions far more explicit

this begins the official 2.0.0 work
2022-04-04 01:48:37 -04:00
Zach Daniel
8aa71c1e2c fix: fix paths for load in flow
improvement: better error messages on unknown
2022-04-02 02:39:55 -04:00
Zach Daniel
59075efa03 fix: aggregate/calculation filter issues 2022-04-01 19:08:06 -04:00
Zach Daniel
ae630581ea improvement: better loading behavior for managed relationships
improvement: add lazy? option for loading
2022-04-01 15:17:01 -04:00
Zach Daniel
e017722868 improvement: show value in atom error list 2022-03-31 20:54:06 -04:00
Zach Daniel
0db42cb76a chore: update doc index 2022-03-31 20:37:40 -04:00
Zach Daniel
9bdd496688 improvements: remove no_modify? from read 2022-03-30 17:42:07 -04:00
Zach Daniel
c7ff13c2ef chore: build/lint 2022-03-30 11:37:44 -04:00
Zach Daniel
b7c6005acb improvement: add modify_query callback 2022-03-30 11:36:10 -04:00
tlietz
da5306c773
improve: Provide api read error message on no data set (#302) 2022-03-29 21:07:44 -04:00
Zach Daniel
b645b04c1d chore: add code_modules to doc index 2022-03-29 20:43:11 -04:00
Zach Daniel
5ba6439810 fix: show error message in NoSuchResource
improvement: add overview
2022-03-29 11:59:59 -04:00
Zach Daniel
2094c37272 chore: clear documentation out for a fresh start 2022-03-28 20:20:08 -04:00
Zach Daniel
49727a0447 improvement: add build_entity!
improvement: properly parse `{:_ref, path, name}`
improvement: add `deselect` to build
fix: import builtin preparations in global preparations block
2022-03-28 01:14:50 -04:00
tlietz
12cfe0d848
improvement: validates attributes and relationships have unique names (#300) 2022-03-27 20:00:19 -04:00
Zach Daniel
592daaad3f chore: WIP on doc index 2022-03-27 14:32:33 -04:00
Zach Daniel
e83c54a949 chore: add back guides 2022-03-27 13:08:27 -04:00
Zach Daniel
fed4ca7bb2 chore: fix doc index 2022-03-27 12:15:00 -04:00
Zach Daniel
8a5f7b3f84 chore: remove guides 2022-03-27 12:14:28 -04:00
Zach Daniel
d358f4dc49 chore: get started on guides 2022-03-27 00:49:41 -04:00
Zach Daniel
3c8636bc0b chore: update doc index 2022-03-25 16:08:51 -04:00
Zach Daniel
29b9569d15 chore: remove duplicate item from doc index 2022-03-25 00:37:08 -04:00
Zach Daniel
a5106c6095 improvement: validate no embeds in api 2022-03-25 00:18:56 -04:00
Zach Daniel
f9734af48c chore: get final tests passing 2022-03-24 23:36:43 -04:00
Zach Daniel
77bc84194a chore: set proper module for registry docs 2022-03-24 22:38:30 -04:00
Zach Daniel
cc58d7c9ba chore: separate ash doc index from doc index 2022-03-24 22:29:18 -04:00
Zach Daniel
e7f9bfe88c chore: move to a DocIndex pattern 2022-03-24 22:25:14 -04:00
Zach Daniel
90be7959b5 chore: fix syntax error from docs change 2022-03-24 10:02:28 -04:00
Zach Daniel
6ffd216892 chore: more docs tweaks 2022-03-24 01:01:43 -04:00
Zach Daniel
7b02117531 chore: more extension docs for new docs site 2022-03-24 00:27:21 -04:00
Zach Daniel
27df3f0ba8 chore: begin work on extension auto-doc features 2022-03-24 00:02:29 -04:00
Zach Daniel
e10112113c fix: add load option convenience for reads/code interface
fix: handle errors in all action types where `changeset` wasn't resolved
2022-03-23 23:22:03 -04:00
Zach Daniel
b12f12be49 improvement: properly attach authorization_filters to loaded items 2022-03-22 23:19:07 -04:00
Zach Daniel
f5502ff8ff fix: always sanitize requests before we spawn them 2022-03-22 18:40:10 -04:00
Zach Daniel
b5b0067880 fix: context name in loading manual relationships
chore: try setting authorizer? explicitly on engine opts to resolve a bug
2022-03-22 18:34:58 -04:00
Maciej Malecki
e1250b419a
Fix the typespec for the Ash.Changeset.get_data/2 function (#295) 2022-03-22 10:01:19 -04:00
Zach Daniel
880a17f197 fix: get aggregate query from proper engine path 2022-03-20 21:16:46 -04:00
Zach Daniel
23ea0ee056 fix: handle error case in create
improvement: add `ref` template helper
fix: don't require attributes if an argument overrides them
2022-03-20 20:39:47 -04:00
Zach Daniel
7ba9715f27 fix: fix hanging issue when adding engine requests 2022-03-20 01:08:39 -04:00
Zach Daniel
96c45e1a58 improvement: add transaction steps to flow
fix: don't require `writable?: false` attributes
2022-03-19 23:51:45 -04:00
Zach Daniel
920dff7f00 fix: pull aggregate values properly 2022-03-15 19:55:23 -04:00
Zach Daniel
81dcbf1bdf fix: fix nested section configs having wrong path 2022-03-15 18:58:21 -04:00
Zach Daniel
a53b61ddf4 feat: add Ash.Flow
feat: support recursive DSL entities.
improvement: unimport to avoid name collisions in nested DSLs
2022-03-15 17:42:29 -04:00
Zach Daniel
335fa523f2 improvement: disable lexical tracker when expanding aliases 2022-03-02 01:04:57 -05:00
Zach Daniel
b6c16897f3 improvement: temporarily move init to runtime for changes 2022-03-01 21:50:36 -05:00
Zach Daniel
f50cf32b7b fix: don't rescue errors in resource_formatter
fix: add `input/2` to resource modules
2022-02-23 10:37:15 -05:00
Zach Daniel
d38320b00d fix: move back to more efficient formatter
However, we now only format the topmost module of a file, due to
unresolved bugs that happened with multiple nested resources
2022-02-20 23:16:23 -05:00
Zach Daniel
ba1b39536e feat: manual relationships
fix: make the formatter safer, again
2022-02-20 22:46:39 -05:00
kernel-io
7121c56b70
fix: typo in changeset.ex (#291) 2022-02-17 12:55:12 -05:00
Zach Daniel
ab4e724af6 fix: don't blow away sections when formatting 2022-02-17 12:51:21 -05:00
Zach Daniel
f6b71e6b5b fix: properly reorder sections in the formatter 2022-02-17 12:44:30 -05:00
Zach Daniel
268bc39a4c fix: solve reorder bugs in formatter 2022-02-17 02:48:03 -05:00
Zach Daniel
15bdae0d99 feat: add source option to attributes 2022-02-14 11:38:45 -05:00
Zach Daniel
da04a883d9 improvement: add cast_in_query?/0 to Ash.Type 2022-02-14 10:23:17 -05:00
Zach Daniel
ca6a79c360 improvement: small data layer improvements 2022-02-11 15:52:23 -05:00
Zach Daniel
334a73984c improvements: add is_expr?, allow aggregates in aggregates 2022-02-09 12:13:51 -05:00
Zach Daniel
0268c06c63 fix: include a missing module
fix: properly set filterability on attributes
2022-02-07 16:36:51 -05:00
Zach Daniel
079b941e90 chore: release version v1.50.18 2022-02-07 15:39:12 -05:00
Zach Daniel
1b2d28eb90 fix: no IO.inspect, and log errors from formatting 2022-02-02 17:14:29 -05:00
Zach Daniel
4138bd4934 improvement: initial implementation of ash resource formatter 2022-02-02 17:02:43 -05:00
Zach Daniel
9eff65758c improvement: ensure no reserved names can be used as constraints 2022-02-02 17:02:43 -05:00
Zach Daniel
9143cf2359 chore: release version v1.50.17 2022-01-31 15:05:43 -05:00
Zach Daniel
5ba1cf5a1e improvement: optimize if and is_nil functions
chore: change alpha -> beta
2022-01-27 15:17:21 -05:00
Zach Daniel
7a7cb12de7 fix: use ash_struct_fields to accumulate schema struct field defaults 2022-01-24 14:36:08 -05:00
Zach Daniel
7174fa8583 improvement: add where to change 2022-01-19 16:33:01 -05:00
Zach Daniel
501f375e60 fix: don't call add_aggregates w/ a map 2022-01-19 16:32:44 -05:00
Zach Daniel
101628471e improvement: support data layers bulk adding aggregates 2022-01-12 13:47:01 -05:00
Zach Daniel
ef81843240 fix: allow new filter pattern in typespec 2021-12-21 13:06:19 -05:00
Zach Daniel
ce3ae44a4c improvement: add more authorizer state management
Added more opportunities for authorizers to pass back state.
This is being used to ensure that ash policy authorizer errors
can always have enough information to provide a policy breakdown
2021-12-21 12:24:12 -05:00
Zach Daniel
6b95dec339 improvement: customizable exception for authorizers 2021-12-21 01:07:06 -05:00
Zach Daniel
77f5e69c8c fix: fix recursion in do_reverse_relationship_path/3 2021-12-20 22:13:52 -05:00
Zach Daniel
f0870461a4 fix: properly construct reverse relationship paths 2021-12-20 21:13:14 -05:00
Zach Daniel
e40806e021 improvement: cover more potential cases in filter parsing 2021-12-19 15:39:31 -05:00
Zach Daniel
2986838a19 fix: support new versions of ecto's struct fields
fix: fixes for elixir_sense plugin
2021-12-19 00:12:10 -05:00
Zach Daniel
6c5198eea4
improvement: add elixir_sense extension, to be merged when ready (#275) 2021-12-13 18:17:34 -05:00
Zach Daniel
88168de320 improvement: add Ash.DataLayer.Simple.set_data/2
docs: add data-layer-less resource guide
2021-12-07 21:39:07 -05:00
Zach Daniel
3ee5b059b0 improvement: complete mutually_exclusive_and_collectively_exhaustive logic 2021-12-07 15:08:50 -05:00
Zach Daniel
4448a4eeb7 improvement: catch more equivalencey cases around is_nil in sat solver 2021-12-06 16:50:33 -05:00
Zach Daniel
e1cd19950e fix: undo an unnecessary contains change 2021-12-06 00:33:25 -05:00
Zach Daniel
9fdb56587c fix: WIP attempt to resolve ci_string typing errors 2021-12-06 00:25:07 -05:00
Zach Daniel
d9ce401bb4 fix: case clause error in Query.equivalent_to? 2021-12-01 14:59:23 -05:00
Zach Daniel
48d88151ba fix: missing rename on refactor 2021-12-01 14:04:14 -05:00
Zach Daniel
6fcff37659 fix: typo in unquote 2021-12-01 14:03:48 -05:00
Zach Daniel
a5b130e5f4 improvement: expose small filter helpers 2021-12-01 14:02:44 -05:00
Zach Daniel
a46b5268d1 fix: mark contains as a predicate
improvement: make to_simple_filter fail better, add failure option
2021-11-29 14:06:31 -05:00
Zach Daniel
df306ef2ad improvement: add Transformer.eval/3 (for special use cases only) 2021-11-26 14:59:37 -05:00
Zach Daniel
83b2d13910 improvement: track defaults being set 2021-11-24 19:09:39 -05:00
Zach Daniel
2dbdc06536 improvement: add Ash.Query.equivalent_to/2
docs: small documentation tweaks
2021-11-16 22:46:14 -05:00
Zach Daniel
b6094b1e9c improvement: add subset_of? and superset_of? query macros 2021-11-16 19:17:57 -05:00
Zach Daniel
b26e272bb4 fix: run calculations inline by default 2021-11-13 14:43:51 -05:00
Michael St Clair
f9b7223d91
fix: use Date.add when using LessThanOrEqual with date value (#281) 2021-11-13 14:11:32 -05:00
Zach Daniel
7cb4401d8e improvement: support do/else blocks in if
improvement: support `cond`
2021-11-13 13:48:25 -05:00
Zach Daniel
f124e9bf7c fix: cast nil input on strings
docs: add line on multitenancy
2021-11-11 14:27:57 -05:00
Zach Daniel
034ed97efe fix: simplify and improve allow_nil checking 2021-11-09 03:26:50 -05:00
Zach Daniel
f16ffb3782 improvement!: breaking!: explicitly setting a value to nil on create no longer falls back to the default value
This behavior is more expected than silently switching back to the default, but it does have the potential
to cause issues for those relying on the old behavior. To get the *old* behavior, you'd want to add a change
that does something like `if is_nil(Ash.Changeset.get_attribute(changeset, :attribute)) do` to check if
it should set the value, and then uses `Ash.Changeset.change_attribute/2` to make the change
2021-11-09 00:39:19 -05:00
Zach Daniel
1d68df5cd3 improvement: add set_new_attribute/2 2021-11-09 00:01:59 -05:00
Zach Daniel
23dfebc59f chore: add code interface docs 2021-11-07 01:24:45 -04:00
Zach Daniel
629708eecc improvement: still filter in cases w/o a lateral join on load
fix: don't ask the data layer to sort if no sort is applied
2021-11-03 17:21:29 -04:00
kernel-io
3b06998df5
fix: set tenant at start of query build (#278) 2021-11-02 16:59:55 -04:00
Zach Daniel
ca631d27da improvement: only_when_valid? on changes
fix: set storage_type to `:uuid` for Ash.Type.UUID
2021-11-01 04:39:13 -04:00
Zach Daniel
68d7d10877 fix: remove IO.inspect 2021-10-29 19:53:24 -04:00
Zach Daniel
cd70686a4e fix: add changes from last release that I forgot 2021-10-29 18:39:13 -04:00
Zach Daniel
ea73432ff1 improvement: compile time optimizations via configuration
improvement: breaking change! if you were previously relying on the undocumented
ability to configure resources using application config, you will no longer configure
them as `config :ash, DslEntity`, but rather you will set an otp_app on the entity,
e.g `use Ash.Resource, otp_app: :otp_app`, and then you'll configure that via
`config :otp_app, MyApp.Resource, ...`
2021-10-29 17:21:05 -04:00
kernel-io
4113595f69
fix: correctly handle errors in validate_required_belongs_to (#276) 2021-10-28 17:38:14 -04:00
Zach Daniel
9613ab812c fix: set actor when loading to manage belongs_to
improvement: set `action` into data layer context
2021-10-28 16:11:11 -04:00
Zach Daniel
dc25e9d7e4 fix: cast to string before concatenating 2021-10-26 11:54:44 -04:00
Zach Daniel
13cffc852c fix: always lateral join for many to many relationships
improvement: add `default` option for aggregates
2021-10-25 18:48:35 -04:00
Zach Daniel
05d8eb1741 improvement: add allow_async? to calculations, default to false
improvement: add elixir evaluation step to expression calculations
2021-10-25 17:53:51 -04:00
Zach Daniel
e17daf6b02 improvement: global resource preparations
fix: unset `load` when running calculation queries
2021-10-25 16:59:11 -04:00
Zach Daniel
358a1b5cae fix: breaking change! disambiguating functions in keyword filter syntax
it was possible to call functions in the form of `[function_name: [...args]]`,
but if you had relationships that overlapped w/ the function name that would cause problems.
To disambiguate, function arguments must now be provided as a tuple, e.g
`[function_name: {...args}]`.
2021-10-24 14:19:38 -04:00
Zach Daniel
e765eb5e10 fix: use correct typespec for Ash.Sort.parse_input/2 2021-10-23 02:51:49 -04:00
Zach Daniel
8683ca46c9 chore: set default for get? 2021-10-21 22:13:10 -04:00
Zach Daniel
0e66801ebe improvement: add get? metadata 2021-10-21 22:12:28 -04:00
Zach Daniel
f0ab170b5d chore: remove IO.inspect 2021-10-21 18:11:35 -04:00
Zach Daniel
1805c21075 improvement: custom error paths for managed relationships 2021-10-21 18:09:13 -04:00
Zach Daniel
d8f6aaedf2 fix: honor get_by and get_by_identity on bang (!) interfaces 2021-10-20 01:43:31 -04:00
Zach Daniel
5e6442c3e4 improvement: add get_by and get_by_identity to code interface
improvement: compile time validations for managed relationships
2021-10-19 21:39:30 -04:00
Zach Daniel
a4fef11c6e fix: don't require primary actions if disabled 2021-10-19 05:25:33 -04:00
Zach Daniel
3bad25c1e0 improvement: add primary_actions? option 2021-10-19 04:42:35 -04:00
Zach Daniel
38b357ade9 fix: don't validate allow_nil in attribute casting 2021-10-15 17:13:01 -04:00
Zach Daniel
1f2f9802a3 fix: fix code interface on resources
improvement: 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
switch to the resource based one by specifying `define_for YourApp.YourApi` in the `code_interface` block of each resource.
improvement: use proper equality checking in places where we were using simple elixir equality checking
2021-10-13 18:42:42 -04:00
Zach Daniel
863ed1520f fix: honor base query still when removing filters 2021-10-11 20:06:13 -04:00
Zach Daniel
922c87ea85 improvement: add resource registry validation
fix: move related field validations to resource
fix: remove join_attributes, which didn't do anything anyway
2021-10-11 15:14:33 -04:00
Zach Daniel
028c0c6c32 improvement: support module_prefix for dsl extensions
fix: handle errors when validation calculation constraints
2021-10-08 15:59:15 -04:00
Zach Daniel
9fbc2921f9 fix: remove certain modules from avoiding recompilation 2021-10-07 13:37:37 -04:00
Zach Daniel
ff756b72a7 improvement: deprecation!
A deprecation warning will be shown at compile time to illustrate
a change from listing all of your resources in an api to listing
them in a registry and connecting that registry to the api
2021-10-07 02:41:02 -04:00
Zach Daniel
87627993b8 improvement: breaking change! don't define code interface by default
In an effort to improve compile times in general, and remove unnecessary
compile time dependencies, the code interface is not defined by default.
It is also now possible to define the code interface directly in the resource module,
via

```elixir
code_interface do
  define_for ApiModule
end
```

If you need to reenable the code interface, simply add the following to your api module:
```elixir
resources do
  define_interfaces? true
  ...
end
```
2021-10-06 17:43:22 -04:00
Zach Daniel
a955d89b8f fix: make arrays default to nil_items?: false 2021-10-04 13:23:23 -04:00
Michael St Clair
8af32a0053
chore: Bring over changes committed to master branch (#271)
Co-authored-by: kernel-io <git@omnium.co>
Co-authored-by: Zach Daniel <zach@zachdaniel.dev>
Co-authored-by: kernel-io <kernel-io@users.noreply.github.com>
2021-10-01 23:27:35 -04:00
Zach Daniel
c19acf767c fix: support on for global changes
improvement: skip resource action if no changes have been made
improvement: add `changing_attributes?/1` to determine if any attributes are chaning
2021-09-20 16:30:30 -04:00
Zach Daniel
61dcd56d0e fix: return proper result when input is struct 2021-09-19 14:17:14 -04:00
Zach Daniel
bead3f528e improvement: add global changes 2021-09-18 21:57:44 -04:00
Zach Daniel
63b141a0b8 fix: remove File.read! from docs 2021-09-17 17:51:31 -04:00
Zach Daniel
1f47e63c0c improvement: upgrade docs/tooling for elixir_sense 2021-09-17 17:44:11 -04:00
Zach Daniel
b2fea24a25 improvement: set docs statically 2021-09-17 01:43:18 -04:00
Zach Daniel
294130e3f3 improvement: improvements for elixirsense integration 2021-09-17 01:22:55 -04:00
Zach Daniel
3aaba3f340 improvement: transformer/extension improvements
improvement: add path to errors
2021-09-16 03:41:33 -04:00
Zach Daniel
3a284bb644 improvement: remove IO.inspect :*( and fix sobelow 2021-09-15 13:51:46 -04:00
Zach Daniel
c2bd76cba2 fix: set tenant properly on create interface 2021-09-15 13:50:11 -04:00
Zach Daniel
4e23e63428 improvement: support non-endpoint pubsub adapters 2021-09-14 17:17:56 -04:00
kernel-io
63a16be5de
fix: update type spec for Ash.Sort to include single atom instead of only list. (#263) 2021-09-13 21:52:48 -04:00
Zach Daniel
78aabebc38 fix: check action type properly in attribute validations 2021-09-13 16:18:17 -04:00
Zach Daniel
05b279a029 improvement: use paramaterized types under the hood
improvement!: update ecto version
fix: pass constraints to sub-fields loaded in embeddable resources
2021-09-13 11:46:11 -04:00
Zach Daniel
3ce4e68c80 fix: take creates into account w/ attribute_equals and attribute_does_not_equal 2021-09-12 22:31:11 -04:00
Zach Daniel
86e2648c91 fix: set changeset in destroy authorization request 2021-09-12 16:55:31 -04:00
Zach Daniel
a55696ef57 improvement: add after_action option to create/update 2021-09-12 02:03:41 -04:00
Zach Daniel
bb0dda0f11 fix: return not found in all cases on get 2021-09-09 00:10:15 -04:00
Zach Daniel
97e08f7b92 fix: don't allow get! to return nil
fix: don't do db filters on creation
2021-09-08 23:57:45 -04:00
Zach Daniel
64ec412e5d improvement: add config :ash, disable_async?: true 2021-09-08 22:55:22 -04:00
Zach Daniel
c7cfa878e7 docs: update description of allow_nil_input 2021-09-08 22:52:18 -04:00
Zach Daniel
d200d354e7 fix: honor allow_nil_input in required validations 2021-09-08 22:51:22 -04:00
Zach Daniel
008ee84ddb improvement: add meta[:order] option for managed relationships 2021-09-02 12:45:38 -04:00
Zach Daniel
541545baa3 fix: hydrate metadata types 2021-08-29 15:14:29 -04:00
Zach Daniel
f4899a72f4 improvement: remove metadata from read actions 2021-08-29 14:20:02 -04:00
Zach Daniel
47bacbfe84 chore: fix lint/format 2021-08-27 20:35:25 -04:00
Zach Daniel
a22b689b07 improvement: support action level metadata 2021-08-27 20:34:20 -04:00
Zach Daniel
d786aadec7 improvement: add on_match: :destroy option 2021-08-27 01:45:13 -04:00
Zach Daniel
fed720bb59 fix: cast nil enum values propertly
improvement: if a map is given for a list, take it's keys
2021-08-22 03:54:11 -04:00
Zach Daniel
c6cafd94cc fix: set api in destroy action hooks
improvement: set better error paths for invalid relationships
improvement: include api in changeset inspect
2021-08-16 10:55:15 -04:00
Zach Daniel
ad2f678b7e fix: set argument defaults early
fix: don't add indices to non-list inputs in managed relationships
2021-08-11 10:43:21 -04:00
Zach Daniel
7ae048ac9d fix: stop managed relationships from sourcing wrong data
This one took a while to finally figure out! Because belongs_to
relationships are managed *before* the action, and the data coming
into the calls to `manage_relationship` already has the new related
value, we need to use the original data from `changeset.data`. But
when I "fixed" it the first time, I made *everything* do that, which
is not correct, because the original data for the rest of the
relationships has not been loaded at that point yet. So belongs_to
gets its original data from `changeset.data` and the rest gets it
from the result of running the action.
2021-08-05 01:43:40 -04:00
Zach Daniel
1d6d5c8542 fix: redact fields in the resource struct as well 2021-08-04 19:16:49 -04:00
Zach Daniel
1c83f96d27 fix: allow before_action to manage belongs_to relationships 2021-08-04 11:35:32 -04:00
Zach Daniel
8e11a63e83 fix: load belongs to relationships before managing them 2021-08-03 03:26:01 -04:00
Zach Daniel
4e11e3f0ac fix: don't lookup nil input 2021-08-03 00:50:45 -04:00
Zach Daniel
202c3344dc chore: proper case clause syntax 2021-08-03 00:34:26 -04:00
Zach Daniel
e81028170d fix: don't look for matches for nil 2021-08-03 00:17:36 -04:00
Zach Daniel
d82ea58dbe fix: don't accept list inputs for managed belongs_to 2021-08-03 00:12:05 -04:00
Zach Daniel
a382a8ae20 fix: don't use list inputs in belongs_to managed 2021-08-03 00:00:37 -04:00
Zach Daniel
80cedce2a2 fix: remove belongs to related after action 2021-08-02 11:02:38 -04:00
Zach Daniel
a3ee29c433 fix: fix more cases where belongs_to isn't replaced 2021-08-01 18:48:12 -04:00
Zach Daniel
4872e357ed chore: format code 2021-08-01 14:08:03 -04:00
Zach Daniel
288cf49153 fix: honor on_missing: behavior for belongs_to relationships 2021-07-31 16:07:51 -04:00
Zach Daniel
9e5e958feb fix: properly remove old belongs_to records 2021-07-30 12:42:24 -04:00
Zach Daniel
73578f6806 chore: remove IO.inspect 2021-07-27 23:04:22 -04:00
Zach Daniel
1f5538c7f0 fix: set source_query tenant in lateral join 2021-07-27 22:58:45 -04:00
Zach Daniel
13e06524a7 improvement: add belongs_to attributes *after* the others 2021-07-26 20:55:44 -04:00
Zach Daniel
8f88cca020 improvement: pull relationship paths out of functions 2021-07-25 17:58:27 -04:00
Zach Daniel
dd7f5a8e8b fix: no need to trap exits anymore 2021-07-23 13:16:42 -04:00
Zach Daniel
80e64ee4ad fix: don't match on explicitly :exit 2021-07-23 12:12:37 -04:00
Zach Daniel
e0605f2bf0 fix: catch normal exit message from engine 2021-07-23 09:53:25 -04:00
Zach Daniel
b2ae6dc3ea fix: flush engine state always 2021-07-23 09:45:47 -04:00
Zach Daniel
4ea0e62a79 chore: ensure compiled in a different place
chore: credo
2021-07-22 16:26:02 -04:00
Frank Dugan III
8ba1a9a4c8
feat(Ash.Resource.Info): add &public_field/2 helper (#254)
feat(Ash.Resource.Info): add &sortable?/3 helper
2021-07-22 16:23:54 -04:00
Zach Daniel
d95a0e1662 fix: load calculations from sorts properly 2021-07-22 15:22:53 -04:00
Zach Daniel
11c1762f82 fix: fix complex attribute check 2021-07-22 13:20:42 -04:00
Zach Daniel
579c83e20c fix: disallow aggregate/calculation sorting w/ keyset pagination
This can be fixed by configuring pagination to fetch the resource by keyset
(so keyset is only ever primary key), but will perform worse because
we have to fetch the record. If someone would like to implement this,
let me know.
2021-07-22 12:47:43 -04:00
Zach Daniel
64568e5526 imrovement: handle sorts w/o an order in keyset pagination 2021-07-22 11:24:42 -04:00
Zach Daniel
0b8b704e2c fix: ensure calculation compiled 2021-07-21 00:07:35 -04:00
Zach Daniel
247abbb833 fix: don't limit/offset aggregate queries 2021-07-19 22:07:00 -04:00
Zach Daniel
857b0d0a12 fix: call get_type in cast_stored again 2021-07-19 20:58:18 -04:00
Zach Daniel
42aa56237b improvement: speed up type loading
improvement: add `__order__` field to be used by data layers
chore: fix typespec for aggregates
2021-07-19 13:52:49 -04:00
Zach Daniel
1df33b7efd improvement: add force? option to apply_attributes/2 2021-07-18 19:25:54 -04:00
Zach Daniel
e306e1d7fc fix: missing apply_attributes clause 2021-07-18 18:22:59 -04:00
Zach Daniel
2d9d96e699 fix: demonitor engine pid after run 2021-07-18 03:26:57 -04:00
Zach Daniel
0427a7a7c4 fix: on_lookup read is always on destination 2021-07-18 02:30:04 -04:00
Zach Daniel
e6010816c3 chore: fix dialyzer 2021-07-16 20:09:40 -04:00
Zach Daniel
03e5ae4a7a fix: set item constraints properly
improvement: add on_lookup_read_action
2021-07-16 20:01:36 -04:00
Zach Daniel
19199f5b00 improvement: add in error paths for managed relationships 2021-07-14 20:14:40 -04:00
Zach Daniel
38a08bf2a6 improvement: set error paths on managed rels 2021-07-14 01:47:45 -04:00
Zach Daniel
409e47e02c fix: fix simple data layer filtering 2021-07-11 19:18:43 -04:00
Zach Daniel
50b23a1656 improvement: always replace error message vars
improvement: minimize relationship source changeset context inspect size
2021-07-09 13:07:49 -04:00
Darren Black
6b6062ace6
Fix atom casting more (#253) 2021-07-08 00:39:01 -04:00
Darren Black
57da53a7bc
Fix atom casting when empty string (#252) 2021-07-08 00:24:05 -04:00
Zach Daniel
678533a8cb chore: remove unused variable 2021-07-07 23:52:33 -04:00
Zach Daniel
c9a19a7c2c fix: cast empty string to nil in atom 2021-07-07 23:51:54 -04:00
Zach Daniel
e2cd33fac3 fix: accept strings for atom types again 2021-07-07 22:25:41 -04:00
Zach Daniel
a8b137c1bb fix: don't turn strings to atoms in :atom type 2021-07-07 16:31:52 -04:00
Darren Black
1d2befc6c9
docs: Fix atom constraint documentation (#251) 2021-07-07 00:29:35 -04:00
Zach Daniel
cc9efeee14 fix: don't do unnecessary validation in type 2021-07-06 19:57:58 -04:00
Zach Daniel
65113a075f fix: build aggregate paths properly 2021-07-05 14:25:04 -04:00
Zach Daniel
da77b2e824 improvement: info only required? flag for has_one 2021-07-04 16:42:47 -04:00
Zach Daniel
5f05f683c2 fix: properly determine reverse aggregate relationship
fix: ensure calculation modules are compiled
2021-07-02 12:37:58 -04:00
Zach Daniel
382d39175b fix: attempt to fix calculation compile time issues 2021-07-02 01:13:07 -04:00
Zach Daniel
6c285c05f8 chore: fix calculate example 2021-07-01 22:11:31 -04:00
Zach Daniel
3aa6b6f49f docs: document expressions 2021-07-01 22:07:31 -04:00