Skip to main content

wgc grpc-service generate

The generate 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:
  1. Schema Mode: Generates a protobuf definition that mirrors the GraphQL schema. Used for implementing Subgraphs in gRPC (Connect Backend).
  2. Operations Mode: Generates a protobuf definition based on a set of GraphQL operations. Used for generating client SDKs (Connect Client).

Usage

wgc grpc-service generate [options] [service-name]

Arguments

ArgumentDescriptionDefault
service-nameName of the gRPC serviceservice.v1

Options

OptionDescriptionDefault
-i, --input <path-to-input>The GraphQL schema file to generate a protobuf schema fromRequired
-o, --output <path-to-output>The output directory for the protobuf schema.
-p, --package-name <name>The name of the proto packageservice.v1
-g, --go-package <name>Adds an option go_package to the proto fileNone
-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)

wgc grpc-service generate -i ./schema.graphql -o ./service MyService

Generate a protobuf definition from operations (Operations Mode)

wgc grpc-service generate \
  -i ./schema.graphql \
  -o ./gen \
  --with-operations ./operations \
  --package-name my.service.v1 \
  MyService

Define a custom package name

wgc grpc-service generate -i ./schema.graphql -o ./service MyService --package-name my.custom.package

Define a custom go package name

wgc grpc-service generate -i ./schema.graphql -o ./service MyService --go-package github.com/wundergraph/cosmo/service/my-service

Output

The command generates multiple files in the output directory:
  • service.proto: The protobuf definition for the gRPC service
  • service.mapping.json: The mapping file for the gRPC service (Schema Mode only)
  • service.proto.lock.json: The lock file for the protobuf definition
The generated protobuf definition can be used to implement a gRPC service in any language that supports protobuf, or to generate client SDKs. The mapping and the protobuf definition is needed for the composition part. See also: gRPC Services · GraphQL Support for gRPC Integration