Go语言代码生成

项目简介

Phanes 项目是一个集项目脚手架,命令行工具搭配使用来快速构建微服务项目的工具集,为快速构建微服务项目,起初只是想将项目的基础目录结构和通用代码作为模版,
然后使用命令行工具来复制这个模版,由于项目中大多数的业务代码基本上都是 CRUD ,为了进一步提升效率,我将N年前的 CRUD 代码生成器集成到了 phanes 命令中,
通过命令可以快速构建微服务项目基础架构的同时,也可以快速生成简单的业务 CRUD 代码。效率大大提升。 版本计划中对此项目的规划依然是提升开发效率,减少重复性的开发工作。

注: 生成工具毕竟是使用模版的,不能满足所有需求。除基本 CRUD 的操作以外,都需要自己亲自 coding,甚至基本 CRUD
都需要你去修改才能满足你的需求。

安装 phanes

go install github.com/phanes-o/phanes@v0.1.38

安装成功后检查

phanes -v

输出结果:

phanes version v0.1.38

新建项目

使用 phanes 创建微服务项目

phanes new hello

推荐使用方式:新建项目之前,先创建go 的工作区,然后在工作区内创建新的项目。举个例子,你需要做一个电商平台,平台可能包含4-5个微服务,甚至更多。此时,先创建一个电商的workspace,命名为 e-commerce,进入e-commerce目录后,创建你的项目,例如:phanes new payment

代码生成文件配置

配置好需要生成的业务配置文件 generator.go,具体配置说明会在文档中体现,然后执行代码生成命令

//project:hello
type Person struct {
Id int64 `rule:"Parameter;Required;AutoGenGormTag;NameStyle:snake_case;EnableValidator"`
Name string `rule:"Parameter;Required;AutoGenGormTag;NameStyle:snake_case;EnableValidator"`
Age int `rule:"AutoGenGormTag;NameStyle:snake_case;EnableValidator"`
Phones pq.StringArray `rule:"Parameter;AutoGenGormTag;NameStyle:snake_case;EnableValidator"`
CreatedAt time.Time `rule:"Parameter;AutoGenGormTag;NameStyle:snake_case;EnableValidator"`
UpdatedAt time.Time `rule:"Parameter;AutoGenGormTag;NameStyle:snake_case;EnableValidator"`
}

以上示例我使用 PostgresQL 所以数据类型为 pq.StringArray, 具体配置说明请查阅生成配置文件文档

生成代码

执行命令

phanes gen

输出结果

❯ phanes gen[./hello/store/postgres/person.go] code generate successfully![./hello/model/mapping/person.go] code generate successfully![./hello/model/entity/person.go] code generate successfully![./hello/model/person.go] code generate successfully![./hello/bll/person.go] code generate successfully![./hello/server/web/v1/person.go] code generate successfully![./hello/store/person.go] code generate successfully!

进入项目然后拉取依赖

cd hello
go mod tidy

项目配置文件修改

项目配置文件在 script/config.yaml,可根据你使用的数据库类型或者其他来配置你的项目,如果不想启用数据库或者消息中间件,你可以将其注释,项目就不会初始化对应的组件。

事先创建了 postgresQL 或者 Mysql的数据库 hello, 并配置好你的配置文件,如果你使用etcd作为配置中心,将各种配置协议etcd,或者使用配置文件测试启动

启动项目

修改数据库连接配置文件后启动项目

⚠️注意: 在项目启动前请检查你的配置,以确保你的项目能够正常启动运行。如何配置请查看项目配置

go run main.go --config=./script/config.yaml --registry=etcd --registry_address=127.0.0.1:2379

项目正常启动之后可以使用postman或你喜欢的客户端请求刚刚生成代码的http接口

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!