# tros
**Repository Path**: goppviper/tros
## Basic Information
- **Project Name**: tros
- **Description**: golang应用级OS web开发框架底库
- **Primary Language**: Go
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2024-09-19
- **Last Updated**: 2024-09-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
golang应用级OS框架底库
---
## 目录结构
- [快速开始](#快速开始)
- [代码目录](#代码目录)
- [使用方法](#使用方法)
- [数据库访问层](#数据库访问层)
## 快速开始
- [点击查看tros使用示例](https://github.com/woaijssss/tros-example-server.git)
## 代码目录
- |--**conf**: 配置文件管理
- |--**contants**: 配置文件key常量 && 应用级的常量定义
- |--**context**: tros版本的context封装
- |--**enums**: 应用级枚举定义
- |--**country**: 国家定义
- |--**currency**: 货币定义
- |--**lang**: 语言定义(后续可能废弃)
- |--**logx**: 应用级日志管理trlogger
- |--**pkg**: 应用级工具包,包含公共的工具方法和第三方
- |--**third_party**: 第三方访问方法
- |--**utils**: 工具类方法
- |--**encrypt**: 应用级加解密方法
- |--**server**: 应用级微服务启动的主入口
- |--**grpc**: grpc微服务
- |--**http**: http微服务
- |--**middleware**: grpc和http的拦截器
- |--**sys**: 系统级别的方法
- |--**cmd**: 命令行的执行方法
- |--**structure**: 应用级数据结构
- |--**timer**: 应用级定时器
- |--**trerror**: 应用级通用的错误定义
- |--**trkit**: 中间件工具包,包含db、消息队列等服务器中间件的连接和使用
- |--**mongox**: mongodb客户端
- |--**mysqlx**: mysqldb客户端
- |--**redisx**: redisdb客户端
## 使用方法
- 采用grpc-gateway技术,同时支持 restful api 和 grpc api。
- 外部可采用 http 方式接入。
- 内部可采用 grpc 做微服务通讯
- 接口定义示例:
- 通过定义 protobuf 文件来实现接口定义
- 使用 buf 命令可以将 protobuf 文件,编译出 pb.go、pb.gw.go、_grpc.pb.go 三个文件
- 通过“继承”的形式,来实现 service 中的 api 接口
```protobuf
syntax = "proto3";
package console.v1;
import "google/api/annotations.proto";
import "google/protobuf/descriptor.proto";
import "protoc-gen-openapiv2/options/annotations.proto";
option go_package = "example-server/console/v1";
// XXX api
service ExampleService {
// XXXX功能
rpc List(ListRequest) returns (ListResponse) {
option (google.api.http) = {
post: "/console/v1/example/list"
body: "*"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
tags: ["XXXX功能"]
};
}
}
// ListResponse 响应结构
message ListResponse {
// XXXX
int64 total = 2 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "备注描述"}];
}
// ListRequest 请求结构
message ListRequest {
// XXXXX
string id = 1;
}
```
## 数据库访问层
trkit目录为MySQL、MongoDB和Redis提供了快速读写访问方法
在使用之前,您需要执行以下步骤(**以MySQL为例**):
- 步骤1:定义你的。sql文件和数据表
```sql
CREATE TABLE `t_user`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_name` varchar(64) NOT NULL COMMENT '用户名',
) ENGINE=InnoDB DEFAULT COMMENT='用户表';
```
- Step 2: 使用 [GTC工具(Go TABLE编译器)](https://github.com/woaijssss/gtc)将CREATE TABLE语句文件编译为Golang代码
- Step 3: 将生成的数据库访问Golang代码复制到你的项目中
- 放入 [依赖关系仓库](https://github.com/woaijssss/godbx) 仓库到你的项目中
- Step 4: 将MySQL连接参数添加到项目配置文件中,并通过Golang代码加载
- 例如:
```yaml
mysql:
url: root:123456@tcp(127.0.0.1:3306)/example
maxIdleCons: 5
maxLife: 3600
poolSize: 15
maxIdleTime: 1200
```
- Step 5: 至此,你就可以高效的启动web server服务和读写数据库了