1 /*
2  *  Make.org Core API
3  *  Copyright (C) 2020 Make.org
4  *
5  * This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU Affero General Public License as
7  *  published by the Free Software Foundation, either version 3 of the
8  *  License, or (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Affero General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Affero General Public License
16  *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
17  *
18  */
19 
20 package org.make.core.operation
21 
22 import com.sksamuel.elastic4s.requests.searches.SearchRequest
23 import com.sksamuel.elastic4s.requests.searches.sort.{FieldSort, SortOrder}
24 import enumeratum.{Enum, EnumEntry}
25 import org.make.core.operation.indexed.OperationOfQuestionElasticsearchFieldName._
26 
27 sealed abstract class SortAlgorithm(priority: FieldSort*) extends EnumEntry {
28 
29   private val sort = priority ++ Seq(
30     FieldSort(field = endDate.field, order = SortOrder.DESC),
31     FieldSort(field = slug.field, order = SortOrder.ASC)
32   )
33 
34   def sortDefinition(request: SearchRequest): SearchRequest = request.sortBy(sort)
35 
36 }
37 
38 object SortAlgorithm extends Enum[SortAlgorithm] {
39 
40   case object Chronological extends SortAlgorithm
41   case object Featured extends SortAlgorithm(FieldSort(field = featured.field, order = SortOrder.DESC))
42 
43   override val values: IndexedSeq[SortAlgorithm] = findValues
44   final val swaggerAllowableValues = "Chronological,Featured"
45 }
Line Stmt Id Pos Tree Symbol Tests Code
29 2744 1136 - 1275 Apply scala.collection.IterableOps.++ org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest SortAlgorithm.this.priority.++[com.sksamuel.elastic4s.requests.searches.sort.FieldSort](scala.`package`.Seq.apply[com.sksamuel.elastic4s.requests.searches.sort.FieldSort]({ <artifact> val x$1: String = org.make.core.operation.indexed.OperationOfQuestionElasticsearchFieldName.endDate.field; <artifact> val x$2: com.sksamuel.elastic4s.requests.searches.sort.SortOrder = com.sksamuel.elastic4s.requests.searches.sort.SortOrder.DESC; <artifact> val x$3: Option[Any] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$2; <artifact> val x$4: Option[String] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$3; <artifact> val x$5: Option[com.sksamuel.elastic4s.requests.searches.queries.Query] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$4; <artifact> val x$6: Option[String] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$5; <artifact> val x$7: Option[com.sksamuel.elastic4s.requests.searches.sort.SortMode] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$6; <artifact> val x$8: Option[String] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$8; <artifact> val x$9: Option[com.sksamuel.elastic4s.requests.searches.sort.NestedSort] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$9; com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply(x$1, x$3, x$4, x$5, x$6, x$7, x$2, x$8, x$9) }, { <artifact> val x$10: String = org.make.core.operation.indexed.OperationOfQuestionElasticsearchFieldName.slug.field; <artifact> val x$11: com.sksamuel.elastic4s.requests.searches.sort.SortOrder = com.sksamuel.elastic4s.requests.searches.sort.SortOrder.ASC; <artifact> val x$12: Option[Any] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$2; <artifact> val x$13: Option[String] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$3; <artifact> val x$14: Option[com.sksamuel.elastic4s.requests.searches.queries.Query] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$4; <artifact> val x$15: Option[String] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$5; <artifact> val x$16: Option[com.sksamuel.elastic4s.requests.searches.sort.SortMode] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$6; <artifact> val x$17: Option[String] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$8; <artifact> val x$18: Option[com.sksamuel.elastic4s.requests.searches.sort.NestedSort] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$9; com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply(x$10, x$12, x$13, x$14, x$15, x$16, x$11, x$17, x$18) }))
29 4821 1148 - 1275 Apply scala.collection.SeqFactory.Delegate.apply org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest scala.`package`.Seq.apply[com.sksamuel.elastic4s.requests.searches.sort.FieldSort]({ <artifact> val x$1: String = org.make.core.operation.indexed.OperationOfQuestionElasticsearchFieldName.endDate.field; <artifact> val x$2: com.sksamuel.elastic4s.requests.searches.sort.SortOrder = com.sksamuel.elastic4s.requests.searches.sort.SortOrder.DESC; <artifact> val x$3: Option[Any] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$2; <artifact> val x$4: Option[String] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$3; <artifact> val x$5: Option[com.sksamuel.elastic4s.requests.searches.queries.Query] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$4; <artifact> val x$6: Option[String] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$5; <artifact> val x$7: Option[com.sksamuel.elastic4s.requests.searches.sort.SortMode] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$6; <artifact> val x$8: Option[String] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$8; <artifact> val x$9: Option[com.sksamuel.elastic4s.requests.searches.sort.NestedSort] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$9; com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply(x$1, x$3, x$4, x$5, x$6, x$7, x$2, x$8, x$9) }, { <artifact> val x$10: String = org.make.core.operation.indexed.OperationOfQuestionElasticsearchFieldName.slug.field; <artifact> val x$11: com.sksamuel.elastic4s.requests.searches.sort.SortOrder = com.sksamuel.elastic4s.requests.searches.sort.SortOrder.ASC; <artifact> val x$12: Option[Any] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$2; <artifact> val x$13: Option[String] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$3; <artifact> val x$14: Option[com.sksamuel.elastic4s.requests.searches.queries.Query] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$4; <artifact> val x$15: Option[String] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$5; <artifact> val x$16: Option[com.sksamuel.elastic4s.requests.searches.sort.SortMode] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$6; <artifact> val x$17: Option[String] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$8; <artifact> val x$18: Option[com.sksamuel.elastic4s.requests.searches.sort.NestedSort] @scala.reflect.internal.annotations.uncheckedBounds = com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$9; com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply(x$10, x$12, x$13, x$14, x$15, x$16, x$11, x$17, x$18) })
30 2802 1157 - 1157 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$3 org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$3
30 2389 1175 - 1188 Select org.make.core.operation.indexed.OperationOfQuestionElasticsearchFieldName.Simple.field org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest org.make.core.operation.indexed.OperationOfQuestionElasticsearchFieldName.endDate.field
30 1013 1157 - 1157 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$4 org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$4
30 1084 1157 - 1157 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$8 org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$8
30 3198 1157 - 1157 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$6 org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$6
30 4457 1157 - 1157 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$9 org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$9
30 4038 1157 - 1157 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$5 org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$5
30 533 1198 - 1212 Select com.sksamuel.elastic4s.requests.searches.sort.SortOrder.DESC org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.SortOrder.DESC
30 2650 1157 - 1213 Apply com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply(x$1, x$3, x$4, x$5, x$6, x$7, x$2, x$8, x$9)
30 4710 1157 - 1157 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$2 org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$2
31 406 1237 - 1247 Select org.make.core.operation.indexed.OperationOfQuestionElasticsearchFieldName.Simple.field org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest org.make.core.operation.indexed.OperationOfQuestionElasticsearchFieldName.slug.field
31 1091 1219 - 1219 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$6 org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$6
31 4715 1257 - 1270 Select com.sksamuel.elastic4s.requests.searches.sort.SortOrder.ASC org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.SortOrder.ASC
31 4592 1219 - 1219 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$8 org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$8
31 2660 1219 - 1219 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$9 org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$9
31 411 1219 - 1271 Apply com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply(x$10, x$12, x$13, x$14, x$15, x$16, x$11, x$17, x$18)
31 2253 1219 - 1219 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$5 org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$5
31 4298 1219 - 1219 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$4 org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$4
31 1017 1219 - 1219 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$3 org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$3
31 2736 1219 - 1219 Select com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$2 org.scalatest.testsuite,org.make.api.views.homeviewservicecomponenttest,org.make.api.question.questionapitest com.sksamuel.elastic4s.requests.searches.sort.FieldSort.apply$default$2
34 4309 1339 - 1359 Apply com.sksamuel.elastic4s.requests.searches.SearchRequest.sortBy org.scalatest.testsuite request.sortBy(SortAlgorithm.this.sort)
34 959 1354 - 1358 Select org.make.core.operation.SortAlgorithm.sort org.scalatest.testsuite SortAlgorithm.this.sort
44 2263 1670 - 1694 Literal <nosymbol> "Chronological,Featured"