Add LVGMC warning map workflow
This commit is contained in:
@@ -8,6 +8,7 @@ import db.PostgresService
|
||||
import fetch.csv.FileNameService
|
||||
//import fetch.csv.FetchService
|
||||
import fetch.lvgmc.FetchService
|
||||
import fetch.warnings.WarningService
|
||||
import fs2.io.file.{Files, Path}
|
||||
import server.ValidateRoutes.{AggFieldList, AggKey, CityList, DateTimeRange, Granularity, ValidateDate, ValidateDateTime, ValidateInt, ValidateMonths, ValidateZonedDateTime}
|
||||
import org.http4s._
|
||||
@@ -34,18 +35,26 @@ import scala.concurrent.duration.DurationInt
|
||||
|
||||
|
||||
object Server {
|
||||
def of(postgresService: PostgresService, dataService: DataService, fetch: FetchService): IO[Server] = {
|
||||
def of(postgresService: PostgresService, dataService: DataService, fetch: FetchService, warnings: WarningService): IO[Server] = {
|
||||
Slf4jLogger.create[IO].map {
|
||||
new Server(postgresService, dataService, fetch, _)
|
||||
new Server(postgresService, dataService, fetch, warnings, _)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Server(postgresService: PostgresService, dataService: DataService, fetch: FetchService, log: Logger[IO]) {
|
||||
class Server(postgresService: PostgresService, dataService: DataService, fetch: FetchService, warnings: WarningService, log: Logger[IO]) {
|
||||
private case class ResponseWrapper(result: Map[String, Option[Aggregate.AggregateValue]], query: UserQuery)
|
||||
private case class LatestTemperature(city: String, observedAt: String, value: Option[Double])
|
||||
|
||||
private val apiRoutes = HttpRoutes.of[IO] {
|
||||
case GET -> Root / "warnings" =>
|
||||
warnings.fetchWarnings
|
||||
.flatMap(result => Ok(result.asJson))
|
||||
.handleErrorWith { error =>
|
||||
log.error(error)("Unable to load LVĢMC warnings") *>
|
||||
ServiceUnavailable("LVĢMC brīdinājumu dati pašlaik nav pieejami")
|
||||
}
|
||||
|
||||
// http://0.0.0.0:8080/api/show/lvgmc-forecast/Latvija_LTV_pilsetas_tekosa_dn.csv
|
||||
case GET -> Root / "show" / "lvgmc-forecast" / fileName =>
|
||||
fetch.fetchFile(fileName).flatMap(bytes =>
|
||||
@@ -198,6 +207,7 @@ class Server(postgresService: PostgresService, dataService: DataService, fetch:
|
||||
"/database" -> staticcontent.fileService[IO](FileService.Config("./web/dist")),
|
||||
"/harmonie" -> staticcontent.fileService[IO](FileService.Config("./web/dist")),
|
||||
"/lvgmc-forecast" -> staticcontent.fileService[IO](FileService.Config("./web/dist")),
|
||||
"/bridinajumi" -> staticcontent.fileService[IO](FileService.Config("./web/dist")),
|
||||
).orNotFound
|
||||
|
||||
def run: IO[ExitCode] =
|
||||
|
||||
Reference in New Issue
Block a user