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