1 Star 0 Fork 0

bughou / go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
dsn.go 972 Bytes
一键复制 编辑 原始数据 按行查看 历史
bughou 提交于 2022-03-21 20:37 . save
package dbs
import (
"net/url"
"strings"
)
// Data Source Name
type DSN struct {
Host, Port, User, Password, DB string
}
func ParseDSN(urlStr string) DSN {
u, err := url.Parse(urlStr)
if err != nil {
panic("invalid data source: " + urlStr)
}
parts := strings.Split(u.Path, `/`)
if len(parts) != 2 {
panic("invalid db in data source: " + urlStr)
}
password, _ := u.User.Password()
dsn := DSN{
Host: u.Hostname(),
Port: u.Port(),
User: u.User.Username(),
Password: password,
DB: strings.Split(u.Path, `/`)[1],
}
return dsn
}
func (dsn DSN) MysqlFlags() []string {
return []string{`-h` + dsn.Host, `-P` + dsn.Port, `-u` + dsn.User, `-p` + dsn.Password, dsn.DB}
}
func (dsn DSN) RedisFlags() []string {
flags := []string{`-h`, dsn.Host, `-p`, dsn.Port, `-n`, dsn.DB}
if dsn.User != `` {
flags = append(flags, `--user`, dsn.User)
}
if dsn.Password != `` {
flags = append(flags, `-a`, dsn.Password)
}
return flags
}
Go
1
https://gitee.com/bughou/go.git
git@gitee.com:bughou/go.git
bughou
go
go
d31700df43a9

搜索帮助