generateApolloEnums
Whether to generate enums as ApolloEnum
This GraphQL enum:
enum Color {
BLUEBERRY,
CHERRY
CANDY
}Content copied to clipboard
Generates the following simplified Kotlin code:
public interface ApolloEnum<E, K : KnownEnum<E>> {
public val rawValue: String
}
public sealed interface Color : ApolloEnum<Color, Color.__Known> {
override val rawValue: String
public data object BLUEBERRY : __Known {
override val rawValue: String = "BLUEBERRY"
}
public data object CHERRY : __Known {
override val rawValue: String = "CHERRY"
}
public data object CANDY : __Known {
override val rawValue: String = "CANDY"
}
public sealed interface __Known : Color, KnownEnum<Color> {
override val rawValue: String
}
public class __Unknown(
override val rawValue: String,
) : Color
}Content copied to clipboard
Using ApolloEnum allows to have an intermediate type for "known" enums so you can sanitize your enums and only deal with known enums if you want to:
// this function only wants to deal with known colors
fun doSomethingWith(color: Color.__Known) {
TODO()
}
val known = networkEnum.knownOrDefault { Color.CHERRY }
doSomethingWith(known)Content copied to clipboard
generateApolloEnums is experimental and only valid when generateKotlinModels is true.