protected def doSet()

in storehaus-mysql/src/main/scala/com/twitter/storehaus/mysql/MySqlStore.scala [241:260]


  protected def doSet(k: MySqlValue, v: MySqlValue): Future[Result] = {
    // mysql's insert-or-update syntax works only when a primary key is defined:
    // http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html
    // since we are not guaranteed that, we first check if key exists
    // and insert or update accordingly
    get(k).flatMap {
      case Some(value) =>
        toTwitterFuture(String2MySqlValueInjection.invert(v)).flatMap { vStr =>
          toTwitterFuture(String2MySqlValueInjection.invert(k)).flatMap { kStr =>
            updateStmt(Parameter.wrap(vStr.getBytes), Parameter.wrap(kStr.getBytes))
          }
        }
      case None =>
        toTwitterFuture(String2MySqlValueInjection.invert(v)).flatMap { vStr =>
          toTwitterFuture(String2MySqlValueInjection.invert(k)).flatMap { kStr =>
            insertStmt(Parameter.wrap(kStr.getBytes), Parameter.wrap(vStr.getBytes))
          }
        }
    }
  }