32 lines
677 B
Go
32 lines
677 B
Go
package dbdialer
|
|
|
|
import (
|
|
"context"
|
|
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// Dialer open database
|
|
func Dialer(ctx context.Context, driver string, dsn string, cbs ...Option) (db *gorm.DB, err error) {
|
|
opts := newOptions(cbs...)
|
|
|
|
if opts.cfg == nil {
|
|
opts.cfg = &gorm.Config{}
|
|
}
|
|
opts.cfg.Logger = newLogger(opts.log)
|
|
switch driver {
|
|
case mysql.DefaultDriverName:
|
|
db, err = gorm.Open(mysql.Open(dsn), opts.cfg)
|
|
case sqlite.DriverName:
|
|
db, err = gorm.Open(sqlite.Open(dsn), opts.cfg)
|
|
case "postgres":
|
|
db, err = gorm.Open(postgres.Open(dsn), opts.cfg)
|
|
default:
|
|
err = gorm.ErrNotImplemented
|
|
}
|
|
return
|
|
}
|