package repository import ( "ai-gateway/common/config" "ai-gateway/common/logs" "database/sql" "gorm.io/driver/mysql" "gorm.io/gorm" loglevel "gorm.io/gorm/logger" "os" "time" ) var Db = getInstance() func getInstance() *gorm.DB { // unmarshal config ll := logs.NewZapLogger() if config.Instance.Mysql.LogSql { ll = ll.LogMode(loglevel.Info) } else { ll = ll.LogMode(loglevel.Warn) } conn, instanceErr := gorm.Open(mysql.Open(config.Instance.Mysql.Dsn), &gorm.Config{ Logger: ll, SkipDefaultTransaction: true, }) if instanceErr != nil { logs.NewLog("").Errorf("mysql_getInstance instanceErr: %v", instanceErr) os.Exit(-1) } var sqlDB *sql.DB sqlDB, instanceErr = conn.DB() if instanceErr != nil { logs.NewLog("").Errorf("mysql_getInstance sqlDB: %v", instanceErr) os.Exit(-1) } // SetMaxIdleConns 设置空闲连接池中连接的最大数量 sqlDB.SetMaxIdleConns(config.Instance.Mysql.ConnMaxLifetime) // SetMaxOpenConns 设置打开数据库连接的最大数量。 sqlDB.SetMaxOpenConns(config.Instance.Mysql.MaxOpenConn) // SetConnMaxLifetime 设置了连接可复用的最大时间。 sqlDB.SetConnMaxLifetime(time.Duration(config.Instance.Mysql.MaxIdleConn) * time.Second) db := conn return db } func GetDB() *gorm.DB { return Db }