Skip to content

Commit

Permalink
fix(specs): built-in ops accept also int (generated)
Browse files Browse the repository at this point in the history
algolia/api-clients-automation#3450

Co-authored-by: algolia-bot <[email protected]>
Co-authored-by: Kai Welke <[email protected]>
Co-authored-by: Pierre Millot <[email protected]>
  • Loading branch information
3 people committed Jul 31, 2024
1 parent 5d91089 commit 379dcd7
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,12 @@ import kotlinx.serialization.json.*
* Update to perform on the attribute.
*
* @param operation
* @param `value` Value that corresponds to the operation, for example an `Increment` or `Decrement` step, or an `Add` or `Remove` value.
* @param `value`
*/
@Serializable
public data class BuiltInOperation(

@SerialName(value = "_operation") val operation: BuiltInOperationType,

/** Value that corresponds to the operation, for example an `Increment` or `Decrement` step, or an `Add` or `Remove` value. */
@SerialName(value = "value") val `value`: String,
@SerialName(value = "value") val `value`: BuiltInOperationValue,
) : AttributeToUpdate
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/** Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. */
package com.algolia.client.model.search

import com.algolia.client.exception.AlgoliaClientException
import com.algolia.client.extensions.internal.*
import kotlinx.serialization.*
import kotlinx.serialization.builtins.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.json.*
import kotlin.jvm.JvmInline

/**
* BuiltInOperationValue
*
* Implementations:
* - [Int] - *[BuiltInOperationValue.of]*
* - [String] - *[BuiltInOperationValue.of]*
*/
@Serializable(BuiltInOperationValueSerializer::class)
public sealed interface BuiltInOperationValue {
@Serializable
@JvmInline
public value class StringValue(public val value: String) : BuiltInOperationValue

@Serializable
@JvmInline
public value class IntValue(public val value: Int) : BuiltInOperationValue

public companion object {

public fun of(value: String): BuiltInOperationValue {
return StringValue(value)
}
public fun of(value: Int): BuiltInOperationValue {
return IntValue(value)
}
}
}

internal class BuiltInOperationValueSerializer : JsonContentPolymorphicSerializer<BuiltInOperationValue>(BuiltInOperationValue::class) {
override fun selectDeserializer(element: JsonElement): DeserializationStrategy<BuiltInOperationValue> {
return when {
element.isString -> BuiltInOperationValue.StringValue.serializer()
element.isInt -> BuiltInOperationValue.IntValue.serializer()
else -> throw AlgoliaClientException("Failed to deserialize json element: $element")
}
}
}

0 comments on commit 379dcd7

Please sign in to comment.