Categorygithub.com/yoogoc/kratos-scaffold
repositorypackage
0.0.0-20241021103401-9b6fd967b483
Repository: https://github.com/yoogoc/kratos-scaffold.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

About

kratos-layout脚手架,可以生成项目,proto,biz,service,data。mono库的生成未完全依照beer-shop,直接生成到app/xx而不是app/xx/service。

Install

go install github.com/yoogoc/kratos-scaffold@latest

Command

脚手架的基本格式

kratos-scaffold [proto | service | biz | data] [model] [field_name:field_type:predicate1,predicate2]...
  • field_type:
类型go实体类型go参数类型proto实体类型proto参数类型数据库类型
float64float64*float64doubleoptional doublenumeric
float32float32*float32floatoptional floatnumeric
int32int32*int32int32optional int32int
int64int64*int64int64optional int64bigint
uint32uint32*uint32uint32optional uint32int
uint64uint64*uint64uint64optional uint64bigint
boolbool*boolbooloptional booltinyint
stringstring*stringstringoptional stringvarchar(255)
textstring*stringstringoptional stringtext
timetime.Timetime.Timestringoptional stringtimestamp
datetime.Timetime.Timestringoptional stringtimestamp
  • predicate:谓语最终用于sql query时需要的where条件,目前支持:
    • eq 等于
    • cont like
    • gt 大于
    • gte 大于等于
    • lt 小于
    • lte 小于等于
    • in 数组

Usage

  1. 生成项目
  • 生成mono主库
kratos-scaffold new --mono demo
  • 生成单体库
kratos-scaffold new user
  • 生成mono子服务库
kratos-scaffold new user

new 生成单体库与mono子服务库的区别是通过当前目录下是否存在go.mod文件来判断

  1. 生成proto文件
kratos-scaffold proto -o api/user/v1/user.proto user id:int64:eq,in name:string:contains age:int32:gte,lte
  1. 生成biz。可用flag:
  • -n --namespace 指定子服务,如果不指定则默认此库为单体库,直接生成到{{project_dir}}/internal/biz目录下

    如果指定了子服务,则会生成到生成到{{project_dir}}/app/{{namespace}}/internal/biz目录下 (data,service同)

kratos-scaffold biz -n user-service user id:int64:eq,in name:string:contains age:int32:gte,lte
  1. 生成data
kratos-scaffold data -n user-service user id:int64:eq,in name:string:contains age:int32:gte,lte
  1. 生成service
kratos-scaffold service -n user-service user id:int64:eq,in name:string:contains age:int32:gte,lte
  1. 一键生成proto, biz, data, service
kratos-scaffold g -n user-service user id:int64:eq,in name:string:contains age:int32:gte,lte

Roadmap

  • 灵活的生成proto客户端
  • 丰富配置,可以使用配置文件来约定配置,更轻量的使用cli
  • biz,service,data可以通过proto文件生成
  • data: 支持生成proto client和gorm
  • proto 生成可以指定proto风格: aa_bb, aaBb, AaBb
  • i18n
  • 一次生成biz, service, data
  • 完善文档