2023-05-25 13:51:45 +03:00
|
|
|
package app
|
|
|
|
|
|
2023-05-14 15:48:52 +03:00
|
|
|
import cats.effect._
|
2025-02-12 23:18:40 +02:00
|
|
|
import cats.implicits.catsSyntaxTuple3Parallel
|
|
|
|
|
import data.DataService
|
2023-12-17 22:48:24 +02:00
|
|
|
import db.{DBConnection, PostgresService}
|
2023-05-25 11:53:32 +03:00
|
|
|
import fetch.{FetchService, FileFetchScheduler}
|
2023-05-25 13:51:45 +03:00
|
|
|
import server.Server
|
2023-05-14 15:48:52 +03:00
|
|
|
|
|
|
|
|
object Main extends IOApp {
|
|
|
|
|
def run(args: List[String]): IO[ExitCode] = {
|
2023-05-20 20:20:14 +03:00
|
|
|
for {
|
2023-12-10 18:47:56 +02:00
|
|
|
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
|
|
|
|
2023-05-21 22:37:33 +03:00
|
|
|
fetch <- FetchService.of
|
2023-12-17 22:48:24 +02:00
|
|
|
fileFetchScheduler <- FileFetchScheduler.of(postgresService, fetch)
|
2023-05-20 21:53:03 +03:00
|
|
|
schedulerTask = fileFetchScheduler.run.compile.drain
|
2023-06-22 13:59:44 +03:00
|
|
|
|
2025-02-12 23:18:40 +02: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)
|
2023-05-21 22:37:33 +03:00
|
|
|
serverTask = server.run
|
2023-06-22 13:59:44 +03:00
|
|
|
|
2025-02-12 23:18:40 +02:00
|
|
|
exitCode <- (serverTask, schedulerTask, cleanupScheduler).parMapN((_, _, _) => ExitCode.Success)
|
2023-05-20 20:20:14 +03:00
|
|
|
} yield exitCode
|
2023-05-14 15:48:52 +03:00
|
|
|
}
|
|
|
|
|
}
|