From 919532b82016fcdb9cef352eacda1a0b3c6efa78 Mon Sep 17 00:00:00 2001 From: Peter Grlica Date: Mon, 16 May 2022 14:17:17 +0200 Subject: [PATCH] Fixed queue and route search in admin --- pkg/messagebus/types/queue.go | 2 +- pkg/options/options.gen.go | 3 +-- store/adapters/rdbms/filters.gen.go | 13 +++++++++---- store/tests/apigw_route_test.go | 2 +- store/tests/queue_test.go | 6 +++++- system/apigw_route.cue | 3 ++- system/queue.cue | 4 ++-- system/rest/apigw_route.go | 1 + system/rest/queues.go | 1 + system/service/queue.go | 9 ++++----- system/types/apigw_route.go | 1 + system/types/queue.go | 4 +--- 12 files changed, 29 insertions(+), 20 deletions(-) diff --git a/pkg/messagebus/types/queue.go b/pkg/messagebus/types/queue.go index 3c6ac41af..ff999400d 100644 --- a/pkg/messagebus/types/queue.go +++ b/pkg/messagebus/types/queue.go @@ -29,7 +29,7 @@ type ( } QueueFilter struct { - Queue string + Query string Consumer string Deleted filter.State diff --git a/pkg/options/options.gen.go b/pkg/options/options.gen.go index 121fbbd41..ed61d8544 100644 --- a/pkg/options/options.gen.go +++ b/pkg/options/options.gen.go @@ -7,10 +7,9 @@ package options // import ( - "time" - "github.com/cortezaproject/corteza-server/pkg/rand" "github.com/cortezaproject/corteza-server/pkg/version" + "time" ) type ( diff --git a/store/adapters/rdbms/filters.gen.go b/store/adapters/rdbms/filters.gen.go index 6f79da973..addd3b842 100644 --- a/store/adapters/rdbms/filters.gen.go +++ b/store/adapters/rdbms/filters.gen.go @@ -220,8 +220,10 @@ func ApigwRouteFilter(f systemType.ApigwRouteFilter) (ee []goqu.Expression, _ sy ee = append(ee, expr) } - if val := strings.TrimSpace(f.Route); len(val) > 0 { - ee = append(ee, goqu.C("route").Eq(f.Route)) + if f.Query != "" { + ee = append(ee, goqu.Or( + goqu.C("endpoint").ILike("%"+f.Query+"%"), + )) } return ee, f, err @@ -882,8 +884,11 @@ func QueueFilter(f systemType.QueueFilter) (ee []goqu.Expression, _ systemType.Q ee = append(ee, expr) } - if val := strings.TrimSpace(f.Queue); len(val) > 0 { - ee = append(ee, goqu.C("queue").Eq(f.Queue)) + if f.Query != "" { + ee = append(ee, goqu.Or( + goqu.C("queue").ILike("%"+f.Query+"%"), + goqu.C("consumer").ILike("%"+f.Query+"%"), + )) } return ee, f, err diff --git a/store/tests/apigw_route_test.go b/store/tests/apigw_route_test.go index 9a97ff492..4aac5b361 100644 --- a/store/tests/apigw_route_test.go +++ b/store/tests/apigw_route_test.go @@ -72,7 +72,7 @@ func testApigwRoutes(t *testing.T, s store.ApigwRoutes) { new, )) - set, _, err := s.SearchApigwRoutes(ctx, types.ApigwRouteFilter{}) + set, _, err := s.SearchApigwRoutes(ctx, types.ApigwRouteFilter{Query: "fo"}) req.NoError(err) req.Len(set, 1) }) diff --git a/store/tests/queue_test.go b/store/tests/queue_test.go index 34437bbc9..3ae29f544 100644 --- a/store/tests/queue_test.go +++ b/store/tests/queue_test.go @@ -58,8 +58,12 @@ func testQueues(t *testing.T, s store.Queues) { new, )) - set, _, err := s.SearchQueues(ctx, types.QueueFilter{}) + set, _, err := s.SearchQueues(ctx, types.QueueFilter{Query: "EST"}) req.NoError(err) req.Len(set, 1) + + set, _, err = s.SearchQueues(ctx, types.QueueFilter{Query: "foo"}) + req.NoError(err) + req.Len(set, 0) }) } diff --git a/system/apigw_route.cue b/system/apigw_route.cue index dc65c08d9..7b3e93497 100644 --- a/system/apigw_route.cue +++ b/system/apigw_route.cue @@ -28,12 +28,13 @@ apigw_route: schema.#Resource & { filter: { struct: { route: {} + query: {goType: "string"} deleted: {goType: "filter.State", storeIdent: "deleted_at"} disabled: {goType: "filter.State", storeIdent: "enabled"} } - byValue: ["route"] + query: ["endpoint"] byNilState: ["deleted"] byFalseState: ["disabled"] } diff --git a/system/queue.cue b/system/queue.cue index 48349adbb..d105ae25f 100644 --- a/system/queue.cue +++ b/system/queue.cue @@ -25,11 +25,11 @@ queue: schema.#Resource & { filter: { struct: { - queue: {goType: "string"} + query: {goType: "string"} deleted: {goType: "filter.State", storeIdent: "deleted_at"} } - byValue: ["queue"] + query: ["queue", "consumer"] byNilState: ["deleted"] } diff --git a/system/rest/apigw_route.go b/system/rest/apigw_route.go index 511480d46..98bd48b83 100644 --- a/system/rest/apigw_route.go +++ b/system/rest/apigw_route.go @@ -46,6 +46,7 @@ func (ctrl *ApigwRoute) List(ctx context.Context, r *request.ApigwRouteList) (in var ( err error f = types.ApigwRouteFilter{ + Query: r.Query, Deleted: filter.State(r.Deleted), // todo: this should dynamic as Delete diff --git a/system/rest/queues.go b/system/rest/queues.go index 216d1cf4c..223fdc2a8 100644 --- a/system/rest/queues.go +++ b/system/rest/queues.go @@ -46,6 +46,7 @@ func (ctrl *Queue) List(ctx context.Context, r *request.QueuesList) (interface{} var ( err error f = types.QueueFilter{ + Query: r.Query, Deleted: filter.State(r.Deleted), } ) diff --git a/system/service/queue.go b/system/service/queue.go index 19446cc41..eba22dc61 100644 --- a/system/service/queue.go +++ b/system/service/queue.go @@ -87,11 +87,10 @@ func (svc *queue) SearchQueues(ctx context.Context, ff mt.QueueFilter) (l []mt.Q func makeFilter(ff *mt.QueueFilter) (f *types.QueueFilter) { return &types.QueueFilter{ - Queue: ff.Queue, - Consumer: ff.Consumer, - Deleted: ff.Deleted, - Sorting: ff.Sorting, - Paging: ff.Paging, + Query: ff.Query, + Deleted: ff.Deleted, + Sorting: ff.Sorting, + Paging: ff.Paging, } } diff --git a/system/types/apigw_route.go b/system/types/apigw_route.go index 39c9ee9a0..19abf0381 100644 --- a/system/types/apigw_route.go +++ b/system/types/apigw_route.go @@ -33,6 +33,7 @@ type ( ApigwRouteFilter struct { Route string `json:"route"` + Query string `json:"query"` Deleted filter.State `json:"deleted"` Disabled filter.State `json:"disabled"` diff --git a/system/types/queue.go b/system/types/queue.go index c0294eccc..41d3f0820 100644 --- a/system/types/queue.go +++ b/system/types/queue.go @@ -27,9 +27,7 @@ type ( } QueueFilter struct { - Queue string `json:"queue"` - Consumer string `json:"handler"` - + Query string `json:"query"` Deleted filter.State `json:"deleted"` // Check fn is called by store backend for each resource found function can