func NewServer()

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
}