Commit graph

754 commits

Author SHA1 Message Date
Zach Daniel
a96df174bb fix: properly handle non-filter aggregate filters 2024-03-28 09:18:57 -04:00
Zach Daniel
f03647825c fix: ensure timestamps are present in extension migrations 2024-03-27 21:30:42 -04:00
Zach Daniel
3647fc42ee improvement: add default implementation for pg_version, and rename to min_pg_version 2024-03-27 19:20:49 -04:00
Zach Daniel
804482b8ac improvement!: change defaults for uuids to gen_random_uuid() 2024-03-27 17:20:07 -04:00
Rebecca Le
c436973e9f
fix!: Use UTC for default generated timestamps (#131)
In cases where the database server is not set to UTC, this fixes timezone inconsistencies when adding timestamp columns to tables with existing data, that would then have their timestamps set to non-UTC times.
2024-03-27 17:07:33 -04:00
bcksl
b66427e9bd
feat: add create? and drop? callbacks to AshPostgres.Repo (#143)
Co-authored-by: Zach Daniel <zach@zachdaniel.dev>
2024-03-27 17:05:14 -04:00
Zach Daniel
3ad3f5f5d6 chore: update ash, resources and an error message 2024-03-27 17:03:16 -04:00
Zach Daniel
37cc01957d
improvement!: 3.0 (#227)
* WIP

* chore: fix mix.lock merge issues

* improvement: upgrade to 3.0

* chore: remove `repo.to_tenant`

* chore: continue removal of unnecessary helper

* chore: use `Ash.ToTenant`
2024-03-27 16:52:28 -04:00
Zach Daniel
ec75b41dbe improvement: properly show unsupported error expression 2024-03-22 14:20:38 -04:00
Zach Daniel
5a513a82c2 fix: handle fully fleshed out aggregate fields 2024-03-22 02:13:07 -04:00
Zach Daniel
a0e2693998 fix: don't fail on aggregate query generation
fixes #225
2024-03-20 18:37:38 -04:00
Zach Daniel
adac811c79 fix: properly format migrations
fix: ensure exists aggregates have filters included
2024-03-20 16:18:27 -04:00
Jinkyou Son
b60f680ab3
Fix: undo default of nulls_distinct option to true (#223) 2024-03-20 12:01:53 -04:00
Minsub Kim
0c3b4e5425
fix: generate correct custom index name in down migration function (#222) 2024-03-20 08:36:44 -04:00
Zach Daniel
2c1381d5e6 fix: encode maps on update using fragments 2024-03-19 00:06:15 -04:00
Jinkyou Son
e27ce5e074
improvement: Add nulls_distinct option to CustomIndex (#221) 2024-03-12 20:22:34 -04:00
Zach Daniel
ea853e5171 improvement: properly format generated migrations 2024-03-11 22:09:05 -04:00
Zach Daniel
2a326ea6bd chore: fix dialyzer/mix.lock 2024-03-11 11:34:40 -04:00
Zach Daniel
abcdc05202 improvement: don't select fields in exists subquery 2024-03-11 11:20:50 -04:00
Zach Daniel
3c2b8912d0 fix: don't reuse binding in many to many aggregate joins 2024-03-07 11:33:39 -05:00
Robert Graff
842f16a2fa
fix: typo in extension generator creates invalid drop 2024-03-06 20:54:08 -08:00
Jechol Lee
603d9c8cc6
fix: merge base_filter and custom index's where correctly (#219) 2024-03-06 19:33:10 -05:00
Zach Daniel
c2aacc65db chore: only cast embedded maps statically 2024-03-06 08:30:41 -05:00
Zach Daniel
40481a17a0 fix: prevent ecto/pg from getting confused about the type of maps 2024-03-06 08:23:56 -05:00
Zach Daniel
70af9ee5bd fix: always exclude :order_by on bulk updateable query 2024-03-05 09:19:55 -05:00
Zach Daniel
fce0fefe72 fix: don't apply join relationship sort for lateral join
fixes #218
2024-03-04 00:10:57 -05:00
Zach Daniel
ec122c61d6 improvement: don't double cast to the same type
improvement: detect more types
2024-03-01 13:06:14 -05:00
Zach Daniel
cea4b70a51 improvement: no need for subquery for simple table aliases 2024-02-29 20:20:33 -05:00
Zach Daniel
43deb00e36 fix: properly handle multiple sorts in aggregate 2024-02-29 13:42:42 -05:00
Zach Daniel
2c8c993cf9 chore: optimization/cleanups 2024-02-29 13:01:53 -05:00
Zach Daniel
4db1b80eb1 fix: ensure that from_many? joins are properly limited
fix: ensure that lateral joins are properly filtered
2024-02-29 09:22:37 -05:00
Zach Daniel
b0cd8381c4 chore: remove unnecessary function head 2024-02-29 00:21:28 -05:00
Zach Daniel
cfebfa278a chore: fix dialyzer issue 2024-02-29 00:07:56 -05:00
Zach Daniel
d8baa64527 improvement: optimize more cases for simple join aggregates
fixes #215
2024-02-29 00:03:29 -05:00
Zach Daniel
bc9718d063 chore: fix dialyzer 2024-02-28 23:42:48 -05:00
Zach Daniel
f716e3bb69 fix: simplify(and fix) exists subquery generation 2024-02-28 22:55:53 -05:00
Zach Daniel
23dd650100 test: test improvements, regression test 2024-02-28 21:24:31 -05:00
Zach Daniel
2b3b6b0bc9 fix: properly leverage subqueries throughout relationship joining 2024-02-28 21:22:54 -05:00
Zach Daniel
61045700a2 chore: clarify join semantics 2024-02-28 21:22:54 -05:00
Robert Graff
b44d8cdc55
Fix: migration generator extensions in multiple repos (#214)
* Fix: Migration generator for extensions in multiple repos

* Do not rename legacy file on dry_run
2024-02-27 20:23:18 -05:00
Zach Daniel
735d7a202f chore: fix syntax error from unsaved file 2024-02-26 15:56:46 -05:00
Zach Daniel
480eadccf1 fix: fix error when encoding vectors 2024-02-26 15:46:29 -05:00
Zach Daniel
6455bef6ed fix: ensure select is applied (or not) properly in bulk update/destroys 2024-02-25 21:35:33 -05:00
Zach Daniel
b6b2dd1dc6 fix: handle more subquery filter cases for aggregates 2024-02-24 20:20:52 -05:00
Zach Daniel
98f24b1923 Revert "fix: remove buggy global filter extraction"
This reverts commit 7c3b60b942.
2024-02-24 17:35:43 -05:00
Zach Daniel
7c3b60b942 fix: remove buggy global filter extraction 2024-02-24 17:20:03 -05:00
Zach Daniel
8fa10ac6ec fix: only apply filters inside aggregate subquery 2024-02-24 17:10:01 -05:00
Zach Daniel
37cb3825f1 fix: properly handle complex types in lists 2024-02-23 20:53:19 -05:00
Zach Daniel
5052463767 fix: properly apply lateral join conditions to left lateral joins 2024-02-22 07:31:06 -05:00
Zach Daniel
c185ba80e8 fix: ensure select is properly set on delete_all 2024-02-21 16:37:28 -05:00
Zach Daniel
d0041ce88d improvement: optimize aggregate query filtering 2024-02-21 14:03:28 -05:00
Zach Daniel
2b91ebe488 fix: ensure proper return value for single aggregate runs 2024-02-21 09:56:33 -05:00
Zach Daniel
6e81afb24b fix: don't sort a query that will be used with delete_all
fix: ensure that `exists?` aggregates use `repo.exists?`
2024-02-21 07:54:58 -05:00
Zach Daniel
b5b1077032 chore: fix recursion error in to_many_path? 2024-02-20 22:13:23 -05:00
Zach Daniel
38d1beb0d8 fix: properly handle to_many joins in aggregates
fix: honor aggregate query filters
2024-02-20 18:38:35 -05:00
Dmitry Maganov
46928521c0
fix: use proper tables in joins originating from polymorphic resource (#211) 2024-02-20 11:15:56 -05:00
Dmitry Maganov
d2500b25f3
fix: properly transfer table names to non-inner wrapper queries (#210) 2024-02-20 11:15:06 -05:00
Zach Daniel
40522aadd8 chore: properly set __ash_bindings__ on bulk updatable query 2024-02-19 13:49:11 -05:00
Zach Daniel
f9a59cc5f6 chore: update style for credo 2024-02-19 13:35:36 -05:00
Zach Daniel
557bc6019c fix: handle non-inner joins in delete_all
fix: handle non-inner joins in update
2024-02-19 13:29:41 -05:00
Zach Daniel
7cbe482fc9 fix: don't update_all or delete_all with order_by 2024-02-19 12:40:26 -05:00
Zach Daniel
0979756b0b fix: handle updating from queries w/ non-inner initial joins 2024-02-19 11:56:48 -05:00
Zach Daniel
9edde198ef fix: joining to from_many?: true relationships not honoring limit 2024-02-19 09:27:16 -05:00
Zach Daniel
6cb53dc8d7 fix: allow subquerying a through while aggregating a many to many 2024-02-15 23:11:44 -05:00
Zach Daniel
cde117e18b fix: don't subquery if we need to reference parent_as 2024-02-15 23:06:24 -05:00
Zach Daniel
bdcf97a638 fix: avoid double wrapping in subqueries 2024-02-15 22:58:11 -05:00
Zach Daniel
fd746a784c fix: properly set 0 binding on joined subquery creation
fixes #208
2024-02-15 11:57:17 -05:00
Zach Daniel
2d18c9cbeb fix: properly alter renaming attributes in migration generator
fixes #207
2024-02-15 09:23:48 -05:00
Zach Daniel
8f10c9b824 chore: update credo 2024-02-14 12:12:54 -05:00
Zach Daniel
930d16a5e9 fix: handle original data not available in destroy_query 2024-02-12 10:08:48 -05:00
Barnabas Jovanovics
a9d38e91e1
Improvement: mark (i)like functions as predicates (#205) 2024-02-07 14:45:34 -05:00
Zach Daniel
1ea360d15c improvement: detect bigserial when altering attributes
closes #204
2024-02-07 14:39:38 -05:00
Zach Daniel
c72b57ece5 fix: use primary key of source as join key 2024-02-06 12:39:16 -05:00
Kilian Cirera Sant
b2b05618b5
improvement: Include modules in installed_extensions return type (#202)
As per the documentation (and indeed the actual behavior):

> Extensions can be a string, representing a standard postgres
extension, or a module that implements `AshPostgres.CustomExtension`.
2024-02-05 16:52:09 -05:00
Zach Daniel
809cd5582f improvement: don't drop primary key in case of removal 2024-02-04 10:12:39 -05:00
Eduardo B. A
a8b7f3b3e7
feat: Make MigrationGenerator accept atoms (#201)
Co-authored-by: Eduardo B. Alexandre <sezdocs@github.com>
2024-02-02 12:25:02 -05:00
Zach Daniel
43b576e09d fix: use pkey if error fields is empty 2024-02-01 15:48:23 -05:00
Zach Daniel
4494bf971f chore: changeset.resource -> resource 2024-02-01 15:21:50 -05:00
Zach Daniel
de7d6feaa3 fix: forgot to bind keys to a variable 🤦🏻 2024-02-01 15:12:17 -05:00
Zach Daniel
a940022eba fix: ensure identity keys is never missing 2024-02-01 14:59:49 -05:00
Zach Daniel
b018262637 test: add new test verifying batch destroy behavior
chore: add sobelow warning skip
2024-02-01 13:09:06 -05:00
Zach Daniel
d71cb81792 improvement: handle if select is present on query 2024-01-31 16:30:23 -05:00
Zach Daniel
8c43deea9b fix: properly build subqueries when required for relationship queries 2024-01-30 15:21:59 -05:00
Zach Daniel
ffafa6c9f5 improvement: support Ash.Changeset.OriginalDataNotAvailable 2024-01-30 12:49:52 -05:00
Zach Daniel
4930a69b95 improvement: support count_nils expression 2024-01-29 17:17:32 -05:00
Zach Daniel
b1d10c32cc chore: fix credo and update ash 2024-01-29 16:57:04 -05:00
Zach Daniel
a05783d422 fix: only migrate/rollback one repo at a time
fixes #197
2024-01-29 16:47:55 -05:00
Zach Daniel
647a268183 chore: skip sobelow warning 2024-01-29 15:52:08 -05:00
Zach Daniel
7b9929f07c chore: format 2024-01-29 10:36:20 -05:00
Zach Daniel
5952889ac7 chore: remove IO.inspect 2024-01-29 10:25:27 -05:00
Zach Daniel
2b813c8975 chore: consider ignore_fields when comparing custom indexes 2024-01-27 10:56:11 -05:00
Zach Daniel
98b1d2ad6c improvement: error_fields for custom_index
fix: proper return types for updates from queries
fix: allow atomics to return `nil`
2024-01-27 10:02:57 -05:00
Ryan
64e117603a
fix: Correct the matching used in building a distinct expression (#196) 2024-01-26 15:04:54 -05:00
Zach Daniel
29da61d661 chore: format 2024-01-24 12:49:38 -05:00
Zach Daniel
9926d5cb7c fix: only rollback to savepoint on specific errors 2024-01-24 11:37:24 -05:00
Dmitry Maganov
8f3100a381
fix: keep fields of custom_index in format that they were provided (#195) 2024-01-22 11:32:34 -05:00
Zach Daniel
445de282c0 fix: remap selected fields, don't subquery in aggregate joins 2024-01-19 20:13:42 -05:00
Zach Daniel
f20a07f54b improvement: support latest ash changes 2024-01-19 00:12:50 -05:00
Zach Daniel
97847da734 fix: include explicit schema in snapshot folder name
closes #193
2024-01-16 23:44:49 -05:00
Jechol Lee
62a640ecb7
fix: Support all_tenants? in custom index (#194) 2024-01-15 05:40:05 -05:00
Zach Daniel
b93b1d722b improvement: support all_tenants? option for identities
improvement: support `all_tenants?` option for custom indexes
2024-01-12 10:11:16 -05:00
Zach Daniel
40c1a13652 fix: unset sort/distinct on related queries 2024-01-11 23:17:05 -05:00
Zach Daniel
f3ccb78f86 improvement: support join_filters on aggregates
fix: subquery relationships that have filters
2024-01-11 22:30:35 -05:00
Zach Daniel
9b5acd98f7 chore: credo, dialyzer, format 2024-01-10 08:34:23 -05:00
Zach Daniel
8bfa3ffa08 fix: don't overwrite manually set schema on lateral join query 2024-01-10 08:19:21 -05:00
Zach Daniel
8976ab6722 improvement: use the target action when generating related queries 2024-01-09 08:31:06 -05:00
Zach Daniel
a60dbf1725 fix: properly configure polymorphic_name option 2024-01-08 08:39:13 -05:00
Zach Daniel
65180ec3ac fix: honor configured schema on bulk create 2024-01-05 10:01:40 -05:00
Zach Daniel
f1d5d483a6 fix: properly gather types for operator & function overloads 2024-01-04 14:08:05 -05:00
Zach Daniel
3cb33723fe improvement: support latest ash version & operator overrides 2024-01-04 01:09:16 -05:00
Zach Daniel
c0c9621534 improvement: support new bulk operations
fix: support encoding errors with expressions in them
2023-12-31 08:40:30 -05:00
Zach Daniel
2a2fd30e33 improvement: support new return_query/2 callback
improvement: support new `:no_rollback` error signal
2023-12-29 21:49:34 -05:00
Zach Daniel
9d6c17f2c2 chore: remove inspect 2023-12-27 10:21:57 -05:00
Zach Daniel
6ff25bf342 improvement: require name when generating migrations 2023-12-27 10:08:13 -05:00
Zach Daniel
89a4363c1f improvement: support directly referencing aggregates from aggregates 2023-12-23 10:39:54 -05:00
Zach Daniel
46118a77ca improvement: support aggregates as get_path subject 2023-12-22 22:23:49 -05:00
Zach Daniel
32ef8e6834 chore: remove commented out code 2023-12-22 21:16:13 -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
5d246cc23b chore: take proper args from codegen args 2023-12-22 15:11:49 -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
8192d1eb3b improvement: clean up nested if statements to single case statements 2023-12-19 22:00:40 -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
5e0f3c4657 fix: handle strings in get_path 2023-12-15 18:11:18 -05: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
54908395eb fix: reenable mix tasks that need calling 2023-12-06 18:53:37 -05:00
Zach Daniel
51f51d92d2 fix: properly cast lazy update defaults to target type 2023-12-04 14:55:40 -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
47e378e196 chore: fix dialyzer 2023-11-29 09:22:51 -05:00
Zach Daniel
592e79a2f9 improvement: support composite types 2023-11-27 17:47:54 -05:00
Zach Daniel
dc984e83c7 fix: avoid empty error on upserts with :nothing
docs: add some small docs for custom extensions
2023-11-27 11:12:22 -05:00
Barnabas Jovanovics
9c5dd0304e
chore: remove IO.inspect (#185) 2023-11-22 14:43:44 -05:00
Zach Daniel
5cf9affff4 fix: simplify aggregate bindings & calculation reference building 2023-11-22 14:07:18 -05:00
Zach Daniel
8e8da855b2 chore: fix dialyzer error 2023-11-21 09:44:10 -05:00
Zach Daniel
28f2861036 improvement: optimize relationships with identity on other end 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
Zach Daniel
48e8a414da chore: add error context to hydrate references 2023-11-20 06:38:43 -05:00
Zach Daniel
944a4e128e chore: format and fix matrix 2023-11-17 09:17:11 -05:00
Zach Daniel
bdcbd647f3 fix: apply limit to from_many? relationship joins 2023-11-17 09:03:25 -05:00
Zach Daniel
33bd0a7061 fix: properly add filters for exists aggregates
closes: #173
2023-11-17 07:46:43 -05:00
Zach Daniel
c6e6633a9a fix: properly expand calculation values across aggregate invocations 2023-11-17 04:01:35 -05:00
Zach Daniel
abbbddf726 fix: don't add filter for no_attributes? relationships 2023-11-16 18:08:12 -05:00
Zach Daniel
ae90b66056 chore: credo/dialyzer 2023-11-16 17:55:27 -05:00
Zach Daniel
39754d1f38 fix: handle no_attributes? flag on aggregates better
fix: properly handle sorted relationships in aggregates
2023-11-16 17:48:39 -05:00
Zach Daniel
f62eef176a chore: remove testing variable 2023-11-16 11:15:11 -05:00
Zach Daniel
ef96cd541e fix: use synonymous_relationship_path when looking up ref bindings 2023-11-16 11:02:24 -05:00