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 }