feat: 支持sqlite存储数据

This commit is contained in:
meilin.huang
2023-10-10 23:21:29 +08:00
parent 22e218fc5f
commit 41443dccc0
6 changed files with 72 additions and 16 deletions

View File

@@ -8,21 +8,27 @@ import (
"time"
"gorm.io/driver/mysql"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"gorm.io/gorm/schema"
)
func initDb() {
global.Db = gormMysql()
global.Db = initGormDb()
}
func gormMysql() *gorm.DB {
func initGormDb() *gorm.DB {
m := config.Conf.Mysql
if m.Dbname == "" {
logx.Panic("未找到数据库配置信息")
return nil
// 存在msyql数据库名则优先使用mysql
if m.Dbname != "" {
return initMysql(m)
}
return initSqlite(config.Conf.Sqlite)
}
func initMysql(m config.Mysql) *gorm.DB {
logx.Infof("连接mysql [%s]", m.Host)
mysqlConfig := mysql.Config{
DSN: m.Dsn(), // DSN data source name
@@ -33,6 +39,31 @@ func gormMysql() *gorm.DB {
SkipInitializeWithVersion: false, // 根据版本自动配置
}
if db, err := gorm.Open(mysql.New(mysqlConfig), getGormConfig()); err != nil {
logx.Panicf("连接mysql失败! [%s]", err.Error())
return nil
} else {
sqlDB, _ := db.DB()
sqlDB.SetMaxIdleConns(m.MaxIdleConns)
sqlDB.SetMaxOpenConns(m.MaxOpenConns)
return db
}
}
func initSqlite(sc config.Sqlite) *gorm.DB {
logx.Infof("连接sqlite [%s]", sc.Path)
if db, err := gorm.Open(sqlite.Open(sc.Path), getGormConfig()); err != nil {
logx.Panicf("连接sqlite失败! [%s]", err.Error())
return nil
} else {
sqlDB, _ := db.DB()
sqlDB.SetMaxIdleConns(sc.MaxIdleConns)
sqlDB.SetMaxOpenConns(sc.MaxOpenConns)
return db
}
}
func getGormConfig() *gorm.Config {
sqlLogLevel := logger.Error
logConf := logx.GetConfig()
// 如果为配置文件中配置的系统日志级别为debug则打印gorm执行的sql信息
@@ -50,18 +81,8 @@ func gormMysql() *gorm.DB {
},
)
ormConfig := &gorm.Config{NamingStrategy: schema.NamingStrategy{
return &gorm.Config{NamingStrategy: schema.NamingStrategy{
TablePrefix: "t_",
SingularTable: true,
}, Logger: gormLogger}
if db, err := gorm.Open(mysql.New(mysqlConfig), ormConfig); err != nil {
logx.Panicf("连接mysql失败! [%s]", err.Error())
return nil
} else {
sqlDB, _ := db.DB()
sqlDB.SetMaxIdleConns(m.MaxIdleConns)
sqlDB.SetMaxOpenConns(m.MaxOpenConns)
return db
}
}