首页 > 后端开发 > Golang > 如何将 GORM 字段注释集成到 Protobuf 定义中?

如何将 GORM 字段注释集成到 Protobuf 定义中?

Linda Hamilton
发布: 2024-10-27 04:27:03
原创
784 人浏览过

How to Integrate GORM Field Annotations into Protobuf Definitions?

将字段注释集成到 Protobuf 定义中

寻求在其 protobuf 定义中使用 GORM 提供的字段注释的开发人员可能会遇到由于缺少字段注释而遇到的挑战Protobuf 3 语法中的本机日期时间类型。

为了解决这个问题,可以使用后处理脚本来使用所需的 GORM 注释来增强生成的原型文件。例如,给定以下 protobuf 配置文件定义:

<code class="protobuf">message Profile {
  uint64 id = 1;
  string name = 2;
  bool active = 3;
}</code>
登录后复制

以下脚本(“gorm.sh”)可用于后处理:

<code class="bash">#!/bin/bash

g () {
  sed "s/json:\",omitempty\"/json:\",omitempty\" gorm:\"\"/"
}

cat  \
| g "id" "primary_key" \
| g "name" "varchar(100)" \
> .tmp && mv {.tmp,}</code>
登录后复制

通过调用脚本在生成的 protobuf 文件(例如 ./gorm.sh profile/profile.pb.go)上,生成的输出将是:

<code class="protobuf">//...
type Profile struct {
    state         protoimpl.MessageState
    sizeCache     protoimpl.SizeCache
    unknownFields protoimpl.UnknownFields

    Id     uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"type:primary_key"`
    Name   string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty" gorm:"type:varchar(100)"`
    Active bool   `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"`
}
//...</code>
登录后复制

这种方法可以将 GORM 字段注释集成到 protobuf 定义中,而无需需要自定义实现或第三方库。

以上是如何将 GORM 字段注释集成到 Protobuf 定义中?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板