package com.kmalbz.database.service import com.kmalbz.database.DatabaseFactory.dbQuery import com.kmalbz.database.model.ResultObject import com.kmalbz.database.dao.ResultObjects import com.kmalbz.api.model.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 { fun addOne(apiObject: ApiObject) { transaction { ResultObject.new { tag = apiObject.tag date = apiObject.date.toString() decision = apiObject.decision confidence = apiObject.confidence } } } suspend fun getAllResultObjects(): List = dbQuery { ResultObjects.selectAll().map { toResultObject(it) } } suspend fun getResultObjectbyTag(tag: String): ApiObject? = dbQuery { ResultObjects.select { (ResultObjects.tag eq tag) }.mapNotNull { toResultObject(it) } .singleOrNull() } suspend fun getResultObjectbyDate(date: LocalDate): List? = dbQuery { ResultObjects.select { (ResultObjects.date eq date) }.mapNotNull { toResultObject(it) } } suspend fun getResultObjectbeforeDate(date: LocalDate): List? = dbQuery { ResultObjects.select { (ResultObjects.date less date) }.mapNotNull { toResultObject(it) } } suspend fun getResultObjectafterDate(date: LocalDate): List? = dbQuery { ResultObjects.select { (ResultObjects.date greater date) }.mapNotNull { toResultObject(it) } } suspend fun getResultObjectbyDecision(decision: Boolean): List? = dbQuery { ResultObjects.select { (ResultObjects.decision eq decision) }.mapNotNull { toResultObject(it) } } private fun toResultObject(row: ResultRow): ApiObject = ApiObject( tag = row[ResultObjects.tag], date = row[ResultObjects.date], decision = row[ResultObjects.decision], confidence = row[ResultObjects.confidence] ) }