feat: Support module concat in middleware to avoid compile-time dependencies#1380
Draft
axelson wants to merge 1 commit intoabsinthe-graphql:mainfrom
Draft
feat: Support module concat in middleware to avoid compile-time dependencies#1380axelson wants to merge 1 commit intoabsinthe-graphql:mainfrom
axelson wants to merge 1 commit intoabsinthe-graphql:mainfrom
Conversation
|
I am extremely interested in this fix for @Jump-App's codebase. Right now the compile-time dependencies via our Absinthe schema means any change to what is conceptually a leaf module results in 30+ modules being recompiled. If there's anything I can do to help, let me know. |
Member
|
I'd be much more in favour of handling it via the compiler. |
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.
This allows using
Module.concat/1,2to provide the middleware. The benefit of this is that the resolver no longer has a compile-time dependency on the middleware, and more importantly a transitive dependency on all the middleware's runtime dependencies.Here is an example of a supported field definition:
This almost works today, but
MyMiddlewaredoesn't receive the provided options.Fix is related to #1359
This is more of a PoC/RFC right now. We may actually want to go with an approach that targets the compiler directly, like these two related ecto commits: