github.com/yoogoc/kratos-scaffold@v0.0.0-20240402032722-a538b3c18955/README.md (about) 1 # About 2 3 kratos-layout脚手架,可以生成项目,proto,biz,service,data。mono库的生成未完全依照beer-shop,直接生成到app/xx而不是app/xx/service。 4 5 # Install 6 7 ```shell 8 go install github.com/yoogoc/kratos-scaffold@latest 9 ``` 10 11 # Command 12 13 脚手架的基本格式 14 15 ``` 16 kratos-scaffold [proto | service | biz | data] [model] [field_name:field_type:predicate1,predicate2]... 17 ``` 18 19 - field_type: 20 21 | 类型 | go实体类型 | go参数类型 | proto实体类型 | proto参数类型 | 数据库类型 | 22 |:-------:|-----------|:---------:|:---------:|:---------------:|:------------:| 23 | float64 | float64 | *float64 | double | optional double | numeric | 24 | float32 | float32 | *float32 | float | optional float | numeric | 25 | int32 | int32 | *int32 | int32 | optional int32 | int | 26 | int64 | int64 | *int64 | int64 | optional int64 | bigint | 27 | uint32 | uint32 | *uint32 | uint32 | optional uint32 | int | 28 | uint64 | uint64 | *uint64 | uint64 | optional uint64 | bigint | 29 | bool | bool | *bool | bool | optional bool | tinyint | 30 | string | string | *string | string | optional string | varchar(255) | 31 | text | string | *string | string | optional string | text | 32 | time | time.Time | time.Time | string | optional string | timestamp | 33 | date | time.Time | time.Time | string | optional string | timestamp | 34 35 36 - predicate:谓语最终用于sql query时需要的where条件,目前支持: 37 - eq 等于 38 - cont like 39 - gt 大于 40 - gte 大于等于 41 - lt 小于 42 - lte 小于等于 43 - in 数组 44 45 # Usage 46 47 1. 生成项目 48 49 - 生成mono主库 50 51 ```shell 52 kratos-scaffold new --mono demo 53 ``` 54 55 - 生成单体库 56 57 ```shell 58 kratos-scaffold new user 59 ``` 60 61 - 生成mono子服务库 62 63 ```shell 64 kratos-scaffold new user 65 ``` 66 67 > new 生成单体库与mono子服务库的区别是通过当前目录下是否存在`go.mod`文件来判断 68 69 2. 生成proto文件 70 ```shell 71 kratos-scaffold proto -o api/user/v1/user.proto user id:int64:eq,in name:string:contains age:int32:gte,lte 72 ``` 73 74 3. 生成biz。可用flag: 75 - -n --namespace 指定子服务,如果不指定则默认此库为单体库,直接生成到{{project_dir}}/internal/biz目录下 76 77 如果指定了子服务,则会生成到生成到{{project_dir}}/app/{{namespace}}/internal/biz目录下 78 (data,service同) 79 80 ```shell 81 kratos-scaffold biz -n user-service user id:int64:eq,in name:string:contains age:int32:gte,lte 82 ``` 83 84 4. 生成data 85 ```shell 86 kratos-scaffold data -n user-service user id:int64:eq,in name:string:contains age:int32:gte,lte 87 ``` 88 89 5. 生成service 90 ```shell 91 kratos-scaffold service -n user-service user id:int64:eq,in name:string:contains age:int32:gte,lte 92 ``` 93 94 6. 一键生成proto, biz, data, service 95 ```shell 96 kratos-scaffold g -n user-service user id:int64:eq,in name:string:contains age:int32:gte,lte 97 ``` 98 99 # Roadmap 100 101 - [ ] 灵活的生成proto客户端 102 - [ ] 丰富配置,可以使用配置文件来约定配置,更轻量的使用cli 103 - [ ] biz,service,data可以通过proto文件生成 104 - [ ] data: 支持生成proto client和gorm 105 - [x] proto 生成可以指定proto风格: aa_bb, aaBb, AaBb 106 - [ ] i18n 107 - [x] 一次生成biz, service, data 108 - [ ] 完善文档