Skip to content

buf generate not working if google.protobuf.Timestamp field exists in protobuf #70

@janmpo

Description

@janmpo

Dear @ysugimoto and other members,

I'm trying to use this superb package with buf (https://https://buf.build) and fields that are of type google.protobuf.Timestamp.

I have successfully executed the greeter example, and to achieve that, I added to greeter example HelloRequest a google.protobuf.Timestamp date = 2 [(graphql.field) = {}];

api.proto file

`
// greeter.proto
syntax = "proto3";

import "graphql/graphql.proto";
import "google/protobuf/timestamp.proto";

package graphql;

option go_package = "/greeter";
// option go_package = ".;pb";

service Greeter {
// gRPC service information
option (graphql.service) = {
host: "localhost:50051"
insecure: true
};

rpc SayHello (HelloRequest) returns (HelloReply) {
// Here is plugin definition
option (graphql.schema) = {
type: QUERY // declare as Query
name: "hello" // query name
};
}

rpc SayGoodbye (GoodbyeRequest) returns (GoodbyeReply) {
// Here is plugin definition
option (graphql.schema) = {
type: QUERY // declare as Query
name: "goodbye" // query name
};
}
}

message HelloRequest {
// Below line means the "name" field is required in GraphQL argument
string name = 1 [(graphql.field) = {required: true}];
google.protobuf.Timestamp date = 2 [(graphql.field) = {
}];
}

message HelloReply {
string message = 1;
google.protobuf.Timestamp date_only = 2 ;
string text_only = 3;
}

message GoodbyeRequest {
// Below line means the "name" field is required in GraphQL argument
string name = 1 [(graphql.field) = {required: true}];
}

message GoodbyeReply {
string message = 1;
}
`

I have buf installed and these are my config files:

buf.yaml

`
version: v2
modules:

  • path: api
    name: buf.build/test/greeter
    `

and

buf.gen.yaml

`
version: v2
managed:
enabled: true
plugins:

  • local: protoc-gen-go
    out: greeter
    opt: paths=source_relative
  • local: protoc-gen-go-grpc
    out: greeter
    opt: paths=source_relative,require_unimplemented_servers=false
  • local: protoc-gen-grpc-gateway
    out: greeter
    opt: paths=source_relative
  • local: protoc-gen-openapiv2
    out: third_party/OpenAPI
  • local: protoc-gen-connect-go
    out: greeter
    opt: paths=source_relative
  • local: protoc-gen-graphql
    out: greeter
    opt: paths=source_relative
    `

When I execute buf generate I get 2024/06/11 14:32:28 [PROTOC-GEN-GRAPHQL] Error: google's ptype "timestamppb" does not implement for now. Failure: plugin protoc-gen-graphql: exit status 1

However, if I cd into api directory and execute "protoc -I. --go_out=.. --go-grpc_out=.. --graphql_out=.. api.proto graphql.proto" everything works fine, and all protobufs are generated.

What am I doing wrongly? Is it a buf issue?

Regards & thanks for this great graphQL <-> gRPC [gateway]

janmpo

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions