From 4fb99540c5b6b62cf886c93231653ec7ac672f94 Mon Sep 17 00:00:00 2001 From: liuchangshun <961347548@qq.com> Date: Wed, 6 Mar 2024 14:41:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A4=9A=E4=B8=AAdb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lxDb/db.go | 43 ++++++++++++++++++++++++++----------------- lxrun/run.go | 4 ++-- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/lxDb/db.go b/lxDb/db.go index 5b0ee36..3d1419b 100644 --- a/lxDb/db.go +++ b/lxDb/db.go @@ -14,8 +14,9 @@ import ( ) // DB2.0 数据库连接 gorm2.0 -var DB *gorm.DB //gs 数据库 +var DBS map[string]*gorm.DB //gs 数据库 type DbConfig struct { + Name string Host string Port string User string @@ -24,27 +25,35 @@ type DbConfig struct { Charset string } -func GetDB(c *gin.Context) *gorm.DB { +func GetDB(c *gin.Context, dbName ...string) *gorm.DB { v, _ := c.Get("X-Span-ID") spanId := fmt.Sprintf("%v", v) ctx := context.WithValue(context.Background(), "X-Span-ID", spanId) - return DB.WithContext(ctx) + d := "one" + if len(dbName) != 0 { + d = dbName[0] + } + return DBS[d].WithContext(ctx) +} + +func InitDBS(env string, conf []DbConfig) { + DBS = map[string]*gorm.DB{} + if len(conf) == 1 { + conf[0].Name = "one" + } + for _, config := range conf { + InitDB(env, config) + } } func InitDB(env string, conf DbConfig) { - //dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" - //newLogger := logger.New( - // //zap.NewStdLog(), - // log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer - // logger.Config{ - // SlowThreshold: 200 * time.Millisecond, // Slow SQL threshold - // LogLevel: logger.Info, // Log level - // IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger - // Colorful: false, // Disable color - // }, - //) + if conf.Name == "" { + DBS = nil + fmt.Println("db name 错误") + return + } if conf.Host == "" { - DB = nil + DBS = nil fmt.Println("未配置Db连接") return } @@ -64,7 +73,7 @@ func InitDB(env string, conf DbConfig) { fmt.Println(err.Error()) os.Exit(-1) } - DB = db + DBS[conf.Name] = db } else { logger2 := lxzap.NewGormZap(zap.L()) db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{ @@ -78,7 +87,7 @@ func InitDB(env string, conf DbConfig) { fmt.Println(err.Error()) os.Exit(-1) } - DB = db + DBS[conf.Name] = db } //db.AutoMigrate(TaskData{}, Task{}, Version{}) } diff --git a/lxrun/run.go b/lxrun/run.go index cb07b6f..a5a1c05 100644 --- a/lxrun/run.go +++ b/lxrun/run.go @@ -16,7 +16,7 @@ import ( "time" ) -func Run(env string, port string, fun func(), r func(router *gin.Engine), zapConfig lxzap.ZapLogConfig, dbConf lxDb.DbConfig, redisConf lxDb.RedisConfig) { +func Run(env string, port string, fun func(), r func(router *gin.Engine), zapConfig lxzap.ZapLogConfig, dbConf []lxDb.DbConfig, redisConf lxDb.RedisConfig) { _ = lxlog.InitLog() err := lxzap.InitZapLogger(zapConfig) if err != nil { @@ -29,7 +29,7 @@ func Run(env string, port string, fun func(), r func(router *gin.Engine), zapCon } else { app.Use(lxzap.GinLogger(), lxzap.GinRecovery(true)) } - lxDb.InitDB(env, dbConf) + lxDb.InitDBS(env, dbConf) lxDb.InitRedis(redisConf) lxLock.InitRedis(redisConf) fun()