aeus-admin/pkg/dbdialer/dialer.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
}