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 probability = apiObject.probability } } } 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 getResultObjecGreaterthanProbability(probability: Double): List? = dbQuery { ResultObjects.select { (ResultObjects.probability greater probability) }.mapNotNull { toResultObject(it) } } suspend fun getResultObjecLessthanProbability(probability: Double): List? = dbQuery { ResultObjects.select { (ResultObjects.probability less probability) }.mapNotNull { toResultObject(it) } } suspend fun getResultObjecEqualsProbability(probability: Double): List? = dbQuery { ResultObjects.select { (ResultObjects.probability eq probability) }.mapNotNull { toResultObject(it) } } private fun toResultObject(row: ResultRow): ApiObject = ApiObject( tag = row[ResultObjects.tag], probability = row[ResultObjects.probability] ) }