Commit graph

685 commits

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