package world.respect.lib.serializers import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable import kotlinx.serialization.descriptors.PrimitiveKind import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder import kotlin.time.Instant object InstantISO8601Serializer: KSerializer { override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor( "world.respect.Instant8601Serializer", PrimitiveKind.STRING ) override fun serialize( encoder: Encoder, value: Instant ) { encoder.encodeString(value.toString()) } override fun deserialize(decoder: Decoder): Instant { return Instant.parse(decoder.decodeString()) } } typealias InstantAsISO8601 = @Serializable(with = InstantISO8601Serializer::class) Instant