Skip to content

Commit 0b46401

Browse files
committedMar 5, 2025··
Add some tie-breakers
1 parent 5e2e2cd commit 0b46401

File tree

4 files changed

+47
-2
lines changed

4 files changed

+47
-2
lines changed
 

‎internal/persistence/sqlinstance/sortfilter.go

+16
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,30 @@ import (
55
"strings"
66

77
"github.com/nais/api/internal/cost"
8+
"github.com/nais/api/internal/graph/model"
89
"github.com/nais/api/internal/graph/sortfilter"
10+
"k8s.io/utils/ptr"
911
)
1012

1113
var (
1214
SortFilterSQLInstance = sortfilter.New[*SQLInstance, SQLInstanceOrderField, struct{}]()
1315
SortFilterSQLInstanceUser = sortfilter.New[*SQLInstanceUser, SQLInstanceUserOrderField, struct{}]()
1416
)
1517

18+
type SortFilterTieBreaker = sortfilter.TieBreaker[SQLInstanceOrderField]
19+
1620
func init() {
1721
SortFilterSQLInstance.RegisterSort("NAME", func(ctx context.Context, a, b *SQLInstance) int {
1822
return strings.Compare(a.GetName(), b.GetName())
23+
}, SortFilterTieBreaker{
24+
Field: "ENVIRONMENT",
25+
Direction: ptr.To(model.OrderDirectionAsc),
1926
})
2027
SortFilterSQLInstance.RegisterSort("ENVIRONMENT", func(ctx context.Context, a, b *SQLInstance) int {
2128
return strings.Compare(a.EnvironmentName, b.EnvironmentName)
29+
}, SortFilterTieBreaker{
30+
Field: "NAME",
31+
Direction: ptr.To(model.OrderDirectionAsc),
2232
})
2333
SortFilterSQLInstance.RegisterSort("VERSION", func(ctx context.Context, a, b *SQLInstance) int {
2434
if a.Version == nil && b.Version == nil {
@@ -29,6 +39,12 @@ func init() {
2939
return -1
3040
}
3141
return strings.Compare(*a.Version, *b.Version)
42+
}, SortFilterTieBreaker{
43+
Field: "NAME",
44+
Direction: ptr.To(model.OrderDirectionAsc),
45+
}, SortFilterTieBreaker{
46+
Field: "ENVIRONMENT",
47+
Direction: ptr.To(model.OrderDirectionAsc),
3248
})
3349
SortFilterSQLInstance.RegisterConcurrentSort("STATUS", func(ctx context.Context, a *SQLInstance) int {
3450
stateOrder := map[string]int{

‎internal/workload/application/sortfilter.go

+10
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,27 @@ import (
55
"slices"
66
"strings"
77

8+
"github.com/nais/api/internal/graph/model"
89
"github.com/nais/api/internal/graph/sortfilter"
10+
"k8s.io/utils/ptr"
911
)
1012

1113
var SortFilter = sortfilter.New[*Application, ApplicationOrderField, *TeamApplicationsFilter]()
1214

15+
type SortFilterTieBreaker = sortfilter.TieBreaker[ApplicationOrderField]
16+
1317
func init() {
1418
SortFilter.RegisterSort("NAME", func(ctx context.Context, a, b *Application) int {
1519
return strings.Compare(a.GetName(), b.GetName())
20+
}, SortFilterTieBreaker{
21+
Field: "ENVIRONMENT",
22+
Direction: ptr.To(model.OrderDirectionAsc),
1623
})
1724
SortFilter.RegisterSort("ENVIRONMENT", func(ctx context.Context, a, b *Application) int {
1825
return strings.Compare(a.GetEnvironmentName(), b.GetEnvironmentName())
26+
}, SortFilterTieBreaker{
27+
Field: "NAME",
28+
Direction: ptr.To(model.OrderDirectionAsc),
1929
})
2030

2131
SortFilter.RegisterFilter(func(ctx context.Context, v *Application, filter *TeamApplicationsFilter) bool {

‎internal/workload/job/sortfilter.go

+11
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,29 @@ import (
55
"slices"
66
"strings"
77

8+
"github.com/nais/api/internal/graph/model"
89
"github.com/nais/api/internal/graph/sortfilter"
10+
"k8s.io/utils/ptr"
911
)
1012

1113
var SortFilter = sortfilter.New[*Job, JobOrderField, *TeamJobsFilter]()
1214

15+
type SortFilterTieBreaker = sortfilter.TieBreaker[JobOrderField]
16+
1317
func init() {
1418
SortFilter.RegisterSort("NAME", func(ctx context.Context, a, b *Job) int {
1519
return strings.Compare(a.GetName(), b.GetName())
20+
}, SortFilterTieBreaker{
21+
Field: "ENVIRONMENT",
22+
Direction: ptr.To(model.OrderDirectionAsc),
1623
})
1724
SortFilter.RegisterSort("ENVIRONMENT", func(ctx context.Context, a, b *Job) int {
1825
return strings.Compare(a.GetEnvironmentName(), b.GetEnvironmentName())
26+
}, SortFilterTieBreaker{
27+
Field: "NAME",
28+
Direction: ptr.To(model.OrderDirectionAsc),
1929
})
30+
2031
SortFilter.RegisterFilter(func(ctx context.Context, v *Job, filter *TeamJobsFilter) bool {
2132
if filter.Name != "" {
2233
if !strings.Contains(strings.ToLower(v.Name), strings.ToLower(filter.Name)) {

‎internal/workload/sortfilter.go

+10-2
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,23 @@ var (
1515
SortFilterEnvironment = sortfilter.New[Workload, EnvironmentWorkloadOrderField, struct{}]()
1616
)
1717

18-
type SortFilterEnvironmentTieBreaker = sortfilter.TieBreaker[EnvironmentWorkloadOrderField]
18+
type (
19+
SortFilterTieBreaker = sortfilter.TieBreaker[WorkloadOrderField]
20+
SortFilterEnvironmentTieBreaker = sortfilter.TieBreaker[EnvironmentWorkloadOrderField]
21+
)
1922

2023
func init() {
2124
SortFilter.RegisterSort("NAME", func(ctx context.Context, a, b Workload) int {
2225
return strings.Compare(a.GetName(), b.GetName())
26+
}, SortFilterTieBreaker{
27+
Field: "ENVIRONMENT",
28+
Direction: ptr.To(model.OrderDirectionAsc),
2329
})
2430
SortFilter.RegisterSort("ENVIRONMENT", func(ctx context.Context, a, b Workload) int {
2531
return strings.Compare(a.GetEnvironmentName(), b.GetEnvironmentName())
32+
}, SortFilterTieBreaker{
33+
Field: "NAME",
34+
Direction: ptr.To(model.OrderDirectionAsc),
2635
})
2736

2837
SortFilter.RegisterFilter(func(ctx context.Context, v Workload, filter *TeamWorkloadsFilter) bool {
@@ -41,7 +50,6 @@ func init() {
4150
func(ctx context.Context, a, b Workload) int {
4251
return strings.Compare(a.GetName(), b.GetName())
4352
},
44-
// Sort by team when we have workloads with the same name
4553
SortFilterEnvironmentTieBreaker{
4654
Field: "TEAM_SLUG",
4755
Direction: ptr.To(model.OrderDirectionAsc),

0 commit comments

Comments
 (0)
Please sign in to comment.