app/models/SupportFrontendSwitches.scala (20 lines of code) (raw):
package models
import io.circe.generic.extras.Configuration
import io.circe.generic.extras.auto._
import io.circe.generic.extras.semiauto.{ deriveEnumerationDecoder, deriveEnumerationEncoder }
import io.circe.{Decoder, Encoder}
sealed trait SwitchState
case object On extends SwitchState
case object Off extends SwitchState
object SupportFrontendSwitches {
case class Switch(description: String, state: SwitchState)
type SwitchName = String
case class SwitchGroup(description: String, switches: Map[SwitchName, Switch])
type GroupName = String
type SupportFrontendSwitches = Map[GroupName,SwitchGroup]
implicit val customConfig: Configuration = Configuration.default.withDefaults
implicit val stateDecoder: Decoder[SwitchState] = deriveEnumerationDecoder[SwitchState]
implicit val stateEncoder: Encoder[SwitchState] = deriveEnumerationEncoder[SwitchState]
implicit val SupportFrontendSwitchesDecoder = Decoder[SupportFrontendSwitches]
implicit val SupportFrontendSwitchesEncoder = Encoder[SupportFrontendSwitches]
}