diff --git a/build.gradle.kts b/build.gradle.kts index 3a5b862..1296b66 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,9 +1,20 @@ plugins { application kotlin("jvm") version "1.5.10" + kotlin("plugin.serialization") version "1.5.10" id("com.github.johnrengelman.shadow") version "7.0.0" } +buildscript { + repositories { mavenCentral() } + + dependencies { + val kotlinVersion = "1.5.10" + classpath(kotlin("gradle-plugin", version = kotlinVersion)) + classpath(kotlin("serialization", version = kotlinVersion)) + } +} + application { mainClassName = "MainKt" } @@ -20,13 +31,14 @@ dependencies { implementation("com.rabbitmq:amqp-client:5.13.0") implementation("com.viartemev:the-white-rabbit:0.0.6") implementation("com.zaxxer:HikariCP:5.0.0") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.2") + implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.2.1") implementation("org.jetbrains.exposed:exposed-core:0.33.1") implementation("org.jetbrains.exposed:exposed-dao:0.33.1") implementation("org.jetbrains.exposed:exposed-jdbc:0.33.1") implementation("org.jetbrains.exposed:exposed-java-time:0.33.1") implementation("io.insert-koin:koin-core:3.1.2") implementation("org.postgresql:postgresql:42.2.23") - implementation("com.google.code.gson:gson:2.8.7") } tasks { diff --git a/src/main/kotlin/api/ApiObject.kt b/src/main/kotlin/api/ApiObject.kt index 4d9c1a0..cda7627 100644 --- a/src/main/kotlin/api/ApiObject.kt +++ b/src/main/kotlin/api/ApiObject.kt @@ -1,8 +1,9 @@ package api -import com.google.gson.annotations.SerializedName +import kotlinx.serialization.Serializable +@Serializable data class ApiObject( - @SerializedName("tag") val tag: String, - @SerializedName("probability") val probability: Double + val tag: String, + val probability: Double ) \ No newline at end of file diff --git a/src/main/kotlin/database/dao/ResultObjects.kt b/src/main/kotlin/database/dao/ResultObjects.kt index 31ac759..cb06454 100644 --- a/src/main/kotlin/database/dao/ResultObjects.kt +++ b/src/main/kotlin/database/dao/ResultObjects.kt @@ -2,12 +2,12 @@ package database.dao import org.jetbrains.exposed.dao.id.IntIdTable import org.jetbrains.exposed.sql.* -import org.jetbrains.exposed.sql.`java-time`.date -import java.time.LocalDate +import org.jetbrains.exposed.sql.`java-time`.datetime +import java.time.LocalDateTime object ResultObjects : IntIdTable() { val tag: Column = varchar("tag", 32) - val date: Column = date("date").default(LocalDate.now()) + val date: Column = datetime("date").default(LocalDateTime.now()) val probability: Column = double("probability") override val primaryKey = PrimaryKey(id, name = "PK_ResultObject_Id") } \ No newline at end of file diff --git a/src/main/kotlin/database/service/ResultObjectService.kt b/src/main/kotlin/database/service/ResultObjectService.kt index 5871970..50cfd79 100644 --- a/src/main/kotlin/database/service/ResultObjectService.kt +++ b/src/main/kotlin/database/service/ResultObjectService.kt @@ -1,14 +1,8 @@ package database.service -import database.DatabaseFactory.dbQuery import database.model.ResultObject -import database.dao.ResultObjects import api.ApiObject -import org.jetbrains.exposed.sql.ResultRow -import org.jetbrains.exposed.sql.select -import org.jetbrains.exposed.sql.selectAll import org.jetbrains.exposed.sql.transactions.transaction -import java.time.LocalDate class ResultObjectService : IResultObjectService { diff --git a/src/main/kotlin/mq/DatabaseConsumer.kt b/src/main/kotlin/mq/DatabaseConsumer.kt index 6243a6b..fe4a1db 100644 --- a/src/main/kotlin/mq/DatabaseConsumer.kt +++ b/src/main/kotlin/mq/DatabaseConsumer.kt @@ -1,15 +1,15 @@ package mq import api.ApiObject -import com.google.gson.Gson import com.rabbitmq.client.* import database.service.IResultObjectService +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json import org.koin.core.component.KoinComponent import org.koin.core.component.inject class DatabaseConsumer(channel: Channel): Consumer, KoinComponent { private val resultObjectService : IResultObjectService by inject() - private val gson = Gson() private val basicChannel = channel override fun handleConsumeOk(consumerTag : String?) { } @@ -30,7 +30,7 @@ class DatabaseConsumer(channel: Channel): Consumer, KoinComponent { override fun handleDelivery(consumerTag : String?, envelope : Envelope?, basicProperties : AMQP.BasicProperties?, body : ByteArray?) { try { val rawJson = body!!.toString(Charsets.UTF_8) - val apiObject = gson.fromJson(rawJson, ApiObject::class.java) + val apiObject = Json.decodeFromString(rawJson) resultObjectService.addOne(apiObject) basicChannel.basicAck(envelope!!.deliveryTag, false) } catch (e: Exception) {