diff --git a/mysql/README.md b/mysql/README.md index 9a07f59e..1a3c28ea 100644 --- a/mysql/README.md +++ b/mysql/README.md @@ -51,8 +51,16 @@ store := mysql.New(mysql.Config{ }) // Initialize custom config using connection string -store := postgres.New(postgres.Config{ - ConnectionURI: "mysql://user:password@localhost:3306/fiber" +store := mysql.New(mysql.Config{ + ConnectionURI: ":@tcp(:)/" + Reset: false, + GCInterval: 10 * time.Second, +}) + +// Initialize custom config using sql db connection +db, _ := sql.Open("mysql", ":@tcp(:)/") +store := mysql.New(mysql.Config{ + Db: db, Reset: false, GCInterval: 10 * time.Second, }) @@ -61,6 +69,11 @@ store := postgres.New(postgres.Config{ ### Config ```go type Config struct { + // DB Will override ConnectionURI and all other authentication values if used + // + // Optional. Default is nil + Db *sql.DB + // Connection string to use for DB. Will override all other authentication values if used // // Optional. Default is "" diff --git a/mysql/config.go b/mysql/config.go index ffdda9a7..d16349de 100644 --- a/mysql/config.go +++ b/mysql/config.go @@ -1,12 +1,18 @@ package mysql import ( + "database/sql" "fmt" "time" ) // Config defines the config for storage. type Config struct { + // DB Will override ConnectionURI and all other authentication values if used + // + // Optional. Default is nil + Db *sql.DB + // Connection string to use for DB. Will override all other authentication values if used // // Optional. Default is "" @@ -63,6 +69,7 @@ type Config struct { // ConfigDefault is the default config var ConfigDefault = Config{ + Db: nil, ConnectionURI: "", Host: "127.0.0.1", Port: 3306, diff --git a/mysql/mysql.go b/mysql/mysql.go index 35b8879b..b2d86fcf 100644 --- a/mysql/mysql.go +++ b/mysql/mysql.go @@ -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 {