All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.com.algolia.search.model.rule.Alternatives.kt Maven / Gradle / Ivy

package com.algolia.search.model.rule

import com.algolia.search.serialize.internal.asJsonInput
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializer
import kotlinx.serialization.builtins.serializer
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import kotlinx.serialization.json.JsonPrimitive
import kotlinx.serialization.json.boolean

public sealed class Alternatives {

    public object True : Alternatives()

    public object False : Alternatives()

    @OptIn(ExperimentalSerializationApi::class)
    @Serializer(Alternatives::class)
    public companion object : KSerializer {

        override fun serialize(encoder: Encoder, value: Alternatives) {
            when (value) {
                is True -> Boolean.serializer().serialize(encoder, true)
                is False -> Boolean.serializer().serialize(encoder, false)
            }
        }

        override fun deserialize(decoder: Decoder): Alternatives {
            return when (val element = decoder.asJsonInput()) {
                is JsonPrimitive -> if (element.boolean) True else False
                else -> throw Exception("Unsupported Type")
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy