feat(model): add more fields to Comment model

This commit is contained in:
Harsh Shandilya 2022-09-28 20:50:20 +05:30
parent 21b5f3e4f3
commit 84c0abbf58
No known key found for this signature in database
2 changed files with 31 additions and 0 deletions

View file

@ -1,5 +1,7 @@
package dev.msfjarvis.claw.model
import dev.msfjarvis.claw.serialization.JavaInstantSerializer
import java.time.temporal.TemporalAccessor
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@ -7,6 +9,13 @@ import kotlinx.serialization.Serializable
class Comment(
val comment: String,
val url: String,
val score: Int,
@Serializable(with = JavaInstantSerializer::class)
@SerialName("created_at")
val createdAt: TemporalAccessor,
@Serializable(with = JavaInstantSerializer::class)
@SerialName("updated_at")
val updatedAt: TemporalAccessor,
@SerialName("indent_level") val indentLevel: Int,
@SerialName("commenting_user") val user: User,
)

View file

@ -0,0 +1,22 @@
package dev.msfjarvis.claw.serialization
import java.time.format.DateTimeFormatter
import java.time.temporal.TemporalAccessor
import kotlinx.serialization.KSerializer
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
class JavaInstantSerializer : KSerializer<TemporalAccessor> {
override val descriptor: SerialDescriptor =
PrimitiveSerialDescriptor("Instant", PrimitiveKind.STRING)
override fun deserialize(decoder: Decoder): TemporalAccessor {
return DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse(decoder.decodeString())
}
override fun serialize(encoder: Encoder, value: TemporalAccessor) =
encoder.encodeString(value.toString())
}