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")) } }