goverter icon indicating copy to clipboard operation
goverter copied to clipboard

Cannot set value for field XXX_NoUnkeyedLiteral because it does not exist on the source entry.

Open liyuan1125 opened this issue 4 years ago • 7 comments
trafficstars

//go:generate goverter api/pkg/converter

package converter

import (
	"product/pkg/ent"
	pb "product/server/account/proto"
)

// goverter:converter
type Converter interface {
	// goverter:ignore XXX_NoUnkeyedLiteral
	Convert(source ent.Account) pb.QueryResponse_Account
}

output

Cannot set value for field XXX_NoUnkeyedLiteral because it does not exist on the source entry.

liyuan1125 avatar Oct 07 '21 08:10 liyuan1125

Please add the models ent.Account and pb.QueryResponse_Account to this issue.

jmattheis avatar Oct 07 '21 15:10 jmattheis

Please add the models ent.Account and pb.QueryResponse_Account to this issue.

type Account struct {
	ID uint64 `json:"id,omitempty"`
}

type QueryResponse_Account struct {
	ID                   uint64   `protobuf:"varint,1,opt,name=id,proto3" json:"id"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

liyuan1125 avatar Oct 08 '21 08:10 liyuan1125

Cannot reproduce:

$ cat input.go
package test

// goverter:converter
type Converter interface {
        // goverter:ignore XXX_NoUnkeyedLiteral XXX_unrecognized XXX_sizecache
        Convert(source Account) QueryResponse_Account
}

type Account struct {
        ID uint64 `json:"id,omitempty"`
}

type QueryResponse_Account struct {
        ID                   uint64   `protobuf:"varint,1,opt,name=id,proto3" json:"id"`
        XXX_NoUnkeyedLiteral struct{} `json:"-"`
        XXX_unrecognized     []byte   `json:"-"`
        XXX_sizecache        int32    `json:"-"`
}
$ go run github.com/jmattheis/goverter/cmd/goverter test
$ cat generated/generated.go
// Code generated by github.com/jmattheis/goverter, DO NOT EDIT.

package generated

import test "test"

type ConverterImpl struct{}

func (c *ConverterImpl) Convert(source test.Account) test.QueryResponse_Account {
        var testQueryResponse_Account test.QueryResponse_Account
        testQueryResponse_Account.ID = source.ID
        return testQueryResponse_Account
}

jmattheis avatar Oct 08 '21 11:10 jmattheis

Cannot reproduce:

$ cat input.go
package test

// goverter:converter
type Converter interface {
        // goverter:ignore XXX_NoUnkeyedLiteral XXX_unrecognized XXX_sizecache
        Convert(source Account) QueryResponse_Account
}

type Account struct {
        ID uint64 `json:"id,omitempty"`
}

type QueryResponse_Account struct {
        ID                   uint64   `protobuf:"varint,1,opt,name=id,proto3" json:"id"`
        XXX_NoUnkeyedLiteral struct{} `json:"-"`
        XXX_unrecognized     []byte   `json:"-"`
        XXX_sizecache        int32    `json:"-"`
}
$ go run github.com/jmattheis/goverter/cmd/goverter test
$ cat generated/generated.go
// Code generated by github.com/jmattheis/goverter, DO NOT EDIT.

package generated

import test "test"

type ConverterImpl struct{}

func (c *ConverterImpl) Convert(source test.Account) test.QueryResponse_Account {
        var testQueryResponse_Account test.QueryResponse_Account
        testQueryResponse_Account.ID = source.ID
        return testQueryResponse_Account
}

Hi, Thank you very much for your reply, I have created a repository here, you can take a look; https://github.com/leewithyuan/app1

liyuan1125 avatar Oct 09 '21 05:10 liyuan1125

You cannot use ignore on array, define it directly on the struct convert method

// goverter:converter
type Converter interface {
	// goverter:ignore XXX_NoUnkeyedLiteral
	// goverter:ignore XXX_unrecognized
	// goverter:ignore XXX_sizecache
	Convert(source models.Account) pb.Account
	ConvertArray(source []models.Account) []pb.Account
}

jmattheis avatar Oct 09 '21 07:10 jmattheis

I'll add better error messages for this.

jmattheis avatar Oct 09 '21 07:10 jmattheis

I'll add better error messages for this.

Thank you very much!

liyuan1125 avatar Oct 09 '21 08:10 liyuan1125