Delete old grib files more than 9hours old
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package data
|
||||
|
||||
import cats.effect.IO
|
||||
import cats.implicits.toTraverseOps
|
||||
import fs2.io.file.{Files, Path}
|
||||
import grib.{Grib, GribParser}
|
||||
|
||||
@@ -48,6 +49,22 @@ object DataService {
|
||||
}
|
||||
}
|
||||
|
||||
def deleteOldForecasts(maxHours: Int = 9): IO[List[String]] = {
|
||||
val nowUTC = ZonedDateTime.now(ZoneOffset.UTC)
|
||||
val oldThreshold = nowUTC.minusHours(maxHours)
|
||||
|
||||
for {
|
||||
fileList <- getFileList()
|
||||
fileDateList = fileList.flatMap(fileName =>
|
||||
getTimeFromName(fileName).map(extracted => (fileName, extracted._1))
|
||||
)
|
||||
deleteList = fileDateList.filter(_._2.isBefore(oldThreshold)).map(_._1)
|
||||
_ <- deleteList.traverse(name => Files[IO].delete(Path(s"$FOLDER/${name}")))
|
||||
// TODO change to log
|
||||
_ <- deleteList.traverse(name => IO.println(s"delete: $name"))
|
||||
} yield deleteList
|
||||
}
|
||||
|
||||
private def getTimeFromName(filename: String): Option[(ZonedDateTime, ZonedDateTime)] = {
|
||||
Try {
|
||||
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HHmm'Z'").withZone(ZoneId.of("UTC"))
|
||||
|
||||
@@ -6,11 +6,25 @@ import io.circe.syntax.EncoderOps
|
||||
|
||||
object DataServiceTest {
|
||||
def main(args: Array[String]): Unit = {
|
||||
// getForecasts().unsafeRunSync()
|
||||
deleteOldForecasts().unsafeRunSync()
|
||||
}
|
||||
|
||||
private def deleteOldForecasts(): IO[Unit] = {
|
||||
val program = for {
|
||||
forecasts <- DataService.getForecasts()
|
||||
_ <- IO.println(forecasts.asJson)
|
||||
deleteList <- DataService.deleteOldForecasts()
|
||||
// _ <- IO.println(deleteList.asJson)
|
||||
} yield ()
|
||||
|
||||
program.unsafeRunSync()
|
||||
program
|
||||
}
|
||||
|
||||
private def getForecasts(): IO[Unit] = {
|
||||
val program = for {
|
||||
forecasts <- DataService.getForecasts()
|
||||
_ <- IO.println(forecasts.asJson)
|
||||
} yield ()
|
||||
|
||||
program
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user