feat: update ordering

This commit is contained in:
dscyrescotti
2024-06-16 15:52:32 +07:00
parent 0044fd34a3
commit daef1670bc
2 changed files with 18 additions and 1 deletions

View File

@@ -40,4 +40,17 @@ enum Element: Equatable, Comparable {
photo.createdAt
}
}
static func < (lhs: Element, rhs: Element) -> Bool {
switch (lhs, rhs) {
case let (.stroke(leftStroke), .stroke(rightStroke)):
leftStroke < rightStroke
case let (.photo(leftPhoto), .photo(rightPhoto)):
leftPhoto < rightPhoto
case let (.photo(photo), .stroke(stroke)):
photo.createdAt < stroke.value.createdAt
case let (.stroke(stroke), .photo(photo)):
stroke.value.createdAt < photo.createdAt
}
}
}

View File

@@ -38,7 +38,11 @@ class RTree<T> where T: Equatable & Comparable {
.sorted(by: <)
result = _merge(result, children)
} else {
queue.append(contentsOf: node.children)
let nodes = node.children.sorted {
guard let first = $0.value, let second = $1.value else { return false }
return first < second
}
queue.append(contentsOf: nodes)
}
}
return result