71 lines
1.8 KiB
Go
71 lines
1.8 KiB
Go
|
// Package define ...
|
||
|
//
|
||
|
// Description : define ...
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 2024-08-20 17:36
|
||
|
package define
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"git.zhangdeman.cn/zhangdeman/logger/wrapper"
|
||
|
"go.uber.org/zap"
|
||
|
"gorm.io/gorm"
|
||
|
gormLogger "gorm.io/gorm/logger"
|
||
|
)
|
||
|
|
||
|
// DBClient 包装日志实例
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 3:09 PM 2021/12/24
|
||
|
type DBClient struct {
|
||
|
DbFlag string // 数据库标识
|
||
|
LoggerInstance *zap.Logger // 日志实例
|
||
|
master *gorm.DB // 主库
|
||
|
slave *gorm.DB // 从库
|
||
|
ExtraFieldList []string // 提取的字段
|
||
|
Cfg Driver // 数据库配置
|
||
|
}
|
||
|
|
||
|
// SetFlag 设置数据库标识
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 16:18 2022/6/5
|
||
|
func (dc *DBClient) SetFlag(dbFlag string) {
|
||
|
dc.dbFlag = dbFlag
|
||
|
}
|
||
|
|
||
|
// GetMaster 获取主库连接
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 3:28 PM 2021/12/24
|
||
|
func (dc *DBClient) GetMaster(ctx context.Context) *gorm.DB {
|
||
|
session := dc.master.Session(&gorm.Session{})
|
||
|
session.Logger = dc.getLogger(ctx, session, "master")
|
||
|
return session
|
||
|
}
|
||
|
|
||
|
// GetSlave 获取从库链接
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 3:29 PM 2021/12/24
|
||
|
func (dc *DBClient) GetSlave(ctx context.Context) *gorm.DB {
|
||
|
session := dc.slave.Session(&gorm.Session{})
|
||
|
session.Logger = dc.getLogger(ctx, session, "slave")
|
||
|
return session
|
||
|
}
|
||
|
|
||
|
// getLogger 获取日志实例
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 3:45 PM 2021/12/24
|
||
|
func (dc *DBClient) getLogger(ctx context.Context, dbClient *gorm.DB, node string) gormLogger.Interface {
|
||
|
return wrapper.NewGormLoggerWithInstance(ctx, dbClient, dc.loggerInstance, dc.dbFlag+"|"+node, dc.extraFieldList)
|
||
|
}
|