diff options
author | Emiliano Ciavatta | 2020-08-09 09:22:47 +0000 |
---|---|---|
committer | Emiliano Ciavatta | 2020-08-09 09:22:47 +0000 |
commit | 9dae0115592424929ffe4045069740365bc91d52 (patch) | |
tree | 98bfc74f13964102d98c2cbb20c48870e1211c55 /connections_controller.go | |
parent | c17bbff1bb9cca355be1548448452f582e2d7db6 (diff) |
Update frontend filters
Diffstat (limited to 'connections_controller.go')
-rw-r--r-- | connections_controller.go | 13 |
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) |