in shardingsphere-operator/pkg/shardingsphere/shardingsphere.go [64:86]
func NewServer(driver, host string, port uint, user, password string) (IServer, error) {
if driver != "mysql" && driver != "postgres" {
return nil, fmt.Errorf("unsupported database driver: %s", driver)
}
if host == "" || port == 0 || user == "" || password == "" {
return nil, fmt.Errorf("invalid database config, host=%s, port=%d, user=%s, password=%s", host, port, user, password)
}
dataSourceName := fmt.Sprintf("%s:%s@tcp(%s:%d)/", user, password, host, port)
db, err := sql.Open(driver, dataSourceName)
if err != nil {
return nil, fmt.Errorf("open database=%s error: %w", dataSourceName, err)
}
// check database connection
if err = db.Ping(); err != nil {
return nil, fmt.Errorf("ping database=%s error: %w", dataSourceName, err)
}
return &server{db: db}, nil
}