From 9f7c963cd5b61cd9fa255fce64045af2b0eb5029 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 27 Apr 2024 15:34:52 +0600 Subject: [PATCH] add klock in common and DateTimeSerializer --- CHANGELOG.md | 4 ++++ common/build.gradle | 5 ++++ .../micro_utils/common/DateTimeSerializer.kt | 23 +++++++++++++++++++ ktor/common/build.gradle | 1 - 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 common/src/commonMain/kotlin/dev/inmo/micro_utils/common/DateTimeSerializer.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index d97bde5344a..f01c8f58c93 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## 0.20.46 +* `Common`: + * Now this repo depends on `klock` + * Add new object-serializer `DateTimeSerializer` for `klock` serializer + ## 0.20.45 * `Versions`: diff --git a/common/build.gradle b/common/build.gradle index ba6963d2308..840e2fb8a68 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -8,6 +8,11 @@ apply from: "$mppJvmJsAndroidLinuxMingwLinuxArm64ProjectPresetPath" kotlin { sourceSets { + commonMain { + dependencies { + api libs.klock + } + } jvmMain { dependencies { api project(":micro_utils.coroutines") diff --git a/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/DateTimeSerializer.kt b/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/DateTimeSerializer.kt new file mode 100644 index 00000000000..245f66b5198 --- /dev/null +++ b/common/src/commonMain/kotlin/dev/inmo/micro_utils/common/DateTimeSerializer.kt @@ -0,0 +1,23 @@ +package dev.inmo.micro_utils.common + +import korlibs.time.DateTime +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializer +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder + +@Serializer(DateTime::class) +object DateTimeSerializer : KSerializer { + override val descriptor: SerialDescriptor + get() = Double.serializer().descriptor + + override fun deserialize(decoder: Decoder): DateTime { + return DateTime(decoder.decodeDouble()) + } + + override fun serialize(encoder: Encoder, value: DateTime) { + encoder.encodeDouble(value.unixMillis) + } +} \ No newline at end of file diff --git a/ktor/common/build.gradle b/ktor/common/build.gradle index 80f20448b09..59af6eb7af8 100644 --- a/ktor/common/build.gradle +++ b/ktor/common/build.gradle @@ -12,7 +12,6 @@ kotlin { dependencies { api internalProject("micro_utils.common") api libs.kt.serialization.cbor - api libs.klock api libs.uuid api libs.ktor.io }