Zach Daniel
89a4363c1f
improvement: support directly referencing aggregates from aggregates
2023-12-23 10:39:54 -05:00
Zach Daniel
68e2f74fe0
improvement: support aggregates using other aggregates
...
fix: various fixes for unnecessary aggregate additions
test: added a test to confirm context based multitenancy behavior
2023-12-22 21:14:40 -05:00
Zach Daniel
9bc5b2af9f
improvement: support string_length and string_trim
2023-12-21 19:52:29 -05:00
Zach Daniel
9ca9272426
improvement: only start savepoints when necessary
2023-12-21 16:56:57 -05:00
Zach Daniel
61d229c685
fix: use lateral joins when joining to subquery w/ parent reference
2023-12-19 18:15:00 -05:00
Barnabas Jovanovics
c916034931
fix: replace upsert field with source in EXCLUDED fragment ( #187 )
2023-12-19 15:05:05 +01:00
Zach Daniel
ac980a2163
chore: fix error expression
2023-12-15 08:48:20 -05:00
Zach Daniel
407a7163ed
improvement: support for error/2
expression
2023-12-14 17:10:11 -05:00
Zach Daniel
07499b6ec0
fix: use maps for composite_type instead of tuples
2023-11-29 10:27:10 -05:00
Zach Daniel
74ef0aa6c3
improvement: support composite_type/2
expression
2023-11-29 09:57:10 -05:00
Zach Daniel
592e79a2f9
improvement: support composite types
2023-11-27 17:47:54 -05:00
Zach Daniel
c53f1733be
chore: format
2023-11-22 14:29:47 -05:00
Barnabas Jovanovics
179cee4b24
chore: add test ( #184 )
2023-11-22 13:37:54 -05:00
Zach Daniel
b133d63edd
chore: remove unused aliases
2023-11-21 09:33:29 -05:00
Zach Daniel
3fc3740dde
chore: comment out test for now
2023-11-21 09:26:02 -05:00
Daniel Newman
6cc36c9684
Remove test duplicate from merge conflict
2023-11-21 09:25:24 -05:00
Daniel Newman
ff6c038757
Error using calc to agg to calc to agg
2023-11-21 09:25:24 -05:00
Daniel Newman
8caad3bf7d
Adjust tests for updates from upstream
2023-11-21 09:25:24 -05:00
Riccardo Binetti
021b7e4233
improvement: allow specifying multi-column foreign keys ( #180 )
...
* improvement: add match_with option on references
* improvement: add match_type option on references
2023-11-20 16:52:50 -05:00
Zach Daniel
fcda627050
fix: hydrate aggregate refs when adding for calculations
2023-11-20 07:05:47 -05:00
Daniel Newman
4278f31736
Implement test and resources to show reference bug
2023-11-20 06:40:22 -05:00
Zach Daniel
b52fc0b429
chore: improve matrix behavior and update exists tests
2023-11-17 07:10:37 -05:00
Zach Daniel
c6e6633a9a
fix: properly expand calculation values across aggregate invocations
2023-11-17 04:01:35 -05:00
Daniel Newman
06510b2770
Error using calc to agg to calc to agg
2023-11-16 20:47:25 -05:00
Zach Daniel
ef96cd541e
fix: use synonymous_relationship_path
when looking up ref bindings
2023-11-16 11:02:24 -05:00
Alan Heywood
af8d8dbcac
test: add failing test to demo an issue with has_one calculations
2023-11-16 11:02:02 -05:00
Zach Daniel
db8255e5b1
improvement: support a 2 argument function for the repo option
2023-11-14 10:56:22 -05:00
Zach Daniel
cae89d856e
fix: get resource from proper bindings on exists
query
2023-11-13 17:42:37 -05:00
Zach Daniel
342920a3c4
improvement: support parent
in sort expressions
2023-10-26 09:47:56 -04:00
Zach Daniel
52302046e1
fix: properly join to related references in relationship filters
2023-10-24 12:25:23 -04:00
Zach Daniel
1a6e469e57
improvement: support atomics on upserts
2023-10-11 15:17:50 -04:00
Zach Daniel
f67db5ee6d
chore: handle ci_string type as storage type
2023-10-10 14:16:25 -04:00
Zach Daniel
772c12b5a3
fix: don't run main query if only exists
aggs are specified
...
fixes : #170
2023-10-10 09:43:09 -04:00
Zach Daniel
270d8685e7
improvement: support to-one references in calculations
2023-10-09 18:57:06 -04:00
Alessio Montagnani
0adec1d163
* improvement: in multitenant resources migration's generation, check if the relationship points at the primary key of the target then not adding the multitenancy attribute ( #144 and #157 )
2023-09-25 15:33:28 -04:00
Zach Daniel
b35f8c715b
improvement: add AshPostgres.Tsquery
2023-09-20 16:41:32 -04:00
James Harton
6cc88c82b4
improvement: Allow resources to opt out of the primary key requirement. ( #166 )
2023-09-06 01:18:57 -04:00
Zach Daniel
33eb4f9fb7
improvement: better error message for missing table config
2023-09-04 11:25:03 -04:00
Zach Daniel
9f77304b22
fix: don't clobber loaded data on update
2023-08-31 13:04:08 -04:00
Zach Daniel
eabb745fc3
chore: update tests for latest ash atomics support
2023-08-31 11:47:15 -04:00
Zach Daniel
5a4a52854b
improvement: support atomics ( #165 )
2023-08-28 16:18:56 -04:00
Zach Daniel
cbde3958f3
fix: properly handle ensure nsted calls to get_path
are jsonb
2023-08-23 12:54:25 -04:00
Zach Daniel
99b2a5631c
improvement: support in-line aggregates
...
fix: support non-atom named aggregates
2023-08-22 14:51:31 -04:00
Zach Daniel
c8aa2a8dd8
improvement: add value_to_postgres_default/3
and AshPostgres.Type
2023-08-18 11:22:01 -04:00
Zach Daniel
d36457336b
fix: handle case where multiple grouped aggregates depend on further aggregates
2023-08-16 23:02:56 -04:00
Alan Heywood
bac2e01b54
test: add failing test to demonstrate potential bug ( #164 )
...
1) test complex calculation (AshPostgres.Test.ComplexCalculationsTest)
test/complex_calculations_test.exs:5
** (RuntimeError) Error while building reference: latest_documentation_status
code: |> AshPostgres.Test.ComplexCalculations.Api.load!([
stacktrace:
(ash_postgres 1.3.41) lib/expr.ex:846: AshPostgres.Expr.do_dynamic_expr/5
(ash_postgres 1.3.41) lib/expr.ex:109: AshPostgres.Expr.do_dynamic_expr/5
(ash_postgres 1.3.41) lib/expr.ex:356: AshPostgres.Expr.do_dynamic_expr/5
(ash_postgres 1.3.41) lib/expr.ex:968: anonymous fn/6 in AshPostgres.Expr.do_dynamic_expr/5
(ecto 3.10.3) lib/ecto/query/builder/dynamic.ex:76: Ecto.Query.Builder.Dynamic.expand/3
(stdlib 5.0.2) lists.erl:1706: :lists.mapfoldl_1/3
(elixir 1.15.4) lib/macro.ex:653: Macro.do_traverse/4
(stdlib 5.0.2) lists.erl:1706: :lists.mapfoldl_1/3
(stdlib 5.0.2) lists.erl:1707: :lists.mapfoldl_1/3
(elixir 1.15.4) lib/macro.ex:653: Macro.do_traverse/4
(stdlib 5.0.2) lists.erl:1706: :lists.mapfoldl_1/3
(stdlib 5.0.2) lists.erl:1707: :lists.mapfoldl_1/3
(elixir 1.15.4) lib/macro.ex:653: Macro.do_traverse/4
(stdlib 5.0.2) lists.erl:1706: :lists.mapfoldl_1/3
(elixir 1.15.4) lib/macro.ex:653: Macro.do_traverse/4
(stdlib 5.0.2) lists.erl:1706: :lists.mapfoldl_1/3
(elixir 1.15.4) lib/macro.ex:653: Macro.do_traverse/4
(ecto 3.10.3) lib/ecto/query/builder/dynamic.ex:59: Ecto.Query.Builder.Dynamic.partially_expand/6
(ecto 3.10.3) lib/ecto/query/builder/select.ex:235: Ecto.Query.Builder.Select.expand_nested/3
(ecto 3.10.3) lib/ecto/query/builder/select.ex:274: Ecto.Query.Builder.Select.expand_nested_pair/3
(elixir 1.15.4) lib/enum.ex:1825: anonymous fn/3 in Enum.map_reduce/3
(stdlib 5.0.2) maps.erl:416: :maps.fold_1/4
(elixir 1.15.4) lib/enum.ex:2522: Enum.map_reduce/3
(ecto 3.10.3) lib/ecto/query/builder/select.ex:257: Ecto.Query.Builder.Select.expand_nested/3
(ecto 3.10.3) lib/ecto/query/builder/select.ex:205: Ecto.Query.Builder.Select.select!/5
(elixir 1.15.4) lib/enum.ex:2510: Enum."-reduce/3-lists^foldl/2-0-"/3
(ash_postgres 1.3.41) lib/aggregate.ex:121: anonymous fn/6 in AshPostgres.Aggregate.add_aggregates/6
(elixir 1.15.4) lib/enum.ex:4830: Enumerable.List.reduce/3
(elixir 1.15.4) lib/enum.ex:2564: Enum.reduce_while/3
(ash_postgres 1.3.41) lib/aggregate.ex:53: AshPostgres.Aggregate.add_aggregates/6
(ash 2.13.3) lib/ash/query/aggregate.ex:570: anonymous fn/6 in Ash.Query.Aggregate.value_request/9
(ash 2.13.3) lib/ash/engine/engine.ex:537: anonymous fn/2 in Ash.Engine.run_iteration/1
(ash 2.13.3) lib/ash/engine/engine.ex:558: anonymous fn/4 in Ash.Engine.async/2
(elixir 1.15.4) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2
(elixir 1.15.4) lib/task/supervised.ex:36: Task.Supervised.reply/4
(ash 2.13.3) lib/ash/engine/engine.ex:552: Ash.Engine.async/2
(elixir 1.15.4) lib/enum.ex:1693: Enum."-map/2-lists^map/1-1-"/2
(elixir 1.15.4) lib/enum.ex:1693: Enum."-map/2-lists^map/1-1-"/2
(ash 2.13.3) lib/ash/engine/engine.ex:702: Ash.Engine.start_pending_tasks/1
(ash 2.13.3) lib/ash/engine/engine.ex:323: Ash.Engine.run_to_completion/1
(ash 2.13.3) lib/ash/engine/engine.ex:252: Ash.Engine.do_run/2
(ash 2.13.3) lib/ash/engine/engine.ex:148: Ash.Engine.run/2
(ash 2.13.3) lib/ash/actions/read.ex:173: Ash.Actions.Read.do_run/3
(ash 2.13.3) lib/ash/actions/read.ex:96: Ash.Actions.Read.run/3
(ash 2.13.3) lib/ash/api/api.ex:1733: Ash.Api.load/4
(ash 2.13.3) lib/ash/api/api.ex:1707: Ash.Api.load!/4
test/complex_calculations_test.exs:55: (test)
2023-08-16 20:49:18 -04:00
Alessio Montagnani
4a02d8c6ad
improvement: custom-extension implementation ( #162 )
...
* improvement: custom-extension implementation
* improvement: allow adding custom-extension by module's reference and fixes formatting
* ci: fixes formatter
2023-08-08 10:20:26 -07:00
Zach Daniel
7ce33cac2c
fix: handle interaction between distinct, join filters and sort
2023-08-04 22:52:56 -04:00
Zach Daniel
d2e309c126
improvement: support the new parent/1
expr in relationships
2023-07-26 17:32:09 -04:00
Zach Daniel
c7866c6c16
improvement: support new distinct_sort
option
2023-07-19 12:50:05 -04:00
Zach Daniel
c920b09277
improvement: support new distinct
features from ash core
2023-07-18 14:48:35 -04:00
Zach Daniel
ed62006b3f
improvement: support unary -/1
operator
2023-07-17 22:35:46 -04:00
Zach Daniel
062e67392a
fix: convert Ash.Resource.Aggregate
to Ash.Query.Aggregate
when adding
2023-07-13 23:27:08 -04:00
Zach Daniel
d2e071773e
improvement: support exists
aggregates
2023-07-13 00:13:50 -04:00
Zach Daniel
11ad5f4d1b
improvement: support at/2
expression
2023-07-12 17:05:33 -04:00
Zach Daniel
c1a630ee16
improvement: support string_split
2023-07-12 15:16:28 -04:00
Zach Daniel
1d96805d51
chore: cleanup nested DSL in test
2023-07-12 10:56:15 -04:00
Zach Daniel
a09dae4d26
fix: raise better error on invalid filter values
...
closes #154
We still want to build something better directly into `Ash.Filter`
that determines field types and casts them up front
2023-06-28 11:29:54 -04:00
Zach Daniel
ce9ca1ced2
chore: fix test bad identity
2023-06-27 19:14:30 -04:00
Eduardo B. A
4171ef851d
fix: Fixes multiple schema identities migrations ( #156 )
...
Co-authored-by: Eduardo <sezdocs@dev-distrobox.fedora.local>
2023-06-25 17:26:31 -04:00
Zach Daniel
6712943e74
fix: properly handle nested aggregate references
2023-06-05 18:35:22 -04:00
Zach Daniel
0ad06c6b63
test: update incorrect test
2023-05-30 22:24:22 -04:00
Zach Daniel
75a5467d35
test: format & update tests
2023-05-27 00:39:49 -04:00
Zach Daniel
06cb5b5c89
chore: update ash/tests
2023-05-26 23:59:35 -04:00
Tommaso Patrizi
96165a58ea
tests: added test for bulk upsert ( #148 )
...
Co-authored-by: Tommaso Patrizi <tommasop@gmail.com>
2023-05-26 23:58:04 -04:00
Frank Dugan III
4704253cc2
test: add test for bulk creating relationships ( #147 )
2023-05-26 09:13:24 -04:00
Zach Daniel
376717ae36
test: update tests for latest ash version
2023-05-25 10:46:07 -04:00
Zach Daniel
4a57a300da
fix: handle raised errors in bulk actions
2023-05-22 21:17:30 -04:00
Zach Daniel
f59bbee443
improvement: raise better errors on conflicting locks
2023-05-17 13:17:37 -04:00
Zach Daniel
b457c3052e
test: fix tests using filter
option on aggregates
2023-05-10 23:14:55 -04:00
Zach Daniel
2bf6725fcb
chore: fix bulk upserts
2023-05-02 22:19:01 -04:00
Zach Daniel
08a0a926e5
improvement: support bulk upserts
2023-05-02 22:16:21 -04:00
Zach Daniel
aed14f7ffd
test: add test to confirm lateral join fix in Ash
2023-05-01 14:11:33 -04:00
Zach Daniel
cd821cc153
fix: go back to old migration sorting algorithm
...
closes : #139
2023-05-01 10:51:09 -04:00
Zach Daniel
d417361012
fix: subquery aggregates when a distinct is being added
2023-04-22 01:17:38 -06:00
Zach Daniel
903b1dd2e7
improvement: update ash
...
test: update tests
2023-04-21 10:43:58 -06:00
Zach Daniel
cd54969b03
test: add test for runtime calculation using query
2023-04-20 11:37:46 -06:00
Zach Daniel
525dcc9f91
improvement: use digraph for operation ordering
...
fix: handle primary key changes properly
Doing this involves dropping all foreign keys using it, and dropping the existing
primary key before creating the new one.
2023-04-11 17:41:53 -04:00
Zach Daniel
e154c15fc9
chore: release version v1.3.19
2023-04-07 11:05:38 -04:00
Zach Daniel
7952a515fe
fix: properly handle newtypes, add test
2023-04-07 10:56:06 -04:00
Zach Daniel
31fdbec62e
chore: credo
2023-04-05 12:21:35 -04:00
Zach Daniel
4ccec4fe8b
improvement: update ash
...
chore: fix tests
2023-04-04 21:49:24 -04:00
Barnabas Jovanovics
e2ee0016ea
test: add test that reproduces dependent select problem ( #136 )
2023-03-31 12:12:13 -04:00
Darren Black
587182998e
improvement: Implement string_join expr ( #132 )
2023-02-21 10:21:53 -05:00
Zach Daniel
49b94fd183
fix: don't use :distinct
when uniq?
is not true
2023-02-17 15:21:50 -05:00
Zach Daniel
589fb4d620
improvement: better type casting for concat operator
2023-02-12 19:09:25 -05:00
Zach Daniel
8eabbde953
add tests for new transaction behavior
2023-02-10 15:41:41 -05:00
Zach Daniel
bbb45f3622
fix: sorting on optimized first aggregates
2023-02-09 17:49:37 -05:00
Zach Daniel
8e8a308cd2
improvement: support new uniq?
option on count/list aggregates
2023-02-09 16:09:44 -05:00
Zach Daniel
80cd06818d
improvement: optimized first
aggregates where possible
2023-02-08 14:46:29 -05:00
Zach Daniel
8d45e92fc2
fix: do limit/offset outside of query if distinct is required
2023-02-07 19:15:44 -05:00
Zach Daniel
b41d383b47
fix: load by __order__ ascending
2023-02-07 17:43:53 -05:00
Alan Heywood
09092cc051
test: demonstrate issue loading aggregate
...
Calling Api.load! to load an aggregate on an existing record, where
the aggregated record has a relates_to_actor_via policy on it causes
the following error. Note that this error was recently fixed when
loading the aggregate as part of the query.
1) test relates to actor via has_many and with an aggregate (AshPostgres.AggregateTest)
test/aggregate_test.exs:8
** (RuntimeError) Could not determined related for `exists/2` expression.
Context Resource: %{aggregates: %{}, calculations: %{}, data_layer: AshPostgres.DataLayer, public?: false, relationship_path: [], resource: AshPostgres.Test.Comment, root_resource: AshPostgres.Test.Comment}
Context Relationship Path: []
At Path: []
Path: [:organization, :users]
Related: nil
Expression: exists(organization.users, [id: "df84db36-b8de-485b-8e47-a86307588f79"])
code: |> Api.load!(:count_of_comments, actor: user)
stacktrace:
(ash 2.5.13) lib/ash/filter/filter.ex:2121: Ash.Filter.add_expression_part/3
(ash 2.5.13) lib/ash/filter/filter.ex:2037: anonymous fn/3 in Ash.Filter.parse_expression/2
(elixir 1.14.2) lib/enum.ex:4751: Enumerable.List.reduce/3
(elixir 1.14.2) lib/enum.ex:2514: Enum.reduce_while/3
(ash 2.5.13) lib/ash/filter/filter.ex:295: Ash.Filter.parse/5
(ash 2.5.13) lib/ash/query/query.ex:1803: Ash.Query.do_filter/2
(elixir 1.14.2) lib/map.ex:883: Map.update!/3
(ash 2.5.13) lib/ash/engine/request.ex:654: Ash.Engine.Request.apply_filter/4
(ash 2.5.13) lib/ash/engine/request.ex:561: Ash.Engine.Request.do_strict_check/3
(ash 2.5.13) lib/ash/engine/request.ex:522: anonymous fn/2 in Ash.Engine.Request.strict_check/2
(elixir 1.14.2) lib/enum.ex:4751: Enumerable.List.reduce/3
(elixir 1.14.2) lib/enum.ex:2514: Enum.reduce_while/3
(ash 2.5.13) lib/ash/engine/request.ex:255: Ash.Engine.Request.do_next/1
(ash 2.5.13) lib/ash/engine/request.ex:211: Ash.Engine.Request.next/1
(ash 2.5.13) lib/ash/engine/engine.ex:650: Ash.Engine.advance_request/2
(ash 2.5.13) lib/ash/engine/engine.ex:556: Ash.Engine.fully_advance_request/2
(ash 2.5.13) lib/ash/engine/engine.ex:497: Ash.Engine.do_run_iteration/2
(elixir 1.14.2) lib/enum.ex:2468: Enum."-reduce/3-lists^foldl/2-0-"/3
(ash 2.5.13) lib/ash/engine/engine.ex:440: Ash.Engine.run_iteration/1
(ash 2.5.13) lib/ash/engine/engine.ex:257: Ash.Engine.run_to_completion/1
(ash 2.5.13) lib/ash/engine/engine.ex:202: Ash.Engine.do_run/2
(ash 2.5.13) lib/ash/engine/engine.ex:141: Ash.Engine.run/2
(ash 2.5.13) lib/ash/actions/read.ex:170: Ash.Actions.Read.do_run/3
(ash 2.5.13) lib/ash/actions/read.ex:90: Ash.Actions.Read.run/3
(ash 2.5.13) lib/ash/api/api.ex:928: Ash.Api.load/4
(ash 2.5.13) lib/ash/api/api.ex:902: Ash.Api.load!/4
test/aggregate_test.exs:48: (test)
2023-01-31 10:35:33 +10:00
Alan Heywood
1dbd7f619d
Update test to demo issue with policy on aggregate
...
The issue occurs when an aggregate is loaded, and the aggregated
resource itself has a relates_to_actor_via policy.
The following error is produced at test/aggregate_test.exs:42
1) test relates to actor via has_many and with an aggregate (AshPostgres.AggregateTest)
test/aggregate_test.exs:8
** (RuntimeError) Could not determined related for `exists/2` expression.
Context Resource: %{aggregates: %{count_of_comments: #count<comments from #Ash.Query<resource: AshPostgres.Test.Comment>>}, calculations: %{}, data_layer: AshPostgres.DataLayer, public?: false, relationship_path: [], resource: AshPostgres.Test.Post, root_resource: AshPostgres.Test.Post}
Context Relationship Path: []
At Path: []
Path: [:post, :organization, :users]
Related: nil
Expression: exists(post.organization.users, [id: "236f08bc-6a3a-4a78-9911-2c24189dafac"])
code: |> Api.read_one!()
stacktrace:
(ash 2.5.12) lib/ash/filter/filter.ex:2121: Ash.Filter.add_expression_part/3
(ash 2.5.12) lib/ash/filter/filter.ex:2037: anonymous fn/3 in Ash.Filter.parse_expression/2
(elixir 1.14.2) lib/enum.ex:4751: Enumerable.List.reduce/3
(elixir 1.14.2) lib/enum.ex:2514: Enum.reduce_while/3
(ash 2.5.12) lib/ash/filter/filter.ex:295: Ash.Filter.parse/5
(ash 2.5.12) lib/ash/filter/filter.ex:995: Ash.Filter.add_to_filter/6
(ash 2.5.12) lib/ash/query/query.ex:1797: Ash.Query.do_filter/2
(elixir 1.14.2) lib/map.ex:883: Map.update!/3
(ash 2.5.12) lib/ash/engine/request.ex:650: Ash.Engine.Request.apply_filter/4
(ash 2.5.12) lib/ash/engine/request.ex:557: Ash.Engine.Request.do_strict_check/3
(ash 2.5.12) lib/ash/engine/request.ex:518: anonymous fn/2 in Ash.Engine.Request.strict_check/2
(elixir 1.14.2) lib/enum.ex:4751: Enumerable.List.reduce/3
(elixir 1.14.2) lib/enum.ex:2514: Enum.reduce_while/3
(ash 2.5.12) lib/ash/engine/request.ex:255: Ash.Engine.Request.do_next/1
(ash 2.5.12) lib/ash/engine/request.ex:211: Ash.Engine.Request.next/1
(ash 2.5.12) lib/ash/engine/engine.ex:650: Ash.Engine.advance_request/2
(ash 2.5.12) lib/ash/engine/engine.ex:556: Ash.Engine.fully_advance_request/2
(ash 2.5.12) lib/ash/engine/engine.ex:497: Ash.Engine.do_run_iteration/2
(elixir 1.14.2) lib/enum.ex:2468: Enum."-reduce/3-lists^foldl/2-0-"/3
(ash 2.5.12) lib/ash/engine/engine.ex:257: Ash.Engine.run_to_completion/1
(ash 2.5.12) lib/ash/engine/engine.ex:202: Ash.Engine.do_run/2
(ash 2.5.12) lib/ash/engine/engine.ex:141: Ash.Engine.run/2
(ash 2.5.12) lib/ash/actions/read.ex:170: Ash.Actions.Read.do_run/3
(ash 2.5.12) lib/ash/actions/read.ex:90: Ash.Actions.Read.run/3
(ash 2.5.12) lib/ash/api/api.ex:1005: Ash.Api.read_one/3
(ash 2.5.12) lib/ash/api/api.ex:998: Ash.Api.read_one!/3
test/aggregate_test.exs:43: (test)
2023-01-30 16:09:48 +10:00
Alan Heywood
acc947292d
Add failing test for inserting via Ecto.Repo.insert!
...
It should be possible to use this function, and it did work as of ash
v2.5.9. This test fails as of ash v2.5.10, which introduced adding
relationships to underlying ecto schemas. The bug is related to a
has_many relationship being present on the resource.
The test fails with:
1) test call Ecto.Repo.insert! via Ash Repo (AshPostgres.EctoCompatibilityTest)
test/ecto_compatibility_test.exs:6
** (Ecto.InvalidChangesetError) could not perform insert because changeset is invalid.
Errors
%{posts: [{"is invalid", [type: {:array, :map}]}]}
Applied changes
%{name: "The Org"}
Params
nil
Changeset
#Ecto.Changeset<
action: :insert,
changes: %{name: "The Org"},
errors: [posts: {"is invalid", [type: {:array, :map}]}],
data: #AshPostgres.Test.Organization<>,
valid?: false
>
code: |> AshPostgres.TestRepo.insert!()
stacktrace:
(ecto 3.9.4) lib/ecto/repo/schema.ex:270: Ecto.Repo.Schema.insert!/4
test/ecto_compatibility_test.exs:9: (test)
2023-01-30 10:40:45 +10:00
Zach Daniel
04a64b8b94
chore: credo
2023-01-29 18:24:11 -05:00
Alan Heywood
f290ae47b8
Add failing test for policy + aggregate issue
...
The conditions for this issue to occur seem to be:
- DataLayer is Postgres
- Resource has a relates_to_actor_via policy on read
- The relates_to_actor_via path includes a has_many relationship
- An aggregate is loaded
The following error is produced:
1) test relates to actor via has_many and with an aggregate (AshPostgres.AggregateTest)
test/aggregate_test.exs:8
** (Ash.Error.Unknown.UnknownError) ** (ArgumentError) No such entity nil found.
code: |> Api.read_one!(actor: user)
stacktrace:
nil.spark_dsl_config()
(spark 0.3.8) lib/spark/dsl/extension.ex:129: Spark.Dsl.Extension.dsl!/1
(spark 0.3.8) lib/spark/dsl/extension.ex:158: Spark.Dsl.Extension.get_persisted/3
(ash 2.5.10) lib/ash/filter/filter.ex:2986: Ash.Filter.do_hydrate_refs/2
(ash 2.5.10) lib/ash/policy/check/relates_to_actor_via.ex:3: Ash.Policy.Check.RelatesToActorVia.try_eval/2
(ash 2.5.10) lib/ash/policy/check/relates_to_actor_via.ex:3: Ash.Policy.Check.RelatesToActorVia.try_strict_check/3
(ash 2.5.10) lib/ash/policy/checker.ex:63: Ash.Policy.Checker.do_strict_check_facts/3
(ash 2.5.10) lib/ash/policy/checker.ex:88: anonymous fn/2 in Ash.Policy.Checker.strict_check_policies/3
(elixir 1.14.2) lib/enum.ex:4751: Enumerable.List.reduce/3
(elixir 1.14.2) lib/enum.ex:2514: Enum.reduce_while/3
(ash 2.5.10) lib/ash/policy/checker.ex:9: anonymous fn/2 in Ash.Policy.Checker.strict_check_facts/1
(elixir 1.14.2) lib/enum.ex:4751: Enumerable.List.reduce/3
(elixir 1.14.2) lib/enum.ex:2514: Enum.reduce_while/3
(ash 2.5.10) lib/ash/policy/authorizer.ex:790: Ash.Policy.Authorizer.do_strict_check_facts/1
(ash 2.5.10) lib/ash/policy/authorizer.ex:372: Ash.Policy.Authorizer.strict_check/2
(ash 2.5.10) lib/ash/engine/request.ex:550: Ash.Engine.Request.do_strict_check/3
(ash 2.5.10) lib/ash/engine/request.ex:518: anonymous fn/2 in Ash.Engine.Request.strict_check/2
(elixir 1.14.2) lib/enum.ex:4751: Enumerable.List.reduce/3
(elixir 1.14.2) lib/enum.ex:2514: Enum.reduce_while/3
(ash 2.5.10) lib/ash/engine/request.ex:255: Ash.Engine.Request.do_next/1
(ash 2.5.10) lib/ash/engine/request.ex:211: Ash.Engine.Request.next/1
(ash 2.5.10) lib/ash/engine/engine.ex:650: Ash.Engine.advance_request/2
(ash 2.5.10) lib/ash/engine/engine.ex:556: Ash.Engine.fully_advance_request/2
(ash 2.5.10) lib/ash/engine/engine.ex:497: Ash.Engine.do_run_iteration/2
(elixir 1.14.2) lib/enum.ex:2468: Enum."-reduce/3-lists^foldl/2-0-"/3
(ash 2.5.10) lib/ash/engine/engine.ex:440: Ash.Engine.run_iteration/1
(ash 2.5.10) lib/ash/engine/engine.ex:257: Ash.Engine.run_to_completion/1
(ash 2.5.10) lib/ash/engine/engine.ex:202: Ash.Engine.do_run/2
(ash 2.5.10) lib/ash/engine/engine.ex:141: Ash.Engine.run/2
(ash 2.5.10) lib/ash/actions/read.ex:170: Ash.Actions.Read.do_run/3
(ash 2.5.10) lib/ash/actions/read.ex:90: Ash.Actions.Read.run/3
(ash 2.5.10) lib/ash/api/api.ex:1005: Ash.Api.read_one/3
(ash 2.5.10) lib/ash/api/api.ex:998: Ash.Api.read_one!/3
test/aggregate_test.exs:44: (test)
2023-01-29 16:15:16 +10:00
Zach Daniel
3c496512e2
fix: use parent_expr
instead of this
...
fix: various expression & type building fixes
2023-01-06 17:05:23 -05:00
Zach Daniel
e81e77840a
fix: don't group aggregates that reference relationships in their filters
2022-12-21 16:58:12 -05:00
Zach Daniel
09b19c8bfd
improvement: add like and ilike
2022-12-21 16:12:49 -05:00
Zach Daniel
01d1a8aa5d
test: add test confirming embedded array behavior
2022-12-18 02:35:42 -05:00
Zach Daniel
a5b1bc8a3f
fix: properly add aggregates to query when referenced from calculations
...
fixes : #127
2022-12-18 02:23:39 -05:00
Alan Heywood
df3b4fd82c
Add a failing test to repro a bug with calculation loads
2022-12-17 22:57:25 +10:00
Zach Daniel
bfefef7fd5
improvement: distinct on source of query, not relationship destination
2022-12-15 17:16:53 -05:00
Zach Daniel
5987515b8d
fix: properly combine sort + to many join filter
2022-12-14 22:37:10 -05:00
Zach Daniel
9d6996be25
fix: make migration generator work better for umbrellas
2022-12-13 13:31:57 -05:00
Zach Daniel
68c6d7aaf8
improvement: better error messages from mix tasks
...
fix: various broken behavior from new aggregate work
improvement: validate that references refer to relationships
closes #99
2022-12-10 15:59:50 -05:00
Zach Daniel
e271a27d3c
improvement: avg/min/max/custom aggregate support
...
fix: fix various problems with the model behind aggregates
2022-12-07 20:32:38 -05:00
Zach Daniel
7d0663588f
chore: add test with join in many to many
2022-12-04 13:39:58 -05:00
Zach Daniel
52fcba79ac
improvement: inform users about postgres incompatibility with multidimensional arrays
2022-12-01 20:24:49 -05:00
Darren Black
f088601cf9
Failing tests for aggregates on arrays ( #121 )
2022-11-30 21:26:58 -05:00
Zach Daniel
f03332c13b
chore: fix tests
2022-11-30 20:59:18 -05:00
Zach Daniel
498d54e812
improvement: update ash, add test for transaction hooks
2022-11-30 20:51:06 -05:00
Zach Daniel
059837651d
improvement: add unique constraints to changeset for custom unique indexes
...
improvement: separate out concurrent index creations and do them in a separate transaction
2022-11-25 14:06:22 -05:00
Zach Daniel
b4efb3a343
test: fix tests for migration_defaults
2022-11-21 02:45:09 -05:00
Zach Daniel
8f064db2f0
chore: work on tests for migration_defaults
2022-11-21 02:39:57 -05:00
Zach Daniel
2451879d46
test: add test for code interface
2022-10-31 11:53:03 -04:00
Zach Daniel
dbfca0ec57
chore: format
2022-10-24 22:17:42 -06:00
Kyle Grinstead
a88687c1d5
fix: && operator in expressions to point to ash_elixir_and ( #115 )
2022-10-24 22:13:12 -06:00
Zach Daniel
13413d3cc7
feat: support now()
in latest Ash
2022-10-20 01:08:35 -04:00
Zach Daniel
5222e1e755
improvement: handle UUID types better
2022-10-17 08:40:32 -05:00
Zach Daniel
fb8a13f33d
improvement: set lateral join source for latest ash
...
improvement: use `prepend?: true` option when applying relationship sorts
2022-10-15 00:03:16 -05:00
Zach Daniel
a8b44fef0f
fix: no unnecessary type cast on count/sum aggregates
2022-10-10 12:12:17 -04:00
Zach Daniel
7fd1e73baa
fix: don't apply filter
to array_agg
2022-10-10 12:06:54 -04:00
Zach Daniel
94edf64322
fix: use attribute source for identity fields
2022-10-04 16:13:52 -04:00
Zach Daniel
fd5ac60072
improvement: exists
filters necessitate multiple aggregate joins (for now)
2022-09-28 18:01:20 -04:00
Zach Daniel
6ad57501ff
improvement: upgrade to new exists
usage
2022-09-25 14:41:29 -04:00
Zach Daniel
e8643d4aa0
fix: properly type cast top level fragments
...
chore: update tests not to use deprecated helper
2022-09-21 13:36:18 -04:00
Zach Daniel
31d0ec20ac
improvement: support latest ash
2022-09-20 23:00:29 -04:00
Darren Black
b0292d66f8
improvement: implement Length function ( #111 )
2022-09-15 16:51:49 -04:00
Zach Daniel
11561ea163
improvement: support latest ash
2022-09-14 12:59:01 -04:00
Zach Daniel
7fc6c91cac
improvement: support manual relationships with joins
2022-09-13 16:40:12 -04:00
Zach Daniel
79879e0bd6
fix: keep unique index keys in order in migrations
...
closes #109
2022-09-10 01:41:25 -04:00
Zach Daniel
170b9fc9e7
improvement: support latest ash exists/2
expr
2022-09-06 18:33:17 -04:00
Zach Daniel
4a69edce2d
important: update to ash 2.0 branch
2022-08-24 12:07:38 -04:00
Zach Daniel
0fe770b9ea
fix: include prefix in the proper place when renaming attributes
...
closes : #104
2022-08-09 16:37:20 -04:00
Zach Daniel
eb2bd267cb
improvement: fix typecasting for calculations & embed access
...
chore: rebuild test migrations
2022-08-05 15:27:22 -04:00
Zach Daniel
82d8d73b4d
test: add test for check constraint ordering
2022-07-22 01:01:32 -04:00
Zach Daniel
0f9a433c95
improvement: support ||
and &&
2022-07-20 14:19:06 -04:00
Zach Daniel
c52917bca1
improvement: set update_defaults
on upsert results
2022-07-06 14:44:18 -04:00
Zach Daniel
cf212e0d98
chore: format
2022-07-01 19:18:42 -04:00
Zach Daniel
c352a1f1fa
fix: support upsert_identity with base_filter
2022-07-01 19:12:14 -04:00
Zach Daniel
da07ed7b6c
fix: handle various join bugs
2022-06-29 15:08:49 -04:00
Zach Daniel
53560d82ac
test: add test for field_type
in relationships
2022-06-28 16:01:07 -04:00
Rebecca Le
c54c67af9d
fix: rename attributes correctly in down migration ( #98 )
2022-05-31 12:14:05 -04:00
Josh Price
ff3039ee32
improvement: handle fallback ecto migration default elegantly ( #94 )
2022-05-24 12:11:32 -04:00
Zach Daniel
d04fd201f2
fix: test and confirm behavior of schemas
2022-05-22 18:30:20 -04:00
Zach Daniel
be15257531
fix: use correct bindings for filtered relationships
2022-05-22 02:12:07 -04:00
Zach Daniel
57a8716a94
chore: add failing test for #331
2022-05-22 00:43:10 -04:00
Zach Daniel
d2e5c71a6b
fix: cast calcs in query expressions
2022-05-20 13:42:20 -04:00