September 2018
Intermediate to advanced
398 pages
9h 43m
English
Here is the implementation of BatchProducer.processOneBatch. As is often the case, the implementation is much shorter than the test:
val WaitTime: FiniteDuration = 59.minuteval ApiLag: FiniteDuration = 5.secondsdef processOneBatch(fetchNextTransactions: IO[Dataset[Transaction]], transactions: Dataset[Transaction], saveStart: Instant, saveEnd: Instant)(implicit appCtx: AppContext): IO[(Dataset[Transaction], Instant, Instant)] = { import appCtx._ val transactionsToSave = filterTxs(transactions, saveStart, saveEnd) for { _ <- BatchProducer.save(transactionsToSave, appCtx.transactionStorePath) _ <- IO.sleep(WaitTime) beforeRead <- currentInstant end = beforeRead.minusSeconds(ApiLag.toSeconds) nextTransactions <- ...Read now
Unlock full access