private def plusM[K, V]()

in storehaus-core/src/main/scala/com/twitter/storehaus/PivotOps.scala [63:78]


  private def plusM[K, V](
    l: Map[K, Future[Option[List[V]]]],
    r: Map[K, Future[Option[List[V]]]]
  ): Map[K, Future[Option[List[V]]]] =
    (r /: l) { case (m, (k, futureOptV)) =>
        val newV = for {
          leftOptV <- futureOptV
          rightOptV <- m.getOrElse(k, Future.None)
        } yield (leftOptV, rightOptV) match {
          case (None, None) => None
          case (None, Some(v)) => Some(v)
          case (Some(v), None) => Some(v)
          case (Some(left), Some(right)) => Some(left ++ right)
        }
        m + (k -> newV)
    }