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 50000 1118 - 1140 Apply io.circe.Json.fromString io.circe.Json.fromString(value)
34 35647 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 39501 1167 - 1167 Select caliban.CalibanError.ExecutionError.apply$default$5 caliban.CalibanError.ExecutionError.apply$default$5
34 46319 1167 - 1167 Select caliban.CalibanError.ExecutionError.apply$default$4 caliban.CalibanError.ExecutionError.apply$default$4
34 39832 1220 - 1228 Apply scala.util.Right.apply scala.`package`.Right.apply[Nothing, org.make.core.technical.Pagination.Limit](x$1)
34 32708 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 41429 1167 - 1167 Select caliban.CalibanError.ExecutionError.apply$default$2 caliban.CalibanError.ExecutionError.apply$default$2
34 33294 1167 - 1167 Select caliban.CalibanError.ExecutionError.apply$default$3 caliban.CalibanError.ExecutionError.apply$default$3
34 48717 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))
35 49745 1253 - 1253 Select caliban.CalibanError.ExecutionError.apply$default$2 caliban.CalibanError.ExecutionError.apply$default$2
35 34370 1253 - 1253 Select caliban.CalibanError.ExecutionError.apply$default$4 caliban.CalibanError.ExecutionError.apply$default$4
35 46356 1253 - 1253 Select caliban.CalibanError.ExecutionError.apply$default$5 caliban.CalibanError.ExecutionError.apply$default$5
35 39540 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)
35 42169 1253 - 1253 Select caliban.CalibanError.ExecutionError.apply$default$3 caliban.CalibanError.ExecutionError.apply$default$3
35 35392 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))
41 48163 1471 - 1493 Apply io.circe.Json.fromString io.circe.Json.fromString(value)
42 41386 1520 - 1520 Select caliban.CalibanError.ExecutionError.apply$default$5 caliban.CalibanError.ExecutionError.apply$default$5
42 39296 1575 - 1583 Apply scala.util.Right.apply scala.`package`.Right.apply[Nothing, org.make.core.technical.Pagination.Offset](x$2)
42 32749 1520 - 1520 Select caliban.CalibanError.ExecutionError.apply$default$3 caliban.CalibanError.ExecutionError.apply$default$3
42 35431 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 33804 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 46068 1520 - 1520 Select caliban.CalibanError.ExecutionError.apply$default$4 caliban.CalibanError.ExecutionError.apply$default$4
42 40900 1520 - 1520 Select caliban.CalibanError.ExecutionError.apply$default$2 caliban.CalibanError.ExecutionError.apply$default$2
42 46271 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))
43 40316 1608 - 1608 Select caliban.CalibanError.ExecutionError.apply$default$3 caliban.CalibanError.ExecutionError.apply$default$3
43 45830 1608 - 1608 Select caliban.CalibanError.ExecutionError.apply$default$5 caliban.CalibanError.ExecutionError.apply$default$5
43 41419 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 47920 1608 - 1608 Select caliban.CalibanError.ExecutionError.apply$default$2 caliban.CalibanError.ExecutionError.apply$default$2
43 32183 1608 - 1608 Select caliban.CalibanError.ExecutionError.apply$default$4 caliban.CalibanError.ExecutionError.apply$default$4
43 33549 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))