Delete old grib files more than 9hours old
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package data
|
package data
|
||||||
|
|
||||||
import cats.effect.IO
|
import cats.effect.IO
|
||||||
|
import cats.implicits.toTraverseOps
|
||||||
import fs2.io.file.{Files, Path}
|
import fs2.io.file.{Files, Path}
|
||||||
import grib.{Grib, GribParser}
|
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)] = {
|
private def getTimeFromName(filename: String): Option[(ZonedDateTime, ZonedDateTime)] = {
|
||||||
Try {
|
Try {
|
||||||
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HHmm'Z'").withZone(ZoneId.of("UTC"))
|
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 {
|
object DataServiceTest {
|
||||||
def main(args: Array[String]): Unit = {
|
def main(args: Array[String]): Unit = {
|
||||||
|
// getForecasts().unsafeRunSync()
|
||||||
|
deleteOldForecasts().unsafeRunSync()
|
||||||
|
}
|
||||||
|
|
||||||
|
private def deleteOldForecasts(): IO[Unit] = {
|
||||||
|
val program = for {
|
||||||
|
deleteList <- DataService.deleteOldForecasts()
|
||||||
|
// _ <- IO.println(deleteList.asJson)
|
||||||
|
} yield ()
|
||||||
|
|
||||||
|
program
|
||||||
|
}
|
||||||
|
|
||||||
|
private def getForecasts(): IO[Unit] = {
|
||||||
val program = for {
|
val program = for {
|
||||||
forecasts <- DataService.getForecasts()
|
forecasts <- DataService.getForecasts()
|
||||||
_ <- IO.println(forecasts.asJson)
|
_ <- IO.println(forecasts.asJson)
|
||||||
} yield ()
|
} yield ()
|
||||||
|
|
||||||
program.unsafeRunSync()
|
program
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user