kratos-layout脚手架,可以生成项目,proto,biz,service,data。mono库的生成未完全依照beer-shop,直接生成到app/xx而不是app/xx/service。
go install github.com/yoogoc/kratos-scaffold@latest脚手架的基本格式
kratos-scaffold [proto | service | biz | data] [model] [field_name:field_type[, 'a/array/slice'[, 'n,nil,null']: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 |
| json | *structpb.Struct | x | google.protobuf.Struct | x | jsonb |
-
field_type: 用于描述数据类型,除了基础类型外,还支持json,array符合类型
-
predicate:谓语最终用于sql query时需要的where条件,目前支持:
- eq 等于
- cont like
- gt 大于
- gte 大于等于
- lt 小于
- lte 小于等于
- in 数组
- 生成项目
- 生成mono主库
kratos-scaffold new --mono demo- 生成单体库
kratos-scaffold new user- 生成mono子服务库
kratos-scaffold new usernew 生成单体库与mono子服务库的区别是通过当前目录下是否存在
go.mod文件来判断
- 生成proto文件
kratos-scaffold proto -o api/user/v1/user.proto user id:int64:eq,in name:string:contains age:int32:gte,lte- 生成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- 生成data
kratos-scaffold data -n user-service user id:int64:eq,in name:string:contains age:int32:gte,lte- 生成service
kratos-scaffold service -n user-service user id:int64:eq,in name:string:contains age:int32:gte,lte- 一键生成proto, biz, data, service
kratos-scaffold g -n user-service user id:int64:eq,in name:string:contains age:int32:gte,lte- 复杂用例字段
service user id:int64:eq,in name:string:cont age:int32:gte,lte birthday:time:eq,in,gte extra:json last_login_at:time,nil:gte,lte array:string,a -n userextra: json类型 last_login_at: time类型,允许为nil array: string数组类型
- 灵活的生成proto客户端
- 丰富配置,可以使用配置文件来约定配置,更轻量的使用cli
- biz,service,data可以通过proto文件生成
- data: 支持生成proto client和gorm
- proto 生成可以指定proto风格: aa_bb, aaBb, AaBb
- i18n
- 一次生成biz, service, data
- 完善文档