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.widget
21 
22 import enumeratum.{CirceEnum, Enum, EnumEntry}
23 import io.circe.{Codec, Decoder, Encoder}
24 import org.make.core.StringValue
25 import org.make.core.question.QuestionId
26 import org.make.core.reference.{Country, Language}
27 import org.make.core.sequence.SequenceKind
28 import org.make.core.user.UserId
29 import org.make.core.widget.Widget.Version
30 
31 import java.time.ZonedDateTime
32 
33 final case class WidgetId(value: String) extends StringValue
34 
35 object WidgetId {
36   implicit val codec: Codec[WidgetId] =
37     Codec.from(Decoder[String].map(WidgetId.apply), Encoder[String].contramap(_.value))
38 
39 }
40 
41 final case class Widget(
42   id: WidgetId,
43   sourceId: SourceId,
44   questionId: QuestionId,
45   country: Country,
46   language: Language,
47   author: UserId,
48   version: Version,
49   script: String,
50   createdAt: ZonedDateTime,
51   sequenceKind: SequenceKind
52 )
53 
54 object Widget {
55 
56   sealed abstract class Version extends EnumEntry
57 
58   object Version extends Enum[Version] with CirceEnum[Version] {
59     case object V1 extends Version
60     case object V2 extends Version
61     case object V3 extends Version
62     case object V4 extends Version
63     case object V5 extends Version
64     case object V6 extends Version
65     override val values: IndexedSeq[Version] = findValues
66     final val swaggerAllowableValues = "V1,V2,V3,V4,V5,V6"
67   }
68 
69 }
Line Stmt Id Pos Tree Symbol Tests Code
37 4087 1296 - 1310 Apply org.make.core.widget.WidgetId.apply akka.http.scaladsl.testkit.routetest WidgetId.apply(value)
37 2331 1276 - 1311 Apply io.circe.Decoder.map io.circe.Decoder.apply[String](circe.this.Decoder.decodeString).map[org.make.core.widget.WidgetId](((value: String) => WidgetId.apply(value)))
37 4514 1339 - 1346 Select org.make.core.widget.WidgetId.value x$1.value
37 443 1265 - 1348 Apply io.circe.Codec.from io.circe.Codec.from[org.make.core.widget.WidgetId](io.circe.Decoder.apply[String](circe.this.Decoder.decodeString).map[org.make.core.widget.WidgetId](((value: String) => WidgetId.apply(value))), io.circe.Encoder.apply[String](circe.this.Encoder.encodeString).contramap[org.make.core.widget.WidgetId](((x$1: org.make.core.widget.WidgetId) => x$1.value)))
37 5560 1320 - 1320 Select io.circe.Encoder.encodeString circe.this.Encoder.encodeString
37 2578 1313 - 1347 Apply io.circe.Encoder.contramap io.circe.Encoder.apply[String](circe.this.Encoder.encodeString).contramap[org.make.core.widget.WidgetId](((x$1: org.make.core.widget.WidgetId) => x$1.value))
37 942 1283 - 1283 Select io.circe.Decoder.decodeString circe.this.Decoder.decodeString
66 3987 2040 - 2059 Literal <nosymbol> "V1,V2,V3,V4,V5,V6"