package com.kmalbz.api.route import com.kmalbz.database.service.IResultObjectService import io.ktor.application.call import io.ktor.http.HttpStatusCode import io.ktor.response.respond import io.ktor.routing.Routing import io.ktor.routing.get import kotlinx.datetime.LocalDateTime import org.koin.ktor.ext.inject /** * Output Service - RDB * * This is the output interface of the Birbnetes system. */ class OutputServiceRDBServer { /** * output */ fun Routing.registerOutput() { val resultObjectService: IResultObjectService by inject() get("/output") { call.respond(resultObjectService.getAllResultObjects()) } get("/output/count") { call.respond(resultObjectService.getCount()) } get("/output/page/{page}") { val page = call.parameters["page"] ?: error(HttpStatusCode.NotAcceptable) val pageNum = page.toLong() call.respond(resultObjectService.getPage(pageNum)) } get("/output/filter/negative") { val resultList = resultObjectService.getResultObjecLessthanProbability(0.5) call.respond(resultList) } get("/output/filter/positive") { val resultList = resultObjectService.getResultObjecGreaterthanProbability(0.5) call.respond(resultList) } get("/output/filter/undecided") { val resultList = resultObjectService.getResultObjecEqualsProbability(0.5) call.respond(resultList) } get("/output/after/{dateAfter}") { val dateAfter = call.parameters["dateAfter"] ?: error(HttpStatusCode.NotAcceptable) val localDateAfter: LocalDateTime = LocalDateTime.parse(dateAfter) val resultList = resultObjectService.getResultObjectafterDate(localDateAfter) call.respond(resultList) } get("/output/before/{dateBefore}") { val dateAfter = call.parameters["dateBefore"] ?: error(HttpStatusCode.NotAcceptable) val localDateBefore: LocalDateTime = LocalDateTime.parse(dateAfter) val resultList = resultObjectService.getResultObjectbeforeDate(localDateBefore) call.respond(resultList) } get("/output/{tagID}") { val tagID = call.parameters["tagID"] ?: error(HttpStatusCode.NotAcceptable) val resultObject = resultObjectService.getResultObjectbyTag(tagID) ?: call.respond(HttpStatusCode.NotFound) call.respond(resultObject) } } }