20 lines
485 B
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)
|
|
}
|
|
}
|
|
|
|
}
|