# go-cli
**Repository Path**: kxu913/go-cli
## Basic Information
- **Project Name**: go-cli
- **Description**: base on echo to create a go web application
- **Primary Language**: Unknown
- **License**: AGPL-3.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-04-02
- **Last Updated**: 2023-06-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Go语言, Cli
## README
# Go-cli
**Go-cli是一个基于golang+echo的一个快速创建微服务的工具,如果你拥有Docker和Kubernetes+Istio的环境,也可以通过serverless-generator中包含的Api快速的生成基于Istio的Api.**
## 演示
## 快速开始
- 推荐通过docker-compose启动
在script目录下运行 `docker-compose up -d`
- 克隆此项目到本地
分别启动`basic-generator`、`db-api-generator`、`graphql-generator`、`microservice-generator`,`serverless-generator`
## 模块介绍
### microservice-generator
生成一个完整的微服务API,返回一个代码zip包。子模块参数参考下面:
- Basic:参数介绍参考`basic-generator`。
- DB:参数介绍参考`db-api-generator`。
- Graphql: 可选,不填就不会生成Graphql相应代码,参数介绍参考`graphql-generator`
- 示例
```
curl --location 'http://localhost:1325/it/v1/create' \
--header 'Content-Type: application/json' \
--data '{
"Basic": {
"Prefix": "/api/v1",
"ProjectName": "it",
"Port": 8778,
"Modules": [
"DB"
]
},
"DB": {
"Host": "172.22.192.1",
"DBName": "workflow",
"DBPort": 5432,
"User": "postgres",
"Pwd": "postgres",
"Table": "task"
},
"Graphql": {
"QueryName": "workflow",
"QueryDescription": "Get Workflow",
"SQL": "SELECT workflow.id AS workflow_id, workflow.status AS workflow_status FROM workflow"
}
}'
```
### basic-generator
用来创建一个最基础的项目框架,可以生成cli在本地运行。包含参数:
- ProjectName:生成项目名称。
- Prefix:生成API前缀
- Port: 启动端口
- Modules:包含生成模块,可选参数 'JWT', 'DB', 'BASIC','ALL'
- 示例
```
curl --location 'http://localhost:1323/cli/v1/init' \
--header 'Content-Type: application/json' \
--data '{
"ProjectName": "it",
"Prefix": "/api/v1",
"Port": 8777,
"Modules": [
"DB"
]
}'
```
### db-api-generator
基于basic-generator创建的项目,生成数据库代码,需要提供可连接的数据库参数。包含参数:
- ProjectName:项目名称,同上。
- Prefix:API前缀,同上。
- Host: 数据库服务器。
- DBname:数据库名称。
- DBPort:数据库端口。
- User: 用户名。
- Pwd: 密码。
- 示例
```
curl --location 'http://localhost:1324/cli/v1/db/workflow' \
--header 'Content-Type: application/json' \
--data '{
"ProjectName": "it",
"Prefix": "/api/v1",
"Host": "172.22.192.1",
"DBname": "workflow",
"DBPort": 5432,
"User": "postgres",
"Pwd":"postgres"
}'
```
### graphql-generator
基于basic-generator创建的项目,生成Graphql代码,需要提供执行的数据库SQL。包含参数:
- ProjectName:项目名称,同上。
- QueryName:Graphql的查询名称。
- QueryDescription: Graphql的查询描述。
- SQL:查询数据需要的SQL。
- 示例
```
curl --location 'http://localhost:9004/graphql/v1/sql' \
--header 'Content-Type: application/json' \
--data '{
"ProjectName": "it",
"QueryName": "task",
"QueryDescription": "Get Task",
"SQL":"SELECT task.id AS task_id, workflow.id AS workflow_id, task.status AS task_status, task.started_time AS task_start_time, workflow.status AS workflow_status FROM task INNER JOIN workflow ON task.workflow_id=workflow.id"
}'
```
### serverless-generator
通过API部署docker image到Kubernetes,以及部署API到Istio:
#### 部署服务到Kubernetes以及注入api到Istio。
- `http://localhost:9003/cli/deploy`
- MetaData:
- Name: Kubernetes服务名称。
- Version: Kubernetes服务版本。
- CloudProvider: 公有云的ECR地址,需要在代码里面配置你的账号,目前支持 `tx` 和 `ali`
- Prefix: Api前缀。
- Container:
- Image:部署镜像。// 会通过project来获取镜像,你也可以指定镜像
- Port:容器端口。// 会通过Dockerfile来获取端口,你也可以指定端口。
- ForceUpdate:强制更新,如果为`true`,每次部署都会重新拉取镜像。
- RunAsRoot:是否以`root`启动容器。
- Replicas:实例个数。
- Environments:容器环境变量。
- 示例
```
curl --location 'http://localhost:9003/cli/deploy' \
--header 'Content-Type: application/json' \
--data '{
"MetaData": {
"Name": "it",
"Version": "v1",
"CloudProvider": "tx",
"Prefix":"/api/v1"
},
"Container": {
"ForceUpdate": true,
"RunAsRoot": false,
"Environments": [
{
"name": "db_host",
"value": "172.22.192.1"
}
]
},
"Replicas": 1
}'
```
## 作者
[Kevin Xu](http://kevin913.com.cn/about)
