package repository import ( "database/sql" "gorm.io/driver/postgres" "gorm.io/gorm" loglevel "gorm.io/gorm/logger" "mylomen_server/common/config" "mylomen_server/common/logs" "os" "time" ) var Db = getInstance() func getInstance() *gorm.DB { // unmarshal config ll := logs.NewZapLogger() if config.Instance.PgSql.LogSql { ll = ll.LogMode(loglevel.Warn) } else { ll = ll.LogMode(loglevel.Warn) } // 调用 Open 方法,传入驱动名和连接字符串 conn, instanceErr := gorm.Open(postgres.Open(config.Instance.PgSql.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.PgSql.ConnMaxLifetime) // SetMaxOpenConns 设置打开数据库连接的最大数量。 sqlDB.SetMaxOpenConns(config.Instance.PgSql.MaxOpenConn) // SetConnMaxLifetime 设置了连接可复用的最大时间。 sqlDB.SetConnMaxLifetime(time.Duration(config.Instance.PgSql.MaxIdleConn) * time.Second) db := conn return db } func GetDB() *gorm.DB { return Db }