override def put()

in storehaus-core/src/main/scala/com/twitter/storehaus/UnpivotedStore.scala [33:45]


  override def put(pair: (K, Option[V])): Future[Unit] = {
    val (k, optV) = pair
    val (outerK, innerK) = split(k)
    store.get(outerK).map { mOpt: Option[Map[InnerK, V]] =>
      val optPair: Option[(InnerK, V)] = optV.map { innerK -> _ }
      (mOpt, optPair) match {
        case (Some(m), Some(p)) => Some(m + p)
        case (Some(m), None) => Some(m - innerK)
        case (None, Some(p)) => Some(Map(p))
        case (None, None) => None
      }
    }.foreach { newMap => store.put(outerK -> newMap) }.unit
  }