wgc grpc-service generate
Thegenerate command generates a protobuf definition and mapping file for a gRPC service from a GraphQL schema,
which can be used to implement a gRPC service and can be used for the composition.
It supports two modes:
- Schema Mode: Generates a protobuf definition that mirrors the GraphQL schema. Used for implementing Subgraphs in gRPC (Connect Backend).
- Operations Mode: Generates a protobuf definition based on a set of GraphQL operations. Used for generating client SDKs (Connect Client).
Usage
Arguments
| Argument | Description | Default |
|---|---|---|
service-name | Name of the gRPC service | service.v1 |
Options
| Option | Description | Default |
|---|---|---|
-i, --input <path-to-input> | The GraphQL schema file to generate a protobuf schema from | Required |
-o, --output <path-to-output> | The output directory for the protobuf schema | . |
-p, --package-name <name> | The name of the proto package | service.v1 |
-g, --go-package <name> | Adds an option go_package to the proto file | None |
-w, --with-operations <path> | Path to directory containing GraphQL operation files. Enables Operations Mode. | None |
-l, --proto-lock <path> | Path to existing proto lock file. | <outdir>/service.proto.lock.json |
--custom-scalar-mapping <json> | Custom scalar type mappings as JSON string. Example: {"DateTime":"google.protobuf.Timestamp"} | None |
--custom-scalar-mapping-file <path> | Path to JSON file containing custom scalar type mappings. | None |
--max-depth <number> | Maximum recursion depth for processing nested selections. | 50 |
Description
This command generates a protobuf definition for a gRPC service from a GraphQL schema.Examples
Generate a protobuf definition for a gRPC service from a GraphQL schema (Schema Mode)
Generate a protobuf definition from operations (Operations Mode)
Define a custom package name
Define a custom go package name
Output
The command generates multiple files in the output directory:service.proto: The protobuf definition for the gRPC serviceservice.mapping.json: The mapping file for the gRPC service (Schema Mode only)service.proto.lock.json: The lock file for the protobuf definition