## 使用 gofiber 作为 http 服务框架

## 编译环境
**因使用了 xorm.io/reverse**
### windows 环境下 需要安装 gcc 环境
>
> Mingw
> 可前往 [(mingw仓库)](https://sourceforge.net/projects/mingw-w64/files/mingw-w64/)
>
> 下载 x86_64-posix-seh
>
> 解压后将 bin 目录 添加到环境变量
>
> 重启生效即可

### 验证是否安装 gcc
```shell
gcc -v
````

## 一键初始化项目
```shell
go generate -x init.go
```

## xorm
### 从结构体 同步 数据库表结构
**User表为例**
```shell
go test ./model/user/generate -v
```

### 从 数据库 反向同步 数据库结构
**部分类型 如: bool 可能需要手动处理**
```shell
go generate ./model/user/reverse_generate.go
```


### 手动初始化
#### swagger
##### 安装
```shell
go install github.com/swaggo/swag/cmd/swag@latest
```

##### 生成 swagger 文档
```shell
#  --parseInternal  解析内部依赖包，默认值: false
#  --parseDependency  解析外部依赖包，默认值: false
#  --parseDepth 解析依赖包深度，默认值:100
# swag init --parseDependency --parseInternal

# 简写
swag i -pd --parseInternal

```

#### air 热重载 

##### 安装
```shell
go install github.com/cosmtrek/air@latest
```
配置文件 .air.toml

## 运行项目
### 热重载
```shell
air
```

### 直接运行
```shell
go run ./main.go
```

### 编译运行
```shell
go build
```

## 所需依赖服务 环境
*建议通过 portainer 部署*
### Portainer
```shell
sudo docker run -d -p 9000:9000 --name portainer --restart always\
 -v /var/run/docker.sock:/var/run/docker.sock\
 -v /opt/portainer/data:/data\
 portainer/portainer-ce
```

### Redis
```yaml
version: '3.4'

services:
  redis_master:
    container_name: redis-master
    image: redis:latest
    restart: always
    command: /etc/redis/redis.conf --appendonly yes --requirepass "12341234"
    ports:
      - "6379:6379"
    volumes:
      - "/opt/redis/data:/data"
      - "/opt/redis/redis.conf:/etc/redis/redis.conf"
```

### Mysql

```yaml
version: "3.4"
x-environment: &environment
  environment:
    - MYSQL_PORT_3306_TCP_ADDR=mysql
    - MYSQL_ROOT_HOST=%
    - MYSQL_ROOT_PASSWORD=12341234

services:
  mysql:
    container_name: mysql
    image: mysql/mysql-server:8.0
    ports:
      - "3306:3306"
    restart: always
    <<: *environment
    volumes:
      - /opt/mysql/data:/var/lib/mysql
```