Small fixes and cleanup

This commit is contained in:
Guntis Smaukstelis
2023-05-24 16:01:48 +03:00
parent c1625e75fa
commit 77026a9cb0
3 changed files with 12 additions and 16 deletions
+9 -11
View File
@@ -21,17 +21,17 @@ object DBService {
class DBService(log: Logger[IO]) {
private val dateFormatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmm")
private val dataPath = "./data"
private val nonDuplicatedLines = 34 // takes only first 34 lines of data as rest after 'Zosēni' is duplicated
// takes only first 34 lines of data as rest after 'Zosēni' is duplicated
def readFile(fileName: String): IO[List[String]] = {
val file = new File(dataPath, fileName)
val sourceResource = Resource.fromAutoCloseable(IO(Source.fromFile(file)))
sourceResource.use(source => IO(source.getLines().take(34).toList)).handleErrorWith(_ => IO.pure(List.empty))
sourceResource.use(source => IO(source.getLines().take(nonDuplicatedLines).toList)).handleError(_ => List.empty)
}
private def readFileNames(path: String): IO[List[String]] =
IO(new File(path).listFiles.toList.map(_.getName))
.handleErrorWith(_ => IO.pure(List.empty))
.handleError(_ => List.empty)
private def inRange(fileName: String, from: LocalDateTime, to: LocalDateTime): Boolean = {
def fileToDateTime(fileName: String): Option[LocalDateTime] = {
@@ -58,11 +58,9 @@ class DBService(log: Logger[IO]) {
val path = Paths.get(s"$dataPath/$fileName")
IO(Files.writeString(path, content))
.redeemWith(
error => IO(Left(error))
// .flatTap(_ => log.error(s"Write file '$fileName' failed with error: ${error.getMessage}"))
error => IO(Left(error)) // <* log.error(s"Write file '$fileName' failed with error: ${error.getMessage}")
,
_ => IO(Right(fileName))
// .flatTap(_ => log.info(s"write: $fileName"))
_ => IO(Right(fileName)) // <* log.info(s"write: $fileName")
)
}
@@ -71,10 +69,10 @@ class DBService(log: Logger[IO]) {
val formatter = DateTimeFormatter.ofPattern("yyyyMMdd")
for {
fileNames <- readFileNames(dataPath)
datesStr <- IO.pure(fileNames.map(_.take(8)).distinct) // take yyyyMMdd
dates <- IO.pure(datesStr.flatMap(str => {
Try(LocalDate.parse(str, formatter)).toOption
}))
datesStr <- IO(fileNames.map(_.take(8)).distinct) // take yyyyMMdd
dates <- datesStr.traverse { str =>
IO(LocalDate.parse(str, formatter)).option
}.map(_.flatten)
} yield dates.sorted
}
+2 -4
View File
@@ -42,11 +42,9 @@ class FetchService(fileNameService: FileNameService, log: Logger[IO]) {
val request = Request[IO](Method.GET, url).withHeaders(Authorization(basicCredentials))
client.expect[String](request).redeemWith(
error => IO(Left(error))
// .flatTap(_ => log.error(s"Request failed to url: $url with error: ${error.getMessage}"))
error => IO(Left(error)) // <* log.error(s"Request failed to url: $url with error: ${error.getMessage}")
,
fileContent => IO(Right((fileName, fileContent)))
// .flatTap(_ => log.info(s"Fetched: $fileName"))
fileContent => IO(Right((fileName, fileContent))) // <* log.info(s"Fetched: $fileName")
)
}
+1 -1
View File
@@ -23,7 +23,7 @@ object Main {
log <- Slf4jLogger.create[IO]
dbService <- DBService.of
lines <- dbService.getInRange(from, to)
parsed <- IO.pure(Parser.queryData(userQuery, lines))
parsed <- IO(Parser.queryData(userQuery, lines))
_ <- log.info(parsed.asJson.toString)
} yield ()
}