Skip to content

Commit 54a007d

Browse files
Add more tie-breakers, more to come...
1 parent 69573ca commit 54a007d

File tree

2 files changed

+34
-5
lines changed

2 files changed

+34
-5
lines changed

internal/persistence/bigquery/sortfilter.go

+12
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,32 @@ import (
44
"context"
55
"strings"
66

7+
"github.com/nais/api/internal/graph/model"
78
"github.com/nais/api/internal/graph/sortfilter"
9+
"k8s.io/utils/ptr"
810
)
911

1012
var (
1113
SortFilter = sortfilter.New[*BigQueryDataset, BigQueryDatasetOrderField, struct{}]()
1214
SortFilterAccess = sortfilter.New[*BigQueryDatasetAccess, BigQueryDatasetAccessOrderField, struct{}]()
1315
)
1416

17+
type (
18+
SortFilterTieBreaker = sortfilter.TieBreaker[BigQueryDatasetOrderField]
19+
)
20+
1521
func init() {
1622
SortFilter.RegisterSort("NAME", func(ctx context.Context, a, b *BigQueryDataset) int {
1723
return strings.Compare(a.GetName(), b.GetName())
24+
}, SortFilterTieBreaker{
25+
Field: "ENVIRONMENT",
26+
Direction: ptr.To(model.OrderDirectionAsc),
1827
})
1928
SortFilter.RegisterSort("ENVIRONMENT", func(ctx context.Context, a, b *BigQueryDataset) int {
2029
return strings.Compare(a.EnvironmentName, b.EnvironmentName)
30+
}, SortFilterTieBreaker{
31+
Field: "NAME",
32+
Direction: ptr.To(model.OrderDirectionAsc),
2133
})
2234

2335
SortFilterAccess.RegisterSort("EMAIL", func(ctx context.Context, a, b *BigQueryDatasetAccess) int {

internal/vulnerability/sortfilter.go

+22-5
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,35 @@ import (
1212

1313
var SortFilterImageVulnerabilities = sortfilter.New[*ImageVulnerability, ImageVulnerabilityOrderField, struct{}]()
1414

15+
type (
16+
SortFilterImageVulnerabilitiesTieBreaker = sortfilter.TieBreaker[ImageVulnerabilityOrderField]
17+
)
18+
1519
func init() {
1620
workloadInit()
1721

22+
identifierTieBreaker := SortFilterImageVulnerabilitiesTieBreaker{
23+
Field: "IDENTIFIER",
24+
Direction: ptr.To(model.OrderDirectionAsc),
25+
}
26+
packageTieBreaker := SortFilterImageVulnerabilitiesTieBreaker{
27+
Field: "PACKAGE",
28+
Direction: ptr.To(model.OrderDirectionAsc),
29+
}
30+
severityTieBreaker := SortFilterImageVulnerabilitiesTieBreaker{
31+
Field: "SEVERITY",
32+
Direction: ptr.To(model.OrderDirectionDesc),
33+
}
34+
1835
SortFilterImageVulnerabilities.RegisterSort("IDENTIFIER", func(ctx context.Context, a, b *ImageVulnerability) int {
1936
return strings.Compare(a.Identifier, b.Identifier)
20-
})
37+
}, severityTieBreaker, packageTieBreaker)
2138
SortFilterImageVulnerabilities.RegisterSort("PACKAGE", func(ctx context.Context, a, b *ImageVulnerability) int {
2239
return strings.Compare(a.Package, b.Package)
23-
})
40+
}, severityTieBreaker, identifierTieBreaker)
2441
SortFilterImageVulnerabilities.RegisterSort("STATE", func(ctx context.Context, a, b *ImageVulnerability) int {
2542
return strings.Compare(a.State.String(), b.State.String())
26-
})
43+
}, severityTieBreaker, identifierTieBreaker, packageTieBreaker)
2744
SortFilterImageVulnerabilities.RegisterConcurrentSort("SUPPRESSED", func(ctx context.Context, a *ImageVulnerability) int {
2845
vuln, err := GetImageAnalysisTrail(ctx, a)
2946
if err != nil {
@@ -35,7 +52,7 @@ func init() {
3552
}
3653

3754
return 0
38-
})
55+
}, severityTieBreaker, identifierTieBreaker, packageTieBreaker)
3956
SortFilterImageVulnerabilities.RegisterSort("SEVERITY", func(ctx context.Context, a, b *ImageVulnerability) int {
4057
severityToScore := map[ImageVulnerabilitySeverity]int{
4158
ImageVulnerabilitySeverityCritical: 5,
@@ -46,7 +63,7 @@ func init() {
4663
}
4764

4865
return severityToScore[a.Severity] - severityToScore[b.Severity]
49-
})
66+
}, identifierTieBreaker, packageTieBreaker)
5067
}
5168

5269
func workloadInit() {

0 commit comments

Comments
 (0)