/** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.0.1 * User agent: apibuilder app.apibuilder.io/apicollective/examples-graphql-users/0.0.1/http4s_0_23 */ package io.apibuilder.examples.graphql.users.models { sealed trait UserPatchForm extends _root_.scala.Product with _root_.scala.Serializable { def userPatchFormDiscriminator: UserPatchFormDiscriminator } /** * Defines the valid discriminator values for the type UserPatchForm */ sealed trait UserPatchFormDiscriminator extends _root_.scala.Product with _root_.scala.Serializable object UserPatchFormDiscriminator { case object UserStatusPatchForm extends UserPatchFormDiscriminator { override def toString = "status" } case object UserEmailPatchForm extends UserPatchFormDiscriminator { override def toString = "email" } final case class UNDEFINED(override val toString: String) extends UserPatchFormDiscriminator val all: scala.List[UserPatchFormDiscriminator] = scala.List(UserStatusPatchForm, UserEmailPatchForm) private val byName: Map[String, UserPatchFormDiscriminator] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): UserPatchFormDiscriminator = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[UserPatchFormDiscriminator] = byName.get(value.toLowerCase) } final case class User( id: _root_.java.util.UUID, status: io.apibuilder.examples.graphql.users.models.UserStatus, email: String, name: _root_.scala.Option[String] = None ) final case class UserEmailPatchForm( email: String ) extends UserPatchForm { override val userPatchFormDiscriminator: UserPatchFormDiscriminator = UserPatchFormDiscriminator.UserEmailPatchForm } final case class UserForm( status: io.apibuilder.examples.graphql.users.models.UserStatus = io.apibuilder.examples.graphql.users.models.UserStatus.Active, email: String, name: _root_.scala.Option[String] = None ) final case class UserStatusPatchForm( status: io.apibuilder.examples.graphql.users.models.UserStatus ) extends UserPatchForm { override val userPatchFormDiscriminator: UserPatchFormDiscriminator = UserPatchFormDiscriminator.UserStatusPatchForm } /** * Provides future compatibility in clients - in the future, when a type is added * to the union UserPatchForm, it will need to be handled in the client code. This * implementation will deserialize these future types as an instance of this class. * * @param description Information about the type that we received that is undefined in this version of * the client. */ final case class UserPatchFormUndefinedType( description: String ) extends UserPatchForm { override val userPatchFormDiscriminator: UserPatchFormDiscriminator = UserPatchFormDiscriminator.UNDEFINED(description) } sealed trait UserStatus extends _root_.scala.Product with _root_.scala.Serializable object UserStatus { case object Active extends UserStatus { override def toString = "active" } case object Inactive extends UserStatus { override def toString = "inactive" } /** * UNDEFINED captures values that are sent either in error or * that were added by the server after this library was * generated. We want to make it easy and obvious for users of * this library to handle this case gracefully. * * We use all CAPS for the variable name to avoid collisions * with the camel cased values above. */ final case class UNDEFINED(override val toString: String) extends UserStatus /** * all returns a list of all the valid, known values. We use * lower case to avoid collisions with the camel cased values * above. */ val all: scala.List[UserStatus] = scala.List(Active, Inactive) private val byName: Map[String, UserStatus] = all.map(x => x.toString.toLowerCase -> x).toMap def apply(value: String): UserStatus = fromString(value).getOrElse(UNDEFINED(value)) def fromString(value: String): _root_.scala.Option[UserStatus] = byName.get(value.toLowerCase) } }