@@ -12,18 +12,35 @@ import (
12
12
13
13
var SortFilterImageVulnerabilities = sortfilter .New [* ImageVulnerability , ImageVulnerabilityOrderField , struct {}]()
14
14
15
+ type (
16
+ SortFilterImageVulnerabilitiesTieBreaker = sortfilter.TieBreaker [ImageVulnerabilityOrderField ]
17
+ )
18
+
15
19
func init () {
16
20
workloadInit ()
17
21
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
+
18
35
SortFilterImageVulnerabilities .RegisterSort ("IDENTIFIER" , func (ctx context.Context , a , b * ImageVulnerability ) int {
19
36
return strings .Compare (a .Identifier , b .Identifier )
20
- })
37
+ }, severityTieBreaker , packageTieBreaker )
21
38
SortFilterImageVulnerabilities .RegisterSort ("PACKAGE" , func (ctx context.Context , a , b * ImageVulnerability ) int {
22
39
return strings .Compare (a .Package , b .Package )
23
- })
40
+ }, severityTieBreaker , identifierTieBreaker )
24
41
SortFilterImageVulnerabilities .RegisterSort ("STATE" , func (ctx context.Context , a , b * ImageVulnerability ) int {
25
42
return strings .Compare (a .State .String (), b .State .String ())
26
- })
43
+ }, severityTieBreaker , identifierTieBreaker , packageTieBreaker )
27
44
SortFilterImageVulnerabilities .RegisterConcurrentSort ("SUPPRESSED" , func (ctx context.Context , a * ImageVulnerability ) int {
28
45
vuln , err := GetImageAnalysisTrail (ctx , a )
29
46
if err != nil {
@@ -35,7 +52,7 @@ func init() {
35
52
}
36
53
37
54
return 0
38
- })
55
+ }, severityTieBreaker , identifierTieBreaker , packageTieBreaker )
39
56
SortFilterImageVulnerabilities .RegisterSort ("SEVERITY" , func (ctx context.Context , a , b * ImageVulnerability ) int {
40
57
severityToScore := map [ImageVulnerabilitySeverity ]int {
41
58
ImageVulnerabilitySeverityCritical : 5 ,
@@ -46,7 +63,7 @@ func init() {
46
63
}
47
64
48
65
return severityToScore [a .Severity ] - severityToScore [b .Severity ]
49
- })
66
+ }, identifierTieBreaker , packageTieBreaker )
50
67
}
51
68
52
69
func workloadInit () {
0 commit comments