From bd302618d3940da87c7735444448b5d6f5d7b458 Mon Sep 17 00:00:00 2001 From: Guntis Smaukstelis Date: Tue, 23 May 2023 19:16:57 +0300 Subject: [PATCH] Refactor FileFetchScheduler --- src/main/scala/fetch/FileFetchScheduler.scala | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/main/scala/fetch/FileFetchScheduler.scala b/src/main/scala/fetch/FileFetchScheduler.scala index d95e71a..f4b8e3f 100644 --- a/src/main/scala/fetch/FileFetchScheduler.scala +++ b/src/main/scala/fetch/FileFetchScheduler.scala @@ -9,29 +9,30 @@ import org.typelevel.log4cats.slf4j.Slf4jLogger object FileFetchScheduler { def of(dbService: DBService, fetch: FetchService): IO[FileFetchScheduler] = { - Slf4jLogger.create[IO].map { - new FileFetchScheduler(dbService, fetch, _) + Scheduler.of.flatMap { scheduler => + Slf4jLogger.create[IO].map { + new FileFetchScheduler(dbService, fetch, scheduler, _) + } } } } -class FileFetchScheduler(dbService: DBService, fetch: FetchService, log: Logger[IO]) { + +class FileFetchScheduler(dbService: DBService, fetch: FetchService, scheduler: Scheduler, log: Logger[IO]) { def run: Stream[IO, Unit] = { val fetchTask = FileNameService.generateCurrentHour.flatMap(fetch.fetchSingleFile) - Stream.eval(Scheduler.of).flatMap { scheduler => - scheduler.scheduleTask(fetchTask) - .evalMap { - case Left(fetchErr) => - log.error(s"Fetch error: $fetchErr") - case Right((name, content)) => - dbService.save(name, content).attempt.flatMap { + scheduler.scheduleTask(fetchTask) + .evalMap { + case Left(fetchErr) => + log.error(s"Fetch error: $fetchErr") + case Right((name, content)) => + dbService.save(name, content).attempt.flatMap { + case Left(err) => log.error(s"error: $err") + case Right(saveResult) => saveResult match { case Left(err) => log.error(s"error: $err") - case Right(saveResult) => saveResult match { - case Left(err) => log.error(s"error: $err") - case Right(savedName) => log.info(s"saved: $savedName") - } + case Right(savedName) => log.info(s"saved: $savedName") } - } - } + } + } } } \ No newline at end of file