Files
WeatherTool/src/main/scala/app/Main.scala
T

42 lines
1.3 KiB
Scala
Raw Normal View History

package app
import cats.effect._
import cats.implicits.catsSyntaxTuple3Parallel
import data.DataService
2023-12-17 22:48:24 +02:00
import db.{DBConnection, PostgresService}
import fetch.{FetchService, FileFetchScheduler}
import server.Server
object Main extends IOApp {
def run(args: List[String]): IO[ExitCode] = {
for {
transactor <- DBConnection.transactor[IO]
postgresService <- PostgresService.of(transactor)
_ <- postgresService.createWeatherTable // create table if it does not exists
2023-06-22 13:59:44 +03:00
fetch <- FetchService.of
2023-12-17 22:48:24 +02:00
fileFetchScheduler <- FileFetchScheduler.of(postgresService, fetch)
schedulerTask = fileFetchScheduler.run.compile.drain
2023-06-22 13:59:44 +03:00
// scheduler <- fetchDMI.Scheduler.of("Grib", List(3, 27, 39, 51))
// simpleTask = IO.delay {
// val timeNow = LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm"))
// List(s"Task executed at $timeNow")
// }
// simpleScheduler = scheduler.scheduleTask(simpleTask).compile.drain
scheduler <- fetchDMI.Scheduler.of("Cleanup", List(1))
cleanupTask = DataService.deleteOldForecasts()
cleanupScheduler = scheduler.scheduleTask(cleanupTask).compile.drain
2023-12-17 22:48:24 +02:00
server <- Server.of(postgresService, fetch)
serverTask = server.run
2023-06-22 13:59:44 +03:00
exitCode <- (serverTask, schedulerTask, cleanupScheduler).parMapN((_, _, _) => ExitCode.Success)
} yield exitCode
}
}