From 085f76074ab62df4e271cbc239f27b9654b5bfdd Mon Sep 17 00:00:00 2001 From: Gunnar Velle Date: Wed, 25 Feb 2026 13:59:26 +0100 Subject: [PATCH] Add sorts on width and height --- .../no/ndla/imageapi/model/domain/Sort.scala | 4 ++++ .../service/search/ImageSearchService.scala | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/image-api/src/main/scala/no/ndla/imageapi/model/domain/Sort.scala b/image-api/src/main/scala/no/ndla/imageapi/model/domain/Sort.scala index 5e06e12578..1fba6a7aa7 100644 --- a/image-api/src/main/scala/no/ndla/imageapi/model/domain/Sort.scala +++ b/image-api/src/main/scala/no/ndla/imageapi/model/domain/Sort.scala @@ -29,6 +29,10 @@ object Sort extends Enum[Sort] with CirceEnum[Sort] { case object ByLastUpdatedAsc extends Sort("lastUpdated") case object ByIdDesc extends Sort("-id") case object ByIdAsc extends Sort("id") + case object ByWidthDesc extends Sort("-width") + case object ByWidthAsc extends Sort("width") + case object ByHeightDesc extends Sort("-height") + case object ByHeightAsc extends Sort("height") def valueOf(s: String): Option[Sort] = Sort.values.find(_.entryName == s) diff --git a/image-api/src/main/scala/no/ndla/imageapi/service/search/ImageSearchService.scala b/image-api/src/main/scala/no/ndla/imageapi/service/search/ImageSearchService.scala index 9958e34ca2..0819df872f 100644 --- a/image-api/src/main/scala/no/ndla/imageapi/service/search/ImageSearchService.scala +++ b/image-api/src/main/scala/no/ndla/imageapi/service/search/ImageSearchService.scala @@ -67,6 +67,22 @@ class ImageSearchService(using case Sort.ByLastUpdatedDesc => fieldSort("lastUpdated").sortOrder(SortOrder.Desc).missing("_last") case Sort.ByIdAsc => fieldSort("id").sortOrder(SortOrder.Asc).missing("_last") case Sort.ByIdDesc => fieldSort("id").sortOrder(SortOrder.Desc).missing("_last") + case Sort.ByWidthAsc => fieldSort("imageFiles.dimensions.width") + .sortOrder(SortOrder.Asc) + .missing("_last") + .nested(nestedSort().path("imageFiles")) + case Sort.ByWidthDesc => fieldSort("imageFiles.dimensions.width") + .sortOrder(SortOrder.Desc) + .missing("_last") + .nested(nestedSort().path("imageFiles")) + case Sort.ByHeightAsc => fieldSort("imageFiles.dimensions.height") + .sortOrder(SortOrder.Asc) + .missing("_last") + .nested(nestedSort().path("imageFiles")) + case Sort.ByHeightDesc => fieldSort("imageFiles.dimensions.height") + .sortOrder(SortOrder.Desc) + .missing("_last") + .nested(nestedSort().path("imageFiles")) } }