From 1b600447a8bfbdc4ae1227b8220343d2edacd90a Mon Sep 17 00:00:00 2001 From: Annika Hannig Date: Tue, 16 Jan 2024 16:51:39 +0100 Subject: [PATCH] experimental query --- pkg/http/api_endpoints_search.go | 24 +++++++++++++++------ pkg/store/backends/memory/routes_backend.go | 3 ++- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/pkg/http/api_endpoints_search.go b/pkg/http/api_endpoints_search.go index 2e8e54e..21a800e 100644 --- a/pkg/http/api_endpoints_search.go +++ b/pkg/http/api_endpoints_search.go @@ -26,14 +26,17 @@ func (s *Server) apiLookupPrefixGlobal( // Get prefix to query q, err := validateQueryString(req, "q") - if err != nil { - return nil, err - } + /* + if err != nil { + return nil, err + } + */ // Check what we want to query // Prefix -> fetch prefix // _ -> fetch neighbors and routes lookupPrefix := decoders.MaybePrefix(q) + lookupPrefix = true // Measure response time t0 := time.Now() @@ -44,13 +47,20 @@ func (s *Server) apiLookupPrefixGlobal( return nil, err } + filtersApplied.GetGroupByKey(api.SearchKeyCommunities).AddFilter(&api.SearchFilter{ + Name: "65104:150", + Value: api.Community{65104, 150}, + }) + // Perform query var routes api.LookupRoutes if lookupPrefix { - q, err = validatePrefixQuery(q) - if err != nil { - return nil, err - } + /* + q, err = validatePrefixQuery(q) + if err != nil { + return nil, err + } + */ routes, err = s.routesStore.LookupPrefix(ctx, q, filtersApplied) if err != nil { return nil, err diff --git a/pkg/store/backends/memory/routes_backend.go b/pkg/store/backends/memory/routes_backend.go index d087aed..df7cb55 100644 --- a/pkg/store/backends/memory/routes_backend.go +++ b/pkg/store/backends/memory/routes_backend.go @@ -99,10 +99,11 @@ func (r *RoutesBackend) FindByPrefix( // We make our compare case insensitive prefix = strings.ToLower(prefix) result := api.LookupRoutes{} + hasPrefix := prefix != "" r.routes.Range(func(k, rs interface{}) bool { for _, route := range rs.(api.LookupRoutes) { // Naiive string filtering: - if !strings.HasPrefix(strings.ToLower(route.Network), prefix) { + if hasPrefix && !strings.HasPrefix(strings.ToLower(route.Network), prefix) { continue } if !filters.MatchRoute(route) {