Commit graph

1035 commits

Author SHA1 Message Date
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
Zach Daniel
4b23dd179f fix: allow sorting on aggs, w/o loading 2021-07-01 15:22:48 -04:00
Zach Daniel
1f53644070 fix: ensure query in ensure_selected 2021-06-29 12:16:11 -04:00
Zach Daniel
414119116a chore: fix warnings/compiler errors 2021-06-28 13:27:31 -04:00
Zach Daniel
602ba78e9c fix: handle sorting empty data properly
fix: manage ets tables properly

for context, we had a problem where `RequestHandlers`
would live forever, but were tiny. A change to the internal
engine caused request handlers to be less tiny, which exposed
the process leak. When we fixed the process leak, it became apparent
that the ets table creation was incorrect, as the owning process for
a non-private table could be the request handler, meaning it was
transient. We solve this by having a `TableManager` for each resource/
tenant combo, which owns the ets table in question
2021-06-28 13:20:37 -04:00
Zach Daniel
294480ee34 fix: link request handler to engine and runner, solve mem leak 2021-06-28 12:05:03 -04:00
Zach Daniel
ad0af9831c improvement: if "" fails to cast, cast it as nil instead
improvement: ReadActionRequiresActor error
improvement: `ensure_selected` change
2021-06-28 01:33:31 -04:00
Zach Daniel
ff0de75138 improvement: don't perform match on nil 2021-06-27 13:29:36 -04:00
Zach Daniel
9477f0e82a improvement: add {:arg, :name} input for set_attribute 2021-06-25 13:51:17 -04:00
Zach Daniel
69967099e3 fix: ensure ci_strings casted after constraints 2021-06-25 13:41:05 -04:00
Zach Daniel
01abe80a04 improvement: revamp ci_string
previously, ci_string would downcase all input/output automatically,
throwing away the "representation" of the original input. Now, that
is an option provided as a constraint, for example:

`attribute :email, :ci_string, constraints: [casing: :lower]`
or
`attribute :serial, :ci_string, constraints: [casing: :upper]`

