github.com/weaviate/weaviate@v1.24.6/adapters/repos/db/sortby_id.go (about) 1 // _ _ 2 // __ _____ __ ___ ___ __ _| |_ ___ 3 // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ 4 // \ V V / __/ (_| |\ V /| | (_| | || __/ 5 // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| 6 // 7 // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. 8 // 9 // CONTACT: hello@weaviate.io 10 // 11 12 package db 13 14 import ( 15 "sort" 16 17 "github.com/weaviate/weaviate/entities/storobj" 18 ) 19 20 type sortByID struct { 21 objects []*storobj.Object 22 scores []float32 23 } 24 25 func (s *sortByID) Swap(i, j int) { 26 if len(s.objects) == len(s.scores) { 27 s.scores[i], s.scores[j] = s.scores[j], s.scores[i] 28 } 29 s.objects[i], s.objects[j] = s.objects[j], s.objects[i] 30 } 31 32 func (s *sortByID) Less(i, j int) bool { 33 return s.objects[i].ID() < s.objects[j].ID() 34 } 35 36 func (s *sortByID) Len() int { 37 return len(s.objects) 38 } 39 40 type sortObjectsByID struct{} 41 42 func newIDSorter() *sortObjectsByID { 43 return &sortObjectsByID{} 44 } 45 46 func (s *sortObjectsByID) sort(objects []*storobj.Object, scores []float32, 47 ) ([]*storobj.Object, []float32) { 48 sbd := &sortByID{objects, scores} 49 sort.Sort(sbd) 50 return sbd.objects, sbd.scores 51 }