Allow reuse of an existing db connection when creating a MySQL Store

This commit is contained in:
DGivney
2022-10-10 16:50:34 +11:00
parent 4e6f1c95ff
commit e5eb169055
3 changed files with 39 additions and 11 deletions

View File

@@ -40,19 +40,27 @@ var (
// New creates a new storage
func New(config ...Config) *Storage {
var err error
var db *sql.DB
// Set default config
cfg := configDefault(config...)
// Create db
db, err := sql.Open("mysql", cfg.dsn())
if err != nil {
panic(err)
}
if cfg.Db != nil {
// Use passed db
db = cfg.Db
} else {
// Create db
db, err = sql.Open("mysql", cfg.dsn())
if err != nil {
panic(err)
}
// Set options
db.SetMaxOpenConns(cfg.maxOpenConns)
db.SetMaxIdleConns(cfg.maxIdleConns)
db.SetConnMaxLifetime(cfg.connMaxLifetime)
// Set options
db.SetMaxOpenConns(cfg.maxOpenConns)
db.SetMaxIdleConns(cfg.maxIdleConns)
db.SetConnMaxLifetime(cfg.connMaxLifetime)
}
// Ping database to ensure a connection has been made
if err := db.Ping(); err != nil {