All comparison logic remains the same, so the only thing that is affected
is the `to_string(value)` logic, which now returns based on the configured casing.
By default its just the value, but with `lower`/`upper` it will downcase/upcase the
value accordingly.
2021-06-25 13:19:14 -04:00
Zach Daniel
cb315db44d fix: Revert "more optimized types"
This reverts commit 3d7f3db85d.
2021-06-24 18:25:24 -04:00
Zach Daniel
21e52bebbd Revert "chore: fix compiling embedded types (why??)"
This reverts commit d7ef5efbb2.
2021-06-24 18:19:46 -04:00
Zach Daniel
28a4429b9e Revert "fix: don't call type() on :string"
This reverts commit 27c8bcb5bc.
2021-06-24 18:19:45 -04:00
Zach Daniel
e64d0a9791 Revert "improvement: add Ash.Type.type/1"
This reverts commit a0f6cd9219.
2021-06-24 18:19:43 -04:00
Zach Daniel
a0f6cd9219 improvement: add Ash.Type.type/1 2021-06-24 17:51:56 -04:00
Zach Daniel
27c8bcb5bc fix: don't call type() on :string 2021-06-24 16:42:03 -04:00
Zach Daniel
d7ef5efbb2 chore: fix compiling embedded types (why??) 2021-06-24 16:33:38 -04:00
Zach Daniel
3d7f3db85d improvement: more optimized types 2021-06-24 16:05:50 -04:00
Zach Daniel
114de0af4e fix: optimize ash type loading 2021-06-24 01:11:54 -04:00
Zach Daniel
dc56376d80 improvement: add error_handler for create/update/destroy actions 2021-06-23 17:19:59 -04:00
Zach Daniel
b9db67e47e fix: pass opts through to Jason.Encode.string/2 2021-06-23 12:51:47 -04:00
Zach Daniel
a484006596 fix: properly encode ci string to json 2021-06-23 12:50:13 -04:00
Zach Daniel
8f84d5b4d4 improvement: more engine logging 2021-06-23 12:11:14 -04:00
Zach Daniel
13981d5aa0 fix: :infinity on engine genserver calls 2021-06-22 13:57:56 -04:00
Zach Daniel
786047c3e7 fix: hide __metadata__ field on inspect
fix: load relationships required for calculations (optimize later)
2021-06-08 16:37:47 -04:00
Zach Daniel
a0b0e633d5 fix: don't halt on request handler failure
fix: properly error when more than 2 requests of the same type are primary
fix: properly process sort when the sort is an atom
fix: properly calculate reverse relationship paths
2021-06-08 14:42:17 -04:00
Zach Daniel
d45a9dbbfa improvement: support calculation sorts 2021-06-05 18:11:09 -04:00
Zach Daniel
30af25ba74 fix: always wait on the engine if it hasn't completed 2021-06-05 02:42:40 -04:00
Zach Daniel
3f1f31694d fix: always wait for engine
improvement: spawn async requests where possible
2021-06-04 18:32:08 -04:00
Zach Daniel
9719d0dce5 fix: constraints on calculations
fix: better calculation inspect
fix: allow supplying stacktraces when building errors
2021-06-04 14:33:22 -04:00
Zach Daniel
d247004610 feat: expression based calculations for filterable/sortable calculations
fix: aggregate authorization issues
improvement: tons of improvements across the board
2021-06-04 01:40:11 -04:00
Zach Daniel
231eeafd30 feat: expression calculations for sorting/filtering
improvement: small improvements/fixes across the board
2021-06-04 01:37:11 -04:00
Darren Black
42cc8b9711
docs: Minor documentation tweaks (#246) 2021-06-02 10:38:15 -04:00
kernel-io
dd1474a4f6
improvement: Update remaining builtin validators (#244)
Co-authored-by: David Culina <git@omnium.co>
2021-06-01 20:57:13 -04:00
kernel-io
35af220d9d
feat: add compare validator (#242)
Co-authored-by: David Culina <git@omnium.co>
2021-06-01 13:32:22 -04:00
kernel-io
42895c50f7
fix: ensure create functions generated by code_interface accept tenant in the opts list (#243) 2021-05-31 18:34:54 -04:00
Zach Daniel
d9debc07f1 fix: properly process managed belongs to relationships 2021-05-28 03:12:14 -04:00
Zach Daniel
f895f3ddd8 fix: cast nil -> {:ok, nil} in all cases 2021-05-28 01:47:38 -04:00
kernel-io
0fbf7eab6a
fix: set tenant even on non-tenant resources where relevant (#241) 2021-05-27 02:22:24 -04:00
Zach Daniel
86f6719390 improvement: define embedded schemas where appropriate 2021-05-22 23:48:10 -04:00
Zach Daniel
4662c23f68 improvement: calculation.select/2 + select calculation option 2021-05-20 16:42:26 -04:00
Zach Daniel
584d628047 fix: run after_action hooks in the proper order
improvement: add `validate_destination_field?`
improvement: add builtin `select` change
2021-05-20 12:17:56 -04:00
Zach Daniel
d87969ad1b improvement: set moduledoc to description if one is not set
chore: fix some dialyzer typing issues
2021-05-20 01:36:45 -04:00
Zach Daniel
41aaeeed47 fix: fix dialyzer errors for enum + code interface 2021-05-19 01:32:06 -04:00
Zach Daniel
4b028cbf53 chore: lint/build/compiler issues 2021-05-18 23:12:49 -04:00
Zach Daniel
2406732811 fix: fix code interface + args combo error
improvement: support specifying the `upsert_identity` option
2021-05-18 23:05:31 -04:00
Zach Daniel
013b49c2b2 fix: ignore?: true still accumulates changes
fix: properly require_attributes before setting defaults
2021-05-18 01:44:10 -04:00
Zach Daniel
820020d4e5 improvement: ignore? option for manage_relationship change
fix: set default values before calling resource changes
2021-05-18 00:02:11 -04:00
Zach Daniel
d2e5c06511 fix: reverse-reverse relationship detection 2021-05-17 15:06:49 -04:00
Zach Daniel
de684a27a8 fix: support non-predicates in satsolver 2021-05-16 21:59:06 -04:00
Zach Daniel
50eb787410 improvement: expose default_value/1 in aggregate 2021-05-15 11:56:23 -04:00
Zach Daniel
2ffa0e38b6 fix: raise better error w/ invalid filter expression 2021-05-14 17:02:22 -04:00
Zach Daniel
dd40b24bf9 improvement: transactions for reads, notifications from read callbacks 2021-05-14 11:25:42 -04:00
Zach Daniel
baba0a368a fix: handle error return in code_interface getter 2021-05-14 01:56:36 -04:00
Zach Daniel
574f6f59a3 improvement: various managed relationship improvements
fix: rename `context` -> `relationship_context` to avoid conflict
feat: `on_no_match: :match` supported for to_one rels
2021-05-14 01:07:51 -04:00
Zach Daniel
968e234a31 improvement: set __source__ context for embeds 2021-05-11 00:28:26 -04:00
Zach Daniel
69afdfce25 improvement: utility manage_relationship_source context 2021-05-10 18:03:36 -04:00
Zach Daniel
de167cea28 chore: format code 2021-05-09 17:25:40 -04:00
Frank Dugan III
a796e0d308
refactor: remove references to "side loading" (#236) 2021-05-09 17:24:48 -04:00
Zach Daniel
097447bf38 fix: run action changes on destroy
test: test manual actions
fix: pattern match manage_relationship notifications fix
2021-05-09 16:56:44 -04:00
Zach Daniel
7d37f8ae3d improvement: add manual? option for create/update/destroy 2021-05-09 16:25:39 -04:00
Zach Daniel
3bd2686de3 improvement: ensure data layer can perform aggregates 2021-05-08 23:31:01 -04:00
Zach Daniel
78247ffa5a improvement: support filtering on related aggregates
improvement: autoload aggregates used in filters
2021-05-08 22:48:05 -04:00
Zach Daniel
990aaf8147
docs: side_loading -> loading 2021-05-08 20:34:44 -04:00
Zach Daniel
be07ffc0dd fix: don't fail on nil root filters 2021-05-08 20:06:14 -04:00
Zach Daniel
30e443c021 fix: don't raise unnecessary side load error 2021-05-07 16:31:06 -04:00
Zach Daniel
1412052ff6 improvement: fix data-based side loads 2021-05-07 11:57:59 -04:00
Zach Daniel
cb19e66fb5 fix: IsNil function to IsNil operator 2021-05-07 01:51:54 -04:00
Zach Daniel
cd023bf0a1 fix: function clause match error in not expression 2021-05-07 01:37:44 -04:00
Zach Daniel
f8604717bd fix: limit 1 on to one side load queries 2021-05-07 01:07:01 -04:00
Zach Daniel
46fb08f085 improvement: support sorted relationships 2021-05-07 00:28:51 -04:00
Zach Daniel
fed41b5060 fix: don't consider contextual relationships as reverse relationships 2021-05-06 13:39:04 -04:00
Zach Daniel
ae5b67fcdb fix: support not in query expressions 2021-05-05 16:05:32 -04:00
Zach Daniel
8d15cabd2a fix: include aggregates in count request for aggregate filters 2021-05-04 12:27:25 -04:00
Zach Daniel
d767ba513e fix: use base_query for aritifical limit/offset when loading 2021-05-04 09:27:33 -04:00
Zach Daniel
593b111069 improvement: add read_action option
feat: rework lateral joins for many to many performance boost
2021-05-03 16:21:29 -04:00
Zach Daniel
d16d2f35ce improvement: inner later join for many to many relationships 2021-04-29 17:04:57 -04:00
Zach Daniel
3de71bc7f1 chore: fix test + compile 2021-04-28 17:43:02 -04:00
Zach Daniel
9da95e6d75 improvement: support relationship filters 2021-04-28 17:39:30 -04:00
Zach Daniel
312d19878b improvement: add has filter predicate 2021-04-27 13:45:23 -04:00
Zach Daniel
e11f399fc0 improvement: add :list aggregate kind 2021-04-26 16:01:39 -04:00
Zach Daniel
9df3803492 fix: don't include NotLoaded in manage_relationship 2021-04-25 18:35:19 -04:00
Zach Daniel
53ceb5b753 fix: compile time fixes
improvement: add `require_attributes` to create/update/destroy
2021-04-23 11:41:13 -04:00
Zach Daniel
dd82fcc53b improvement: add first class support for enum types 2021-04-21 13:32:25 -04:00
Zach Daniel
64876c6e19 fix: don't consider nils for pkey matching 2021-04-21 13:32:25 -04:00
Zach Daniel
d099bc87ee chore: format code 2021-04-18 19:51:56 -04:00
Jason Axelson
85d9e8f86c
docs: use full module name (#230)
This will make the Query docs easier to follow
2021-04-18 19:46:21 -04:00
Jason Axelson
f6fa5a98dd
improvement: Add detailed parameter checking for Api read functions (#229) 2021-04-18 19:45:38 -04:00
Jason Axelson
a4262965ea
chore: Enable Credo's Readability.StrictModuleLayout (#228)
Enforce layout of module parts
2021-04-18 19:41:49 -04:00
Zach Daniel
060dadeff1 fix: clearer errors when resource fails to compile 2021-04-18 16:20:05 -04:00
Zach Daniel
a75bfd4203 improvement: add list access to context 2021-04-17 19:34:28 -04:00
Zach Daniel
33ac53faa5 fix: don't preload multiplicatively 2021-04-17 18:22:20 -04:00
Vadim Tsvetkov
0d13cd8b3d
fix: Decimal casting issues on ash_postgres (#227) 2021-04-17 15:00:43 -04:00
Zach Daniel
b028dad1cd improvement: add Resource.input/1 2021-04-17 13:50:55 -04:00
Zach Daniel
bd7f4f9532 fix: use items for single constraints 2021-04-16 14:16:45 -04:00
Zach Daniel
ad2772034c fix: don't overwrite select in side_load 2021-04-15 14:57:49 -04:00
Zach Daniel
5425660752 fix: load relationships for management properly
fix: `fetch_key` bug in embedded types
fix: handle_indexed_maps for embedded types
2021-04-14 23:38:51 -04:00
Zach Daniel
a6b880ce86 fix: handle no key provided to NotFound
chore: add tests for `get!`
2021-04-14 14:18:05 -04:00
Zach Daniel
c3c0abb239 docs: update documentation 2021-04-13 17:44:48 -04:00
Zach Daniel
2f634ae36a improvement: special provisions for casting to embedded type (e.g uuid)
fix: embedded cast_stored must cast all key/values
fix: ci_string constraints when `nil`
fix: manage_relationship change turns embedded resources to maps
fix: fixes for common types parsing from embedded, e.g utc_datetime_usec
2021-04-13 17:41:16 -04:00
Zach Daniel
e20ffe9636 fix: get! should raise on nil not {:ok, nil} 2021-04-13 16:28:01 -04:00
Zach Daniel
0ee074c176 fix: allow_nil -> allow_nil_input 2021-04-13 16:22:13 -04:00
Zach Daniel
e353ea49c3 fix: allow api.load/2 to load calculations
improvement: add `allow_nil_input` to create actions for api layers
improvement: add `load/1` builtin change
feat: change `get?: true` interface functions to raise on `nil`
2021-04-13 15:49:42 -04:00
Zach Daniel
567df21422 fix: always select necessary load fields for nested loads 2021-04-12 16:51:31 -04:00
Zach Daniel
3e29b4e00d fix: always select necessary fields for side loading 2021-04-10 16:58:37 -04:00
Zach Daniel
c21e310996 fix: logic bug in selecting specific fields 2021-04-09 00:47:22 -04:00
Zach Daniel
250186a0ea chore: update docs 2021-04-09 00:10:01 -04:00
Zach Daniel
ec57f363ed improvement: support the datalayer selecting fields in reads 2021-04-09 00:10:01 -04:00
Zach Daniel
f454f98f3f docs: add docs on managing relationships 2021-04-05 13:45:39 -04:00
Zach Daniel
425a1ce59e chore: fix description 2021-04-04 16:01:37 -04:00
Michael St Clair
6805d431ac
improvement: add sum aggregate (#221) 2021-04-04 16:00:53 -04:00
Michael St Clair
fec77dd92f
allow specifying that calculation can't be nil (#220) 2021-04-04 03:11:43 -04:00
Zach Daniel
db26a1cc61 fix: update struct_field logic for latest ecto 2021-04-03 14:35:04 -04:00
Zach Daniel
7faf73097a fix: apply proper interface operation when opts aren't passed 2021-04-02 10:21:10 -04:00
Zach Daniel
92344029d3 improvement: before_action? on validate, validate inline 2021-04-01 11:53:52 -04:00
Jason Axelson
274fc9ea88
chore: Misc doc updates (#208)
Co-authored-by: Zach Daniel <zachary.s.daniel@gmail.com>
2021-03-31 17:20:59 -04:00
Zach Daniel
d6ee71ce53 feat: support Ash.Query.distinct/2
feat: add `build/2` query preparation
fix: manage_relationships *before* after_action callbacks
2021-03-31 17:13:20 -04:00
Jason Axelson
fc705ad0a5
Documentation improvements and labeled examples (#216)
Improve documentation for calculations
Add ability to "label" examples by passing a tuple instead of just a string.
Fix some minor typos
2021-03-31 16:24:06 -04:00
Zach Daniel
29b2c821fe fix: don't overwrite managed belongs_to relationships 2021-03-29 14:48:42 -04:00
Zach Daniel
1d412c97cd fix: handle on_lookup + on_no_match for belongs_to 2021-03-29 14:04:53 -04:00
Zach Daniel
11d658d077 fix: fix required relationships and add test 2021-03-28 13:44:21 -04:00
Zach Daniel
e65d47d386 fix: fix required relationships 2021-03-28 13:44:21 -04:00
Zach Daniel
523f7bbc0d fix: various managed_relationship fixes 2021-03-28 13:44:21 -04:00
Zach Daniel
2f9fafcbc7 feat: add manage relationship types
improvement: don't accept relationships on actions anymore

improvement: require arguments

This probably broke a lot of people's setups, but it was a
necessary change. Better to get this stuff out while we're
still beta
2021-03-25 11:33:32 -04:00
Zach Daniel
aeb1cad518 fix: add tenant metadata before after action hooks 2021-03-24 00:54:36 -04:00
Zach Daniel
8eba8d6b22 fix: support tenant option in read interface 2021-03-24 00:24:42 -04:00
Darren Black
571eba3558
Resolve type aliases (#207) 2021-03-23 22:48:36 -04:00
Zach Daniel
5eec3d93b3 chore: release version v1.36.19 2021-03-22 17:37:44 -04:00
Zach Daniel
6c1108d834 fix: always return changeset when runner failed 2021-03-22 17:37:20 -04:00
Zach Daniel
44d574862b improvement: docs + dialyzer + error improvements 2021-03-22 02:34:52 -04:00
Zach Daniel
41a91b8aa6 fix: don't require values when managing relationships 2021-03-21 23:00:17 -04:00
Zach Daniel
801778abbd fix: Revert "fix: force_change_attributes before passing to action"
This reverts commit 4a0b2035b9.
2021-03-21 22:17:41 -04:00
Zach Daniel
4a0b2035b9 fix: force_change_attributes before passing to action 2021-03-21 22:11:04 -04:00
Zach Daniel
4e8bd5bfbc fix: exception on invalid query arguments 2021-03-21 14:19:45 -04:00
Zach Daniel
ac72c623d9 fix: allow casting strings as uuids (for embedded types) 2021-03-21 11:31:25 -04:00
Zach Daniel
ab31320e73 improvement: retain actor context from changeset 2021-03-21 11:31:01 -04:00
Jason Axelson
6c31956b56
improvement: Add float type (#204)
Also update `Ash.Type` documentation to use the float module as an
example of a custom type.
2021-03-21 00:09:27 -04:00
Zach Daniel
b155a5fb81 improvement: raise informative errors on bad inputs to for_* 2021-03-20 17:17:23 -04:00
Zach Daniel
b98650aeb7 fix: avoid exception in Changeset.new/2 for bad attribute 2021-03-20 17:16:57 -04:00
Zach Daniel
f1a6fb7418 fix: use ecto's uuid type under the hood 2021-03-20 16:27:11 -04:00
Zach Daniel
e206167f27 improvement: make Ash.Error a public module 2021-03-19 18:23:48 -04:00
Zach Daniel
e0a368365c improvement: docs/default value for params 2021-03-19 17:07:22 -04:00
Zach Daniel
6cfa91cc63 chore: fix lint 2021-03-18 23:37:34 -04:00
Zach Daniel
c2d121c0fe fix: set source_field when replacing belongs_to relationship 2021-03-18 23:33:56 -04:00
Zach Daniel
60da316f58 fix: don't consider false as absent value 2021-03-18 23:33:09 -04:00
Zach Daniel
0ef51ce9e6 improvement: trim whitespace in uuid 2021-03-18 23:32:56 -04:00
Zach Daniel
ba6b4202f9 fix: set argument name in manage_relationship 2021-03-18 23:32:12 -04:00
Zach Daniel
f3c85da268 improvement: improve the behavior of defaults
functional defaults are added at action time, others are added directly
into the changeset
2021-03-17 22:34:49 -04:00
Zach Daniel
a1c5f1d06f fix: validate required attributes *after* before_action hooks 2021-03-16 23:09:36 -04:00
Zach Daniel
3e7b798e34 improvement: discard certain empty values for embed input 2021-03-16 21:41:19 -04:00
Zach Daniel
1b972b9598 fix: force_change attrs *after* for_create/update 2021-03-15 15:55:26 -04:00
Zach Daniel
e60acf4167 fix: pattern match errors in manage_relationships
fix: clean up some error cases
fix: only default accept to `public` attributes
2021-03-15 15:47:33 -04:00
Zach Daniel
f6026c6895 fix: allow_nil?: false + default interaction 2021-03-14 23:06:18 -04:00
Zach Daniel
a33e0b97b9 docs: fix redundancy in API docs 2021-03-14 18:45:10 -04:00
Zach Daniel
7eea6576a0 docs: fix dangling docs references 2021-03-14 18:29:30 -04:00
Zach Daniel
0109696d54 fix: remove the as option 2021-03-14 17:50:11 -04:00
Zach Daniel
4df4e9a070 docs: remove interface docs 2021-03-14 17:48:39 -04:00
Jason Axelson
be56174a3d
docs: Fix some documentation warnings (#196)
i.e. warnings that appear when you run `mix docs`

Although this PR doesn't fix the majority of them, since the majority
are errors from referring to `@moduledoc false` modules in docs and typespecs.
2021-03-14 17:27:12 -04:00
Jason Axelson
3ba6b593b1
docs: Updates to the docs with a focus on the getting started docs (#195) 2021-03-14 17:14:53 -04:00
zimt28
a219bc0c6c
improvement: Add timestamps() attribute (#198) 2021-03-14 17:09:38 -04:00
Zach Daniel
5992fc00f7 docs: remove Ash from docs 2021-03-13 16:07:40 -05:00
zimt28
8ae003e382
docs: Update dsl.ex (#193) 2021-03-13 09:29:21 -05:00
zimt28
87390946bf
Fix documentation TOC (#194) 2021-03-13 09:26:57 -05:00
Zach Daniel
db47a15cf7 fix: properly validate allow_nil?: false on update
fix: properly validate `allow_nil?: false` private attributes
2021-03-13 09:25:13 -05:00
Zach Daniel
3c2ffd8662 fix: set argument default on cast 2021-03-12 22:22:27 -05:00
Zach Daniel
55a35396a4 docs: add primary action docs 2021-03-12 22:22:27 -05:00
zimt28
deba10f236
docs: Fix doc (#192) 2021-03-12 22:21:03 -05:00
Zach Daniel
22188d4366 improvement: derive has_one destination_field
improvement: finalize code API logic
2021-03-11 23:45:52 -05:00
Zach Daniel
662bbf96b9 fix: fix pub_sub on update
improvement: add not_found_message + violation_message for relationships
chore: fix lint
2021-03-10 00:08:26 -05:00
Zach Daniel
68f358d342 improvement: support get_by_<identity> in interface
fix: fix `publish_all` pub_sub notifier
improvement: support sublists in pub_sub topics
improvement: support `:_tenant` in pub_sub topics
2021-03-09 16:16:02 -05:00
Zach Daniel
f4fcfb54a2 improvement: accept tenant in for_read
fix: properly filter aggregates
2021-03-09 01:19:45 -05:00
Zach Daniel
5cfa4d5bf0 improvement: update interface to accept query/changesets 2021-03-08 17:19:13 -05:00
Zach Daniel
50f893e8db docs: update notifier docs 2021-03-08 17:19:04 -05:00
Zach Daniel
72b5a57a25 feat: functional interface on the Api module
feat: resource aliases
improvement: require completely unique action names
2021-03-08 00:59:32 -05:00
Zach Daniel
6e1baad6b2 fix: don't reverse sub-entities in DSL 2021-03-07 15:19:53 -05:00
Zach Daniel
e90fdad34a feat: support Ash.Query.select/3 and Ash.Changeset.select/3 2021-03-07 14:09:51 -05:00
Zach Daniel
c2cb843be9 improvement: ignore destination field on some relationship inputs 2021-03-05 10:39:06 -05:00
Zach Daniel
80a65db150 improvement: various validation lifecycle options
fix: various validation lifecycle fixes
fix: don't fetch sideloads for empty data
2021-03-04 22:48:15 -05:00
Zach Daniel
be576206bd chore: remove IO.inspect 2021-02-26 15:13:48 -05:00
Zach Daniel
2f8074ff88 fix: fix nested boolean expression optimization 2021-02-26 15:11:14 -05:00
Zach Daniel
02f7d0101b fix: manage_relationship fixes, input + option defaults 2021-02-24 13:49:27 -05:00
Zach Daniel
e60e5bf281 fix: treat empty string as nil in manage_relationship
fix: be more conservative (and more correct) when optimizing predicates
2021-02-24 11:13:35 -05:00
zimt28
e10b273ce4
Ecto.UUID -> Ash.UUID (#188) 2021-02-23 12:27:49 -05:00
Zach Daniel
16d60386aa fix: fix builtin mange_relationship change 2021-02-22 23:50:23 -05:00
Zach Daniel
53296fab8b fix: support belongs_to relationships properly 2021-02-22 23:16:25 -05:00
Zach Daniel
f068055f63 fix: authorize if actor key is present 2021-02-22 21:34:45 -05:00
Zach Daniel
d42c778a0d improvement: many compile time fixes via code splitting
feat: refactored manage_relationship options/behavior
2021-02-22 20:44:03 -05:00
zimt28
db533450ed
improvement: Guess destination_field for has many relationships (#187) 2021-02-15 13:32:44 -05:00
Darren Black
983a711837
improvement: Implement string length validation (#183)
Co-authored-by: Darren Black <darren@ifixsystems.com.au>
2021-02-08 18:16:32 -05:00
Zach Daniel
3739b4c33a chore: update doc formatting 2021-02-05 19:07:47 -05:00
Zach Daniel
03b6714e6f improvement: set_context change/preparation
fix: support `manage_relationship` for `belongs_to`
2021-02-05 18:56:56 -05:00
Zach Daniel
142b3bf7f9 feat: add default_context
feat: add `manage_relationship/4`

feat: add relationship specific context (for postgres polymorphism)

feat: add `reject` (opposite of `accept`)

improvement: set `accept` by default
2021-02-04 17:15:15 -05:00
Zach Daniel
dd26beb79b chore: add more authorization tests
chore: improve authorization test helper

improvement: support `{:filter, _}` authorization results for changesets
2021-01-28 14:49:08 -05:00
Zach Daniel
0ac0be6a1f fix: only run authorization once per request
fix: don't error on replacing empty relationship with empty

improvement: support `tenant` option to `get/2`

improvement: support `message` option on identities
2021-01-26 23:48:00 -05:00
Zach Daniel
1004ceb71d feat: add after_action for queries
fix: default to calculating filters on `data_layer_query`
2021-01-25 02:14:22 -05:00
Zach Daniel
8e74ff62a6 fix: remove invalid boolean expression optimization
improvement: make form errors work better with phoenix

this involves temporarily making embed error messages *worse*
but we can improve them as we get more usage
2021-01-24 13:47:10 -05:00
Zach Daniel
61e6b7c80c fix: various ci_string improvements
feat: add `contains/2` query function
2021-01-23 22:28:56 -05:00
zimt28
63483822d6
Update transformer.ex (#179) 2021-01-22 20:26:23 -05:00
Zach Daniel
bb91fd4bc7 fix: add action filters in for_read/3
fix: don't let local runner processes mix up messages

fix: runtime filter filters properly
2021-01-22 16:41:32 -05:00
Zach Daniel
7ea9b082f1 improvement: support all string constraints for ci_string 2021-01-21 15:25:07 -05:00
Zach Daniel
f6f5d194bf feat: freeform expressions
feat: validatiosn in actions

feat: query arguments

feat: add `Ash.Query.for_read/3`

feat: return changeset with API errors

feat: add case insensitive string `CiString`/`:ci_string`

feat: support `context/1` and `arg/1` in filter templates

feat: support targeting notifications with the `for` option

feat: add `ago/2` query function

feat: add basic arithmetic operators (+, *, -, /)

feat: `sensitive?` option for attributes

feat: `sensitive?` option for arguments

feat: `private` arguments, which can’t be set using `for_<action>`

feat: add `prevent_change` which will erase changes just before the changeset is committed

feat: add `match?` validation that supports a custom error message

feat: add `interval` type to support `ago/2` function

feat: add `url_encoded_binary` type

feat: add `function` type

improvement: `changing?` is now a validation

improvement: add `Transformer.get_persisted/3`

improvement: add `api` field to `Notification`

improvement: standardize errors, add `to_error_class`

improvement: use `Comp` everywhere

Improvement: use action on changeset if set by `for_<action_type>`

improvement: `action_failed?` field on change sets

improvement: remove ability for data layers to add operators (for now at least)

Improvement: Changeset.apply_attributes/2 now returns an error tuple

Improvement: add a bunch of new/informative errors

improvement: runtime filter now uses left join logic (a naive implementation of it)

improvement: support more filter templates in resources

Improvement: basic/naive type system for operators/functions

Fix: properly expand module aliases for options w/o compile time dependency

chore(engine): track changeset changes for the request with `manage_changeset?: true`
2021-01-21 15:22:50 -05:00
zimt28
6ddae6850f
improvement: Add trim/allow_empty to string type (#171) 2021-01-15 20:41:21 -05:00
zimt28
2a7acffabb
Always validate constraints (#173) 2021-01-14 10:52:18 -05:00
Zach Daniel
13ca0b2976 chore: generalize DSL tooling 2021-01-14 01:17:26 -05:00
zimt28
31cb4f4be3
improvement: Improve attribute defaults (#164) 2021-01-12 15:40:55 -05:00
Zach Daniel
6a26a583de
feat: Add Embedded Resources (#170) 2021-01-12 15:05:56 -05:00
zimt28
db6bdfcf15
improvement: Add built in decimal type (#162) 2021-01-09 11:58:52 -05:00
zimt28
4404da93ce
fix: Correct error message (#163) 2021-01-09 11:36:01 -05:00
Zach Daniel
dbf9f82802 improvement: add Ash.Sort.parse_input/2
fix: fix small sort bugs
2021-01-08 14:22:31 -05:00
zimt28
72ba6c4742
improvement: Add built in usec datetime type (#160) (#161)
improvement!: Use usec timestamps by default
2021-01-08 12:12:37 -05:00
Zach Daniel
7ce72a7454 fix: only cast public relationships/attributes 2021-01-08 02:58:02 -05:00
Zach Daniel
8ef272b1ca fix: allow_nil?: false for integer_primary_key 2021-01-07 22:30:41 -05:00
Zach Daniel
424d020a7d improvement: add for_<action> helpers 2021-01-07 21:35:40 -05:00
Darren Black
fb5cc74329
improvement: Add built in binary type (#156)
Co-authored-by: Darren Black <darren@ifixsystems.com.au>
2021-01-06 22:46:20 -05:00
Zach Daniel
109ed9b19c fix: the __resource__ change broke some extensions 2021-01-06 15:15:43 -05:00