Refactor FileFetchScheduler
This commit is contained in:
@@ -9,29 +9,30 @@ import org.typelevel.log4cats.slf4j.Slf4jLogger
|
|||||||
|
|
||||||
object FileFetchScheduler {
|
object FileFetchScheduler {
|
||||||
def of(dbService: DBService, fetch: FetchService): IO[FileFetchScheduler] = {
|
def of(dbService: DBService, fetch: FetchService): IO[FileFetchScheduler] = {
|
||||||
Slf4jLogger.create[IO].map {
|
Scheduler.of.flatMap { scheduler =>
|
||||||
new FileFetchScheduler(dbService, fetch, _)
|
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] = {
|
def run: Stream[IO, Unit] = {
|
||||||
val fetchTask = FileNameService.generateCurrentHour.flatMap(fetch.fetchSingleFile)
|
val fetchTask = FileNameService.generateCurrentHour.flatMap(fetch.fetchSingleFile)
|
||||||
|
|
||||||
Stream.eval(Scheduler.of).flatMap { scheduler =>
|
scheduler.scheduleTask(fetchTask)
|
||||||
scheduler.scheduleTask(fetchTask)
|
.evalMap {
|
||||||
.evalMap {
|
case Left(fetchErr) =>
|
||||||
case Left(fetchErr) =>
|
log.error(s"Fetch error: $fetchErr")
|
||||||
log.error(s"Fetch error: $fetchErr")
|
case Right((name, content)) =>
|
||||||
case Right((name, content)) =>
|
dbService.save(name, content).attempt.flatMap {
|
||||||
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 Left(err) => log.error(s"error: $err")
|
||||||
case Right(saveResult) => saveResult match {
|
case Right(savedName) => log.info(s"saved: $savedName")
|
||||||
case Left(err) => log.error(s"error: $err")
|
|
||||||
case Right(savedName) => log.info(s"saved: $savedName")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user