You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.1 KiB
90 lines
2.1 KiB
package golog
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"go.dtapp.net/gorequest"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// ApiGorm 接口日志
|
|
type ApiGorm struct {
|
|
gormClient *gorm.DB // 数据库驱动
|
|
config struct {
|
|
systemHostname string // 主机名
|
|
systemOs string // 系统类型
|
|
systemVersion string // 系统版本
|
|
systemKernel string // 系统内核
|
|
systemKernelVersion string // 系统内核版本
|
|
systemBootTime uint64 // 系统开机时间
|
|
cpuCores int // CPU核数
|
|
cpuModelName string // CPU型号名称
|
|
cpuMhz float64 // CPU兆赫
|
|
systemInsideIp string // 内网ip
|
|
systemOutsideIp string // 外网ip
|
|
goVersion string // go版本
|
|
sdkVersion string // sdk版本
|
|
}
|
|
gormConfig struct {
|
|
stats bool // 状态
|
|
tableName string // 表名
|
|
}
|
|
}
|
|
|
|
// ApiGormFun 接口日志驱动
|
|
type ApiGormFun func() *ApiGorm
|
|
|
|
// NewApiGorm 创建接口实例化
|
|
func NewApiGorm(ctx context.Context, systemOutsideIp string, gormClient *gorm.DB, gormTableName string) (*ApiGorm, error) {
|
|
|
|
gl := &ApiGorm{}
|
|
|
|
// 配置信息
|
|
if systemOutsideIp == "" {
|
|
return nil, errors.New("没有设置外网IP")
|
|
}
|
|
gl.setConfig(ctx, systemOutsideIp)
|
|
|
|
if gormClient == nil {
|
|
gl.gormConfig.stats = false
|
|
} else {
|
|
|
|
gl.gormClient = gormClient
|
|
|
|
if gormTableName == "" {
|
|
return nil, errors.New("没有设置表名")
|
|
} else {
|
|
gl.gormConfig.tableName = gormTableName
|
|
}
|
|
|
|
// 创建模型
|
|
gl.gormAutoMigrate(ctx)
|
|
|
|
gl.gormConfig.stats = true
|
|
|
|
}
|
|
|
|
return gl, nil
|
|
}
|
|
|
|
// Middleware 中间件
|
|
func (ag *ApiGorm) Middleware(ctx context.Context, request gorequest.Response) {
|
|
if ag.gormConfig.stats {
|
|
ag.gormMiddleware(ctx, request)
|
|
}
|
|
}
|
|
|
|
// MiddlewareXml 中间件
|
|
func (ag *ApiGorm) MiddlewareXml(ctx context.Context, request gorequest.Response) {
|
|
if ag.gormConfig.stats {
|
|
ag.gormMiddlewareXml(ctx, request)
|
|
}
|
|
}
|
|
|
|
// MiddlewareCustom 中间件
|
|
func (ag *ApiGorm) MiddlewareCustom(ctx context.Context, api string, request gorequest.Response) {
|
|
if ag.gormConfig.stats {
|
|
ag.gormMiddlewareCustom(ctx, api, request)
|
|
}
|
|
}
|