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.api.technical.graphql
21 
22 import caliban.Value
23 import caliban.schema._
24 import caliban.CalibanError.ExecutionError
25 import org.make.core.technical.Pagination
26 import io.circe.Json
27 
28 object GraphQLArgBuilders {
29 
30   implicit val limitArgBuilder: ArgBuilder[Pagination.Limit] = {
31     case Value.StringValue(value) =>
32       Pagination.limitDecoder
33         .decodeJson(Json.fromString(value))
34         .fold(ex => Left(ExecutionError(s"Can't parse $value into a Limit")), Right(_))
35     case other => Left(ExecutionError(s"Can't build a Limit from input $other"))
36   }
37 
38   implicit val offsetArgBuilder: ArgBuilder[Pagination.Offset] = {
39     case Value.StringValue(value) =>
40       Pagination.offsetDecoder
41         .decodeJson(Json.fromString(value))
42         .fold(ex => Left(ExecutionError(s"Can't parse $value into an Offset")), Right(_))
43     case other => Left(ExecutionError(s"Can't build an Offset from input $other"))
44   }
45 }
Line Stmt Id Pos Tree Symbol Tests Code
33 50040 1118 - 1140 Apply io.circe.Json.fromString io.circe.Json.fromString(value)
34 39852 1220 - 1228 Apply scala.util.Right.apply scala.`package`.Right.apply[Nothing, org.make.core.technical.Pagination.Limit](x$1)
34 41449 1167 - 1167 Select caliban.CalibanError.ExecutionError.apply$default$2 caliban.CalibanError.ExecutionError.apply$default$2
34 32713 1074 - 1229 Apply scala.util.Either.fold org.make.core.technical.Pagination.limitDecoder.decodeJson(io.circe.Json.fromString(value)).fold[scala.util.Either[caliban.CalibanError.ExecutionError,org.make.core.technical.Pagination.Limit]](((ex: io.circe.DecodingFailure) => scala.`package`.Left.apply[caliban.CalibanError.ExecutionError, Nothing](caliban.CalibanError.ExecutionError.apply(("Can\'t parse ".+(value).+(" into a Limit"): String), caliban.CalibanError.ExecutionError.apply$default$2, caliban.CalibanError.ExecutionError.apply$default$3, caliban.CalibanError.ExecutionError.apply$default$4, caliban.CalibanError.ExecutionError.apply$default$5))), ((x$1: org.make.core.technical.Pagination.Limit) => scala.`package`.Right.apply[Nothing, org.make.core.technical.Pagination.Limit](x$1)))
34 33299 1167 - 1167 Select caliban.CalibanError.ExecutionError.apply$default$3 caliban.CalibanError.ExecutionError.apply$default$3
34 35655 1167 - 1217 Apply caliban.CalibanError.ExecutionError.apply caliban.CalibanError.ExecutionError.apply(("Can\'t parse ".+(value).+(" into a Limit"): String), caliban.CalibanError.ExecutionError.apply$default$2, caliban.CalibanError.ExecutionError.apply$default$3, caliban.CalibanError.ExecutionError.apply$default$4, caliban.CalibanError.ExecutionError.apply$default$5)
34 46355 1167 - 1167 Select caliban.CalibanError.ExecutionError.apply$default$4 caliban.CalibanError.ExecutionError.apply$default$4
34 48753 1162 - 1218 Apply scala.util.Left.apply scala.`package`.Left.apply[caliban.CalibanError.ExecutionError, Nothing](caliban.CalibanError.ExecutionError.apply(("Can\'t parse ".+(value).+(" into a Limit"): String), caliban.CalibanError.ExecutionError.apply$default$2, caliban.CalibanError.ExecutionError.apply$default$3, caliban.CalibanError.ExecutionError.apply$default$4, caliban.CalibanError.ExecutionError.apply$default$5))
34 39521 1167 - 1167 Select caliban.CalibanError.ExecutionError.apply$default$5 caliban.CalibanError.ExecutionError.apply$default$5
35 35399 1248 - 1310 Apply scala.util.Left.apply scala.`package`.Left.apply[caliban.CalibanError.ExecutionError, Nothing](caliban.CalibanError.ExecutionError.apply(("Can\'t build a Limit from input ".+(other): String), caliban.CalibanError.ExecutionError.apply$default$2, caliban.CalibanError.ExecutionError.apply$default$3, caliban.CalibanError.ExecutionError.apply$default$4, caliban.CalibanError.ExecutionError.apply$default$5))
35 42191 1253 - 1253 Select caliban.CalibanError.ExecutionError.apply$default$3 caliban.CalibanError.ExecutionError.apply$default$3
35 49784 1253 - 1253 Select caliban.CalibanError.ExecutionError.apply$default$2 caliban.CalibanError.ExecutionError.apply$default$2
35 46392 1253 - 1253 Select caliban.CalibanError.ExecutionError.apply$default$5 caliban.CalibanError.ExecutionError.apply$default$5
35 34375 1253 - 1253 Select caliban.CalibanError.ExecutionError.apply$default$4 caliban.CalibanError.ExecutionError.apply$default$4
35 39560 1253 - 1309 Apply caliban.CalibanError.ExecutionError.apply caliban.CalibanError.ExecutionError.apply(("Can\'t build a Limit from input ".+(other): String), caliban.CalibanError.ExecutionError.apply$default$2, caliban.CalibanError.ExecutionError.apply$default$3, caliban.CalibanError.ExecutionError.apply$default$4, caliban.CalibanError.ExecutionError.apply$default$5)
41 48199 1471 - 1493 Apply io.circe.Json.fromString io.circe.Json.fromString(value)
42 39316 1575 - 1583 Apply scala.util.Right.apply scala.`package`.Right.apply[Nothing, org.make.core.technical.Pagination.Offset](x$2)
42 32754 1520 - 1520 Select caliban.CalibanError.ExecutionError.apply$default$3 caliban.CalibanError.ExecutionError.apply$default$3
42 41406 1520 - 1520 Select caliban.CalibanError.ExecutionError.apply$default$5 caliban.CalibanError.ExecutionError.apply$default$5
42 46104 1520 - 1520 Select caliban.CalibanError.ExecutionError.apply$default$4 caliban.CalibanError.ExecutionError.apply$default$4
42 35439 1426 - 1584 Apply scala.util.Either.fold org.make.core.technical.Pagination.offsetDecoder.decodeJson(io.circe.Json.fromString(value)).fold[scala.util.Either[caliban.CalibanError.ExecutionError,org.make.core.technical.Pagination.Offset]](((ex: io.circe.DecodingFailure) => scala.`package`.Left.apply[caliban.CalibanError.ExecutionError, Nothing](caliban.CalibanError.ExecutionError.apply(("Can\'t parse ".+(value).+(" into an Offset"): String), caliban.CalibanError.ExecutionError.apply$default$2, caliban.CalibanError.ExecutionError.apply$default$3, caliban.CalibanError.ExecutionError.apply$default$4, caliban.CalibanError.ExecutionError.apply$default$5))), ((x$2: org.make.core.technical.Pagination.Offset) => scala.`package`.Right.apply[Nothing, org.make.core.technical.Pagination.Offset](x$2)))
42 33809 1520 - 1572 Apply caliban.CalibanError.ExecutionError.apply caliban.CalibanError.ExecutionError.apply(("Can\'t parse ".+(value).+(" into an Offset"): String), caliban.CalibanError.ExecutionError.apply$default$2, caliban.CalibanError.ExecutionError.apply$default$3, caliban.CalibanError.ExecutionError.apply$default$4, caliban.CalibanError.ExecutionError.apply$default$5)
42 46307 1515 - 1573 Apply scala.util.Left.apply scala.`package`.Left.apply[caliban.CalibanError.ExecutionError, Nothing](caliban.CalibanError.ExecutionError.apply(("Can\'t parse ".+(value).+(" into an Offset"): String), caliban.CalibanError.ExecutionError.apply$default$2, caliban.CalibanError.ExecutionError.apply$default$3, caliban.CalibanError.ExecutionError.apply$default$4, caliban.CalibanError.ExecutionError.apply$default$5))
42 40920 1520 - 1520 Select caliban.CalibanError.ExecutionError.apply$default$2 caliban.CalibanError.ExecutionError.apply$default$2
43 33554 1603 - 1667 Apply scala.util.Left.apply scala.`package`.Left.apply[caliban.CalibanError.ExecutionError, Nothing](caliban.CalibanError.ExecutionError.apply(("Can\'t build an Offset from input ".+(other): String), caliban.CalibanError.ExecutionError.apply$default$2, caliban.CalibanError.ExecutionError.apply$default$3, caliban.CalibanError.ExecutionError.apply$default$4, caliban.CalibanError.ExecutionError.apply$default$5))
43 45866 1608 - 1608 Select caliban.CalibanError.ExecutionError.apply$default$5 caliban.CalibanError.ExecutionError.apply$default$5
43 40336 1608 - 1608 Select caliban.CalibanError.ExecutionError.apply$default$3 caliban.CalibanError.ExecutionError.apply$default$3
43 47956 1608 - 1608 Select caliban.CalibanError.ExecutionError.apply$default$2 caliban.CalibanError.ExecutionError.apply$default$2
43 41439 1608 - 1666 Apply caliban.CalibanError.ExecutionError.apply caliban.CalibanError.ExecutionError.apply(("Can\'t build an Offset from input ".+(other): String), caliban.CalibanError.ExecutionError.apply$default$2, caliban.CalibanError.ExecutionError.apply$default$3, caliban.CalibanError.ExecutionError.apply$default$4, caliban.CalibanError.ExecutionError.apply$default$5)
43 32188 1608 - 1608 Select caliban.CalibanError.ExecutionError.apply$default$4 caliban.CalibanError.ExecutionError.apply$default$4