| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- package initialize
- import (
- "fmt"
- log "github.com/sirupsen/logrus"
- logrus "github.com/sirupsen/logrus"
- "gorm.io/driver/mysql"
- "gorm.io/gorm"
- "standard/cobra/internal/pkg/configs"
- "standard/cobra/internal/pkg/db"
- logs "standard/cobra/internal/pkg/logger"
- "time"
- )
- /*
- /internal/pkg/initialize
- 该package用于各种数据库、中间件连接的初始化
- */
- //初始化mysql
- func InitDBRepo(cfg *configs.Config, logger *log.Logger) (*db.MysqlRepo, error) {
- //1.创建Gorm的logger
- gormLogger := logs.NewGormLogger(logger)
- //2.根据配置文件进行连接格式化
- dsn := fmt.Sprintf(
- "%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local",
- cfg.Mysql.Username,
- cfg.Mysql.Password,
- cfg.Mysql.Host,
- cfg.Mysql.Port,
- cfg.Mysql.Database)
- //3.获取数据库连接
- mysqlDB, err := gorm.Open(mysql.Open(dsn), &gorm.Config{Logger: gormLogger})
- if err != nil {
- return nil, err
- }
- sqlDB, err := mysqlDB.DB()
- if err != nil {
- return nil, err
- }
- // SetMaxIdleConns 设置空闲连接池中连接的最大数量
- sqlDB.SetMaxIdleConns(10)
- // SetMaxOpenConns 设置打开数据库连接的最大数量
- sqlDB.SetMaxOpenConns(100)
- // SetConnMaxLifetime 设置了连接可复用的最大时间
- sqlDB.SetConnMaxLifetime(time.Hour)
- return db.NewMysqlRepo(mysqlDB), nil
- }
- func newMysqlDB(dsn string) (*gorm.DB, error) {
- return gorm.Open(mysql.Open(dsn), &gorm.Config{})
- }
- //日志实例初始化
- func Logger(logger *log.Logger,config *configs.Config ) *log.Logger {
- //if config.App.Env == "prod" {
- // log.SetFormatter(&log.JSONFormatter{})
- //}
- switch config.App.LogLevel {
- case "debug":
- logrus.SetLevel(log.DebugLevel)
- case "error":
- logrus.SetLevel(log.ErrorLevel)
- case "warn":
- logrus.SetLevel(log.WarnLevel)
- default:
- logrus.SetLevel(log.InfoLevel)
- }
- return logrus.StandardLogger()
- }
- //self
- //func InitMysql(config *configs.Config)(*gorm.DB, error){
- // dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=True&loc=Local",
- // config.Mysql.Username,
- // config.Mysql.Password,
- // config.Mysql.Host,
- // config.Mysql.Port,
- // config.Mysql.Database,
- // config.Mysql.Charset)
- //
- // db, err := newMysqlDB(dsn)
- // if err != nil {
- // return nil,err
- // }
- // return db,nil
- //}
- //func InitRedisClient(config *configs.Config) *redis.Client {
- // return redis.NewClient(&redis.Options{
- // Addr: config.Redis.Host, // use default Addr
- // Password: config.Redis.Password, // no password set
- // DB: int(config.Redis.Db), // use default DB
- // })
- //}
|