[pull] master from hasura:master#756
Merged
pull[bot] merged 3 commits intoMu-L:masterfrom Sep 26, 2022
Merged
Conversation
PR-URL: hasura/graphql-engine-mono#6039 GitOrigin-RevId: fcbafe2e4b8cf72d739033b372b536d59c398c4e
PR-URL: hasura/graphql-engine-mono#6042 GitOrigin-RevId: cc29154fbe7add1c9707483fd4a22b01d5e1fa13
PR-URL: hasura/graphql-engine-mono#6048 GitOrigin-RevId: a595c55fb636b8a06b1a467acecc701d42df3188
pull bot
pushed a commit
that referenced
this pull request
Jun 26, 2024
## Description This PR implements the GraphQL schema and execution for aggregate relationships. In the `schema` crate, the new `model_aggregate_relationship_field` function handles generating schema for ModelAggregateTarget relationships. It mostly delegates the meat of its implementation to reused logic; some refactoring has occurred to make this possible. This involved changes in `select_many`, `select_aggregate` and `model_arguments`. The creation of the model arguments field argument now exists in `model_arguments` and is reused by `select_many` and `select_aggregate`. The creation of all aggregate field arguments is now in `select_aggregate::generate_select_aggregate_arguments`, and is then reused when generating the aggregate relationship field. That field is annotated with the new `RelationshipToModelAggregate` annotation. In the `execute` crate, the logic around generating an the aggregate selection IR was moved from `select_aggregate` into `model_selection`. This was so it can be reused by the logic in `relationship` that now uses it to generate an aggregate selection when encountering an `RelationshipToModelAggregate` field. Inside `relationship` some rearranging was done so that `build_local_model_relationship` and `build_remote_relationship` could work with either a normal model selection IR or the new aggregate selection IR. The necessitated moving the creation of that IR outside those functions into the caller, so the different callers can create different IR (normal vs aggregate IR). This also reduced code duplication. New tests have been added to `engine` that cover aggregate relationships and also remote joined aggregate relationships. This PR also corrects two bugs in metadata resolve revealed by new testing: * The filter input field name in `GraphqlConfig` must be specified if using an aggregate relationship * The filter input type name defined on a `Model` must be specified if that model is the target of an aggregate relationship. Conversely, the filter input type name can be specified if the `Model` itself doesn't define an aggregate, but is still involved in a aggregate relationship (this previously produced an error). This PR completes the feature, but it is still hidden behind the experimental flag. There will be a follow up PR to remove that and expose the functionality by default. JIRA: [V3ENGINE-160](https://hasurahq.atlassian.net/browse/V3ENGINE-160) [V3ENGINE-160]: https://hasurahq.atlassian.net/browse/V3ENGINE-160?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ V3_GIT_ORIGIN_REV_ID: d499371906f7af71a4017c7c3ae75b7693cd3fa7
pull bot
pushed a commit
that referenced
this pull request
Jun 26, 2024
NOTE: This PR is stacked on #756 and should be shipped after that is merged. This PR enables the existing aggregate relationships work (see #725, #731, #756) by default by removing the experimental flag it used to be disabled behind. The new OpenDD schema changes that were added are also unhidden so that they are visible in the OpenDD JSON Schema. V3_GIT_ORIGIN_REV_ID: cfd86d8a9ea61887ccf0f1a5d08bdcc3dda59cdc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot]
Can you help keep this open source service alive? 💖 Please sponsor : )