美文网首页
902. 【平台开发】基于 config、gencode_* 生

902. 【平台开发】基于 config、gencode_* 生

作者: 七镜 | 来源:发表于2024-01-03 22:55 被阅读0次

一、背景介绍

config工具:非常契合工具程序的参数配置程序。同时,也是平台开发技术整合的一部分。

gencode_* 工具:基于gorm的代码生成器,用于生成gorm的model代码,并支持grapql schema的生成。

二、代码生成步骤

  1. 执行.\main_config.exe -path_project blog_server_v5 -path_modules modules -path_webserver webserver -path_config config_blog_server -path_output blog_server
PS E:\personal\golang\config\build2.0> .\main_config.exe  -path_project blog_server_v5 -path_modules modules -path_webserver webserver -path_config config_blog_server -path_output blog_server      
welcome to use `isqijing/config`, you can contact to qijing by qijing.cloud@qq.com.
modules/config_blog_server/proto
modules
blog_server/modules
NOT FINISHED, please execute command below:
protoc -I="." --go_out=./blog_server/modules/config_blog_server ./blog_server/modules/config_blog_server/proto/proto_my_config/*.proto
protoc -I="." --go-grpc_out=./blog_server/modules/config_blog_server ./blog_server/modules/config_blog_server/proto/proto_my_config/*proto

  1. 执行 protoc -I="." --go_out=./blog_server/modules/config_blog_server ./blog_server/modules/config_blog_server/proto/proto_my_config/*.protoprotoc -I="." --go-grpc_out=./blog_server/modules/config_blog_server ./blog_server/modules/config_blog_server/proto/proto_my_config/*proto
PS E:\personal\golang\config\build2.0> protoc -I="." --go_out=./blog_server/modules/config_blog_server ./blog_server/modules/config_blog_server/proto/proto_my_config/*.proto
PS E:\personal\golang\config\build2.0> protoc -I="." --go-grpc_out=./blog_server/modules/config_blog_server ./blog_server/modules/config_blog_server/proto/proto_my_config/*proto

  1. 编写服务端相关实体的结构体,eg:
type DimensionReading struct {
    ID            string        `json:"id" gorm:"primary_key"`
    Author        string        `json:"author" gorm:"not null"`   //作者
    Location      string        `json:"location" gorm:"not null"` //出处
    BaseDimension BaseDimension `json:"base_dimension" gorm:"embedded"`
    EcoComments   []*EcoComment `json:"eco_comments" gorm:"many2many:dimension_reading__eco_comment;constraint:OnDelete:CASCADE;comment:这个维度的评论"`
    Users         []*User       `json:"users" gorm:"many2many:user__dimension_reading;comment:这个维度属于谁"`
}
  1. 执行 .\main_gencode_models.exe -path_home "E:\personal\golang\blog_server_v5\models" 补全结构体,eg:
type DimensionReading struct {
    ID            string        `json:"id" gorm:"primary_key"`
    Author        string        `json:"author" gorm:"not null"`   //作者
    Location      string        `json:"location" gorm:"not null"` //出处
    BaseDimension BaseDimension `json:"base_dimension" gorm:"embedded"`
    EcoComments   []*EcoComment `json:"eco_comments" gorm:"many2many:dimension_reading__eco_comment;constraint:OnDelete:CASCADE;comment:这个维度的评论"`
    Users         []*User       `json:"users" gorm:"many2many:user__dimension_reading;comment:这个维度属于谁"`
}

func (dimensionReading *DimensionReading) BeforeCreate(tx *gorm.DB) error {
    return BeforeCreateUpdateID(tx)
}

func InitDimensionReading() {
    err := DB.AutoMigrate(&DimensionReading{})
    if err != nil {
        log.Panic(err)
    }
}

  1. 执行 .\main_gencode_schema.exe -path_home "E:\personal\golang\blog_server_v5\models" 生成graphql代码,eg:
var dimensionReadingType = graphql.NewObject(graphql.ObjectConfig{
    Name: "DimensionReading",
    Fields: graphql.Fields{
        "id": &graphql.Field{Type: graphql.ID},
        "author": &graphql.Field{Type: graphql.String},
        "location": &graphql.Field{Type: graphql.String},
        "base_dimension": &graphql.Field{Type: baseDimensionType},
        "eco_comments": &graphql.Field{Type: graphql.NewList(ecoCommentType)},
        "users": &graphql.Field{Type: graphql.NewList(userType)},

    },
    Description: "dimensionReadingType",
})

服务端框ORM代码构建完成

相关文章

网友评论

      本文标题:902. 【平台开发】基于 config、gencode_* 生

      本文链接:https://www.haomeiwen.com/subject/frdvndtx.html