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  - [ ] 完善文档