Refactor to one scheduler, separated csv/grib under one folder
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import cats.effect._
|
||||
import cats.implicits.catsSyntaxTuple4Parallel
|
||||
import data.DataService
|
||||
import db.{DBConnection, PostgresService}
|
||||
import fetch.csv.{FetchService, FileNameService}
|
||||
import fetch.dmi
|
||||
import scheduler.Scheduler
|
||||
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
|
||||
|
||||
scheduler <- Scheduler.of
|
||||
dataService <- DataService.of
|
||||
fetchService <- FetchService.of
|
||||
|
||||
fetchCsvList = new FileNameService().generateCurrentHour.flatMap(fetchService.fetchSingleFile)
|
||||
fetchCsvTask = scheduler.scheduleTask("Fetch CSV", List(31), fetchCsvList).compile.drain
|
||||
|
||||
cleanupTask = scheduler.scheduleTask("Cleanup", List(1), dataService.deleteOldForecasts()).compile.drain
|
||||
|
||||
fetchGrib <- dmi.FetchService.of(dataService)
|
||||
fetchGribTask = scheduler.scheduleTask("Fetch Grib", List(2), fetchGrib.fetchRecentForecasts()).compile.drain
|
||||
|
||||
server <- Server.of(postgresService, dataService, fetchService)
|
||||
serverTask = server.run
|
||||
|
||||
exitCode <- (serverTask, fetchCsvTask, cleanupTask, fetchGribTask).parMapN((_, _, _, _) => ExitCode.Success)
|
||||
} yield exitCode
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user