feat(plugin): Use gRPC interface for codegen plugin communication #2930
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.
I propose to introduce a
service
block at the top of codegen.proto which currently defines a single rpc namedGenerate
which takes and returns the existing codegen proto messages. Establishing a way for codegen plugins to interact with sqlc in an extensible way is the goal.I use the generated grpc client stub as a proof-of-concept, implementing a basic client conn interface for each of our three plugin types (built-in, process and wasm). The implementation doesn't yet expect a plugin to handle anything other than the existing codegen call, though I do pass the
method
parameter as an argument to process and wasm plugins with the expectation that we will update our plugin-building sdk to use generated server stubs and implement a handler "router" of some kind.