Skip to content

kratos-scaffold is a kratos-layout style scaffold.

License

Notifications You must be signed in to change notification settings

yoogoc/kratos-scaffold

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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参数类型 数据库类型
float64 float64 *float64 double optional double numeric
float32 float32 *float32 float optional float numeric
int32 int32 *int32 int32 optional int32 int
int64 int64 *int64 int64 optional int64 bigint
uint32 uint32 *uint32 uint32 optional uint32 int
uint64 uint64 *uint64 uint64 optional uint64 bigint
bool bool *bool bool optional bool tinyint
string string *string string optional string varchar(255)
text string *string string optional string text
time time.Time time.Time string optional string timestamp
date time.Time time.Time string optional string timestamp
  • 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
  • 完善文档

About

kratos-scaffold is a kratos-layout style scaffold.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages