package db import ( "fmt" "github.com/glebarez/sqlite" "gorm.io/driver/mysql" "gorm.io/driver/postgres" "gorm.io/gorm" "strings" "ultone/internal/opt" ) func Init() error { strs := strings.Split(opt.Cfg.DB.Uri, "::") if len(strs) != 2 { return fmt.Errorf("db.Init: opt db uri invalid: %s", opt.Cfg.DB.Uri) } cli.ttype = strs[0] var ( err error dsn = strs[1] ) switch strs[0] { case "sqlite": opt.Cfg.DB.Type = "sqlite" cli.cli, err = gorm.Open(sqlite.Open(dsn)) case "mysql": opt.Cfg.DB.Type = "mysql" cli.cli, err = gorm.Open(mysql.Open(dsn)) case "postgres": opt.Cfg.DB.Type = "postgres" cli.cli, err = gorm.Open(postgres.Open(dsn)) default: return fmt.Errorf("db type only support: [sqlite, mysql, postgres], unsupported db type: %s", strs[0]) } if err != nil { return fmt.Errorf("db.Init: open %s with dsn:%s, err: %w", strs[0], dsn, err) } return nil }