package ch_02

import cats.effect.*
import java.util.Scanner

object resources:

  // ex. refactor ch_02.brackets.fileReader
  def fileReader(path: String): IO[Unit] =
    Resource.make(ch_02.brackets.fileScanner(path))(scanner => IO(scanner.close())).use(ch_02.brackets.scannerReader)

  // ex. refactor ch_02.brackets.connectionFromConfig
  // resources compose, brackets do not
  def connectionFromConfig(path: String): IO[Unit] =
    val connection =
      for
        scanner <- Resource.make(ch_02.brackets.fileScanner(path))(scanner => IO(scanner.close()))
        conn    <- Resource.make(IO.pure(Connection(scanner.nextLine)))(_.close)
      yield conn

    connection.use(_.open)