Я использую Slick 3.3.0, и у меня есть сценарий использования для обновления таблицы паролей, но элемент поиска - это нечто, называемое LoginInfo
, которое затем связывается с целевым обновляемым PasswordInfo
через его user_id
это очень упрощенная версия моего варианта использования:
def update(id: Long, hasher: String, password: String, salt: Option[String]): Future[ExtPasswordInfo] = {
// first look up a loginInfo by some id, then find the connected userId and use
// it to update the PasswordInfo.
val action = (for {
loginInfo <- LoginInfo if loginInfo.id === id
passwordInfo <- PasswordInfo if passwordInfo.userId === loginInfo.userId
} yield passwordInfo).update(PasswordInfoRow(??? /* <<<< I need userId here */, hasher, password, salt))
db.run(action)
}
Но после того, как запрос выдаст passwordInfo
и я включу метод update
, у меня нет доступа к ключу userId
.
Если бы это было возможно, мне понадобилось бы:
... yield passwordInfo).update(pi => PasswordInfoRow(pi.userId, ...
Как это сделать в Slick?