支持sqlite数据库驱动
This commit is contained in:
25
client.go
25
client.go
@ -24,6 +24,7 @@ import (
|
||||
gormLogger "gorm.io/gorm/logger"
|
||||
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
@ -70,7 +71,7 @@ func (c *client) AddWithConfigFile(cfgFilePath string, logInstance *zap.Logger)
|
||||
master: nil,
|
||||
slave: nil,
|
||||
extraFieldList: nil,
|
||||
cfg: Mysql{},
|
||||
cfg: Driver{},
|
||||
}
|
||||
if dbClient.master, err = c.GetDatabaseClient(cfg.Config.Master, logInstance); nil != err {
|
||||
return err
|
||||
@ -218,14 +219,22 @@ func (c *client) getGormClient() (*gorm.DB, error) {
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 18:41 2022/6/11
|
||||
func (c *client) GetDatabaseClient(conf *Mysql, logInstance *zap.Logger) (*gorm.DB, error) {
|
||||
func (c *client) GetDatabaseClient(conf *Driver, logInstance *zap.Logger) (*gorm.DB, error) {
|
||||
var (
|
||||
instance *gorm.DB
|
||||
err error
|
||||
)
|
||||
|
||||
if instance, err = gorm.Open(mysql.Open(c.buildConnectionDSN(conf)), &gorm.Config{}); nil != err {
|
||||
return nil, err
|
||||
if conf.DBType == DriverTypeMysql {
|
||||
if instance, err = gorm.Open(mysql.Open(c.buildConnectionDSN(conf)), &gorm.Config{}); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
} else if conf.DBType == DriverTypeSqlite3 {
|
||||
if instance, err = gorm.Open(sqlite.Open(c.buildConnectionDSN(conf)), &gorm.Config{}); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
return nil, fmt.Errorf("%v : db driver is not support", conf.DBType)
|
||||
}
|
||||
|
||||
instance.Logger = wrapper.NewGormLoggerWithInstance(nil, instance, logInstance, "", nil)
|
||||
@ -238,7 +247,11 @@ func (c *client) GetDatabaseClient(conf *Mysql, logInstance *zap.Logger) (*gorm.
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 18:42 2022/6/11
|
||||
func (c *client) buildConnectionDSN(conf *Mysql) string {
|
||||
func (c *client) buildConnectionDSN(conf *Driver) string {
|
||||
if conf.DBType == DriverTypeSqlite3 {
|
||||
// 兼容sqlite3
|
||||
return conf.Host
|
||||
}
|
||||
return fmt.Sprintf(
|
||||
"%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=True&loc=%s",
|
||||
conf.Username,
|
||||
@ -262,7 +275,7 @@ type DBClient struct {
|
||||
master *gorm.DB // 主库
|
||||
slave *gorm.DB // 从库
|
||||
extraFieldList []string // 提取的字段
|
||||
cfg Mysql // 数据库配置
|
||||
cfg Driver // 数据库配置
|
||||
}
|
||||
|
||||
// SetFlag 设置数据库标识
|
||||
|
Reference in New Issue
Block a user