protected [mysql] def executeMultiUpdate[K1 <: MySqlValue]()

in storehaus-mysql/src/main/scala/com/twitter/storehaus/mysql/MySqlStore.scala [117:134]


  protected [mysql] def executeMultiUpdate[K1 <: MySqlValue](
      kvs: Map[K1, MySqlValue]): Future[Result] = {
    val updateSql = MULTI_UPDATE_SQL_PREFIX + buildPlaceholders("WHEN ? THEN ?", kvs.size, " ") +
      MULTI_UPDATE_SQL_INFIX +  buildPlaceholders("?", kvs.size, ",", "(", ")")

    val updateParams = kvs.map { case (k, v) =>
      (String2MySqlValueInjection.invert(k).map(_.getBytes),
        String2MySqlValueInjection.invert(v).map(_.getBytes))
    }
    // params for "WHEN ? THEN ?"
    val updateCaseParams =
      updateParams.flatMap { case (k, v) => List(k, v) }.toSeq
        .map(_.map(Parameter.wrap[Array[Byte]]))
    // params for "IN (?, ?, ?)"
    val updateInParams = updateParams.keys.toSeq.map(_.map(Parameter.wrap[Array[Byte]]))
    toTwitterFuture(updateCaseParams ++ updateInParams)
      .flatMap(ps => client.prepare(updateSql)(ps: _*))
  }