Server asks data from db and after uses parser

This commit is contained in:
Guntis Smaukstelis
2023-04-19 17:34:27 +03:00
parent a369624054
commit 0622177572
2 changed files with 15 additions and 10 deletions
+8 -7
View File
@@ -59,27 +59,28 @@ object Parser {
} }
def queryData( def queryData(
from: LocalDateTime, data: List[String],
to: LocalDateTime,
cities: List[String], cities: List[String],
aggregator: AggregateMeteo, aggregator: AggregateMeteo,
): IO[Map[String, Double]] = { ): IO[Map[String, Double]] = {
for { for {
lines <- db.DBService.getInRange(from, to)
weatherLines <- IO.pure(aggregateLines(lines, cities, aggregator)) weatherLines <- IO.pure(aggregateLines(data, cities, aggregator))
// _ <- IO.println(weatherLines) // _ <- IO.println(weatherLines)
} yield weatherLines } yield weatherLines
} }
// TODO remove this. Just for testing
private def run: IO[Unit] = { private def run: IO[Unit] = {
println("================ start parser") println("================ start parser")
val formatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmm") val formatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmm")
val start = LocalDateTime.parse("20230409_2200", formatter) val from = LocalDateTime.parse("20230414_2200", formatter)
val end = LocalDateTime.parse("20230501_1230", formatter) val to = LocalDateTime.parse("20230501_1230", formatter)
for { for {
parsed <- queryData(start, end, List("Liepāja", "Rēzekne", "randomstr"), AggregateMeteo.tempAvg) lines <- db.DBService.getInRange(from, to)
parsed <- queryData(lines, List("Liepāja", "Rēzekne", "randomstr"), AggregateMeteo.tempAvg)
_ <- IO.println(parsed) _ <- IO.println(parsed)
} yield () } yield ()
} }
+7 -3
View File
@@ -15,7 +15,7 @@ import scala.util.Try
object Server extends IOApp { object Server extends IOApp {
private val formatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmm") private val formatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmm")
private val appRoutes = HttpRoutes.of[IO] { private val appRoutes = HttpRoutes.of[IO] {
// http://localhost:3000/query/20230409_2200-20230501_1230/Liepāja,Rēzekne/tempAvg // http://localhost:3000/query/20230414_2200-20230501_1230/Liepāja,Rēzekne/tempAvg
case GET -> Root / "query" / timestampRange / cities / aggregate => case GET -> Root / "query" / timestampRange / cities / aggregate =>
// TODO proly better to Validated with chained errors // TODO proly better to Validated with chained errors
val parsedArguments = for { val parsedArguments = for {
@@ -35,8 +35,12 @@ object Server extends IOApp {
parsedArguments match { parsedArguments match {
case Some((from, to, cityList, aggregate)) => { case Some((from, to, cityList, aggregate)) => {
val resultData = Parser.queryData(from, to, cityList, aggregate) val res = for {
Ok(resultData.toString()) lines <- db.DBService.getInRange(from, to)
parsedData <- parse.Parser.queryData(lines, cityList, aggregate)
} yield parsedData
Ok(res.map(_.toString()))
} }
case _ => BadRequest(s"Invalid request format") case _ => BadRequest(s"Invalid request format")
} }