fancadescala/core/src/main/scala/tf/bug/fancadetagless/Block.scala

20 lines
485 B
Scala

package tf.bug.fancadetagless
import cats.effect.Sync
import cats.implicits._
import io.chrisdavenport.fuuid.FUUID
case class Block(uuid: FUUID, make: Make, pins: Set[Pin])
object Block {
def fromMake[F[_]](make: Make)(implicit s: Sync[F]): F[Block] = {
val uuid = FUUID.randomFUUID[F]
val pins = make.pins.traverse[F, Pin] { case (tpe, dir) => Pin.fromMake(tpe, dir) }
(uuid, pins).mapN {
case (u, v) => Block(u, make, v.toSet)
}
}
}