cloudwego/hertz-examples

关于 idl + grom 优化讨论

Closed this issue · 2 comments

cloudwego 先定义 idl 生成 go struct。然后在使用数据库的时候,又通过数据库反向生成 dao struct。这里是不是可以优化成:idl 生成 go struct,然后直接 go migrate 更新数据库?避免有两次生成 struct 的过程

https://github.com/cloudwego/hertz-examples/tree/main/bizdemo/hertz_gorm_gen

gorm 的部分数据无法用 idl 来表示,所以这个地方没办法用 hz 的结构体。

gorm 的部分数据无法用 idl 来表示,所以这个地方没办法用 hz 的结构体。

能具体说说这块吗?我用的可以成功:

idl:

# review.proto
message Review {
  int64 ReviewID = 1;
  string Name = 2;
  int64  GoodsID = 3;
  string Content = 4;
}

# review.pb.go
type Review struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ReviewID int64  `protobuf:"varint,1,opt,name=ReviewID,proto3" json:"ReviewID,omitempty" form:"ReviewID" query:"ReviewID"`
	Name     string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty" form:"Name" query:"Name"`
	GoodsID  int64  `protobuf:"varint,3,opt,name=GoodsID,proto3" json:"GoodsID,omitempty" form:"GoodsID" query:"GoodsID"`
	Content  string `protobuf:"bytes,4,opt,name=Content,proto3" json:"Content,omitempty" form:"Content" query:"Content"`
}

migrate 之后:

image