in lambda/src/main/scala/pricemigrationengine/handlers/CohortTableDatalakeExportHandler.scala [37:63]
private def localTempFile() =
ZIO.acquireRelease(
ZIO
.attempt(Files.createTempFile(new File(TempFileDirectory).toPath, "CohortTableExport", "csv"))
.mapError(throwable =>
CohortTableDatalakeExportFailure(s"Failed to create temp file in $TempFileDirectory: ${throwable.getMessage}")
)
)(path => ZIO.succeed(Try(Files.delete(path))))
private def openOutputStream(path: Path) =
ZIO.fromAutoCloseable(
ZIO
.attempt(Files.newOutputStream(path))
.mapError(throwable =>
CohortTableDatalakeExportFailure(s"Failed to write to temp files $path: ${throwable.getMessage}")
)
)
private def print(
cohortStream: ZStream[CohortTable, CohortFetchFailure, CohortItem],
cohortSpec: CohortSpec,
outputStream: OutputStream
) =
ZIO.scoped(for {
printer <- buildPrinter(outputStream)
count <- cohortStream.mapZIO(printItem(cohortSpec, printer)).runCount
} yield count)