...

Source file src/go.einride.tech/aip/filtering/request.go

Documentation: go.einride.tech/aip/filtering

     1  package filtering
     2  
     3  // Request is an interface for gRPC requests that contain a standard AIP filter.
     4  type Request interface {
     5  	GetFilter() string
     6  }
     7  
     8  // ParseFilter parses and type-checks the filter in the provided Request.
     9  func ParseFilter(request Request, declarations *Declarations) (Filter, error) {
    10  	if request.GetFilter() == "" {
    11  		return Filter{}, nil
    12  	}
    13  	var parser Parser
    14  	parser.Init(request.GetFilter())
    15  	parsedExpr, err := parser.Parse()
    16  	if err != nil {
    17  		return Filter{}, err
    18  	}
    19  	var checker Checker
    20  	checker.Init(parsedExpr.GetExpr(), parsedExpr.GetSourceInfo(), declarations)
    21  	checkedExpr, err := checker.Check()
    22  	if err != nil {
    23  		return Filter{}, err
    24  	}
    25  	return Filter{
    26  		CheckedExpr: checkedExpr,
    27  	}, nil
    28  }
    29  

View as plain text