+ <div class="platform-hinted " data-platform-hinted="data-platform-hinted"><div class="content sourceset-dependent-content" data-active="" data-togglable=":apollo-gradle-plugin/main"><div class="symbol monospace"><div class="block"><div class="block"><span class="token annotation builtin">@</span><a href="../../../apollo-annotations/com.apollographql.apollo.annotations/-apollo-experimental/index.html"><span class="token annotation builtin">ApolloExperimental</span></a></div></div><span class="token keyword">abstract </span><span class="token keyword">val </span><a href="generate-apollo-enums.html">generateApolloEnums</a><span class="token operator">: </span><span data-unresolved-link="org.gradle.api.provider/Property///PointingToDeclaration/">Property</span><span class="token operator"><</span><a href="https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html">Boolean</a><span class="token operator">></span></div><p class="paragraph">Whether to generate enums as ApolloEnum<e>. Generates GraphQL enums as a sealed interface hierarchy.</e></p><p class="paragraph">This GraphQL enum:</p><div class="sample-container"><pre><code class="block lang-graphql" theme="idea">enum Color {<br> BLUEBERRY,<br> CHERRY<br> CANDY<br>}</code></pre><span class="top-right-position"><span class="copy-icon"></span><div class="copy-popup-wrapper popup-to-left"><span class="copy-popup-icon"></span><span>Content copied to clipboard</span></div></span></div><p class="paragraph">Generates the following simplified Kotlin code:</p><div class="sample-container"><pre><code class="block lang-kotlin" theme="idea">public interface ApolloEnum<E, K : KnownEnum<E>> {<br> public val rawValue: String<br>}<br><br>public sealed interface Color : ApolloEnum<Color, Color.__Known> {<br> override val rawValue: String<br><br> public data object BLUEBERRY : __Known {<br> override val rawValue: String = "BLUEBERRY"<br> }<br><br> public data object CHERRY : __Known {<br> override val rawValue: String = "CHERRY"<br> }<br><br> public data object CANDY : __Known {<br> override val rawValue: String = "CANDY"<br> }<br><br> public sealed interface __Known : Color, KnownEnum<Color> {<br> override val rawValue: String<br> }<br><br> public class __Unknown(<br> override val rawValue: String,<br> ) : Color<br>}</code></pre><span class="top-right-position"><span class="copy-icon"></span><div class="copy-popup-wrapper popup-to-left"><span class="copy-popup-icon"></span><span>Content copied to clipboard</span></div></span></div><p class="paragraph">Using <code class="lang-kotlin">ApolloEnum</code> 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:</p><div class="sample-container"><pre><code class="block lang-kotlin" theme="idea">// this function only wants to deal with known colors<br>fun doSomethingWith(color: Color.__Known) {<br> TODO()<br>}<br>val known = networkEnum.knownOrDefault { Color.CHERRY }<br><br>doSomethingWith(known)</code></pre><span class="top-right-position"><span class="copy-icon"></span><div class="copy-popup-wrapper popup-to-left"><span class="copy-popup-icon"></span><span>Content copied to clipboard</span></div></span></div><p class="paragraph"><a href="generate-apollo-enums.html">generateApolloEnums</a> is experimental and only valid when <a href="generate-kotlin-models.html">generateKotlinModels</a> is <code class="lang-kotlin">true</code>.</p></div></div>
0 commit comments