func (o *facetOpt) setParams(params *pb.SearchParams) error { req := &pb.FacetRequest{Name: &o.name} params.IncludeFacet = append(params.IncludeFacet, req) if len(o.values) == 0 { return nil } vtype := reflect.TypeOf(o.values[0]) reqParam := &pb.FacetRequestParam{} for _, v := range o.values { if reflect.TypeOf(v) != vtype { return errors.New("values must all be Atom, or must all be Range") } switch v := v.(type) { case Atom: reqParam.ValueConstraint = append(reqParam.ValueConstraint, string(v)) case Range: rng, err := rangeToProto(v) if err != nil { return fmt.Errorf("invalid range: %v", err) } reqParam.Range = append(reqParam.Range, rng) default: return fmt.Errorf("unsupported value type %T", v) } } req.Params = reqParam return nil }