aboutsummaryrefslogtreecommitdiff
path: root/connections_controller.go
diff options
context:
space:
mode:
authorEmiliano Ciavatta2020-08-09 09:22:47 +0000
committerEmiliano Ciavatta2020-08-09 09:22:47 +0000
commit9dae0115592424929ffe4045069740365bc91d52 (patch)
tree98bfc74f13964102d98c2cbb20c48870e1211c55 /connections_controller.go
parentc17bbff1bb9cca355be1548448452f582e2d7db6 (diff)
Update frontend filters
Diffstat (limited to 'connections_controller.go')
-rw-r--r--connections_controller.go13
1 files changed, 11 insertions, 2 deletions
diff --git a/connections_controller.go b/connections_controller.go
index 7da464d..2773506 100644
--- a/connections_controller.go
+++ b/connections_controller.go
@@ -46,7 +46,7 @@ type ConnectionsFilter struct {
ClosedBefore int64 `form:"closed_before" binding:"omitempty,gtefield=ClosedAfter"`
Hidden bool `form:"hidden"`
Marked bool `form:"marked"`
- MatchedRules []RowID `form:"matched_rules"`
+ MatchedRules []string `form:"matched_rules" binding:"dive,hexadecimal,len=24"`
Limit int64 `form:"limit"`
}
@@ -114,7 +114,16 @@ func (cc ConnectionsController) GetConnections(c context.Context, filter Connect
query = query.Filter(OrderedDocument{{"marked", true}})
}
if filter.MatchedRules != nil && len(filter.MatchedRules) > 0 {
- query = query.Filter(OrderedDocument{{"matched_rules", UnorderedDocument{"$all": filter.MatchedRules}}})
+ matchedRules := make([]RowID, len(filter.MatchedRules))
+ for i, elem := range filter.MatchedRules {
+ if id, err := RowIDFromHex(elem); err != nil {
+ log.WithError(err).WithField("filter", filter).Panic("failed to convert matched_rules ids")
+ } else {
+ matchedRules[i] = id
+ }
+ }
+
+ query = query.Filter(OrderedDocument{{"matched_rules", UnorderedDocument{"$all": matchedRules}}})
}
if filter.Limit > 0 && filter.Limit <= MaxQueryLimit {
query = query.Limit(filter.Limit)