feat(generate): allow param function to be composable#1292
Draft
vancegillies wants to merge 4 commits intogeldata:masterfrom
Draft
feat(generate): allow param function to be composable#1292vancegillies wants to merge 4 commits intogeldata:masterfrom
param function to be composable#1292vancegillies wants to merge 4 commits intogeldata:masterfrom
Conversation
Makes `param` result callable on the type level, includes TS and Param types for composability
Author
|
@scotttrinh Would love some eyes on this to make sure I am heading in the right direction. |
Collaborator
|
@vancegillies I haven't looked at the code yet (I'll do that now), but just wanted to say just based on your description that you're going in the right direction here. |
Remove the error that prevents 'withParams' from being used as a nested expression.
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.
Overview
Issue: #1290
This PR makes the return from the
paramfunction callable to allow composition while keeping the existing API stable.Broken down into 3 parts
CallableWithParamsExprtoexpr_WithParamswhich adds the function interface on the type levelparamsToInputArgsto map the param's into an object of$expr_Paramor a TS type so you can call the same function from within aparamcallback or with normal ts typesparamcallback, so you can not for example partially apply params, but I don't think there is a valid use case for thatparamOrTsTypefor making a union for the base TS type of a param exprparamfunctioncallableExprfunction that fulfills the above contracttoEdgeQLfunctionexpr.__kind__ === ExpressionKind.WithParamsbranch ofrenderEdgeQLfunction, which is checking if the expr has any args and building a subquery for them.Testing
I have done some little smoke tests, not everything works but I have a be able to get a basic composed query working here
Which outputs
Running these against a gel instance I get

TODO