1 /*
2  *  Make.org Core API
3  *  Copyright (C) 2018 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
21 package common.indexed
22 
23 import com.sksamuel.elastic4s.requests.searches.sort.SortOrder
24 import org.make.core.SprayJsonFormatters._
25 import spray.json.DefaultJsonProtocol._
26 import spray.json.{DefaultJsonProtocol, RootJsonFormat}
27 
28 final case class Sort(field: Option[String], mode: Option[SortOrder])
29 
30 object Sort {
31 
32   def parse(sort: Option[String], order: Option[Order]): Option[Sort] = (sort, order) match {
33     case (None, None) => None
34     case _            => Some(Sort(sort, order.map(_.sortOrder)))
35   }
36 
37   implicit val sortFormatted: RootJsonFormat[Sort] =
38     DefaultJsonProtocol.jsonFormat2(Sort.apply)
39 }
Line Stmt Id Pos Tree Symbol Tests Code
33 1047 1199 - 1203 Select scala.None scala.None
34 4212 1255 - 1266 Select org.make.core.Order.sortOrder x$1.sortOrder
34 5477 1234 - 1268 Apply org.make.core.common.indexed.Sort.apply Sort.apply(sort, order.map[com.sksamuel.elastic4s.requests.searches.sort.SortOrder](((x$1: org.make.core.Order) => x$1.sortOrder)))
34 2094 1245 - 1267 Apply scala.Option.map order.map[com.sksamuel.elastic4s.requests.searches.sort.SortOrder](((x$1: org.make.core.Order) => x$1.sortOrder))
34 4609 1229 - 1269 Apply scala.Some.apply scala.Some.apply[org.make.core.common.indexed.Sort](Sort.apply(sort, order.map[com.sksamuel.elastic4s.requests.searches.sort.SortOrder](((x$1: org.make.core.Order) => x$1.sortOrder))))
38 4345 1332 - 1375 ApplyToImplicitArgs spray.json.ProductFormatsInstances.jsonFormat2 spray.json.DefaultJsonProtocol.jsonFormat2[Option[String], Option[com.sksamuel.elastic4s.requests.searches.sort.SortOrder], org.make.core.common.indexed.Sort](((field: Option[String], mode: Option[com.sksamuel.elastic4s.requests.searches.sort.SortOrder]) => Sort.apply(field, mode)))(spray.json.DefaultJsonProtocol.optionFormat[String](spray.json.DefaultJsonProtocol.StringJsonFormat), spray.json.DefaultJsonProtocol.optionFormat[com.sksamuel.elastic4s.requests.searches.sort.SortOrder](org.make.core.SprayJsonFormatters.sortOrderFormatted), (ClassTag.apply[org.make.core.common.indexed.Sort](classOf[org.make.core.common.indexed.Sort]): scala.reflect.ClassTag[org.make.core.common.indexed.Sort]))
38 2697 1364 - 1374 Apply org.make.core.common.indexed.Sort.apply Sort.apply(field, mode)
38 3752 1363 - 1363 ApplyToImplicitArgs spray.json.StandardFormats.optionFormat spray.json.DefaultJsonProtocol.optionFormat[String](spray.json.DefaultJsonProtocol.StringJsonFormat)
38 447 1363 - 1363 Select spray.json.BasicFormats.StringJsonFormat spray.json.DefaultJsonProtocol.StringJsonFormat
38 1881 1363 - 1363 Select org.make.core.SprayJsonFormatters.sortOrderFormatted org.make.core.SprayJsonFormatters.sortOrderFormatted
38 984 1363 - 1363 ApplyToImplicitArgs spray.json.StandardFormats.optionFormat spray.json.DefaultJsonProtocol.optionFormat[com.sksamuel.elastic4s.requests.searches.sort.SortOrder](org.make.core.SprayJsonFormatters.sortOrderFormatted)