У меня есть Slick Table с несколькими столбцами, и я хочу обновить некоторые из этих столбцов на основе пользовательского ввода. Моя таблица выглядит так:
class Users(_tableTag: Tag) extends Table[User](_tableTag, "users") {
def * = (id, name, email, phone, passwordHash, createdAt) <> (User.tupled, User.unapply)
val id: Rep[Long] = column[Long]("id", O.AutoInc, O.PrimaryKey)
val name: Rep[String] = column[String]("name")
val email: Rep[String] = column[String]("email")
val phone: Rep[String] = column[String]("phone")
val passwordHash: Rep[String] = column[String]("password_hash")
val createdAt: Rep[java.sql.Timestamp] = column[java.sql.Timestamp]
("created_at", SqlType("TIMESTAMP NOT NULL DEFAULT current_timestamp"))
}
Класс case User
выглядит следующим образом:
case class User(
id: Long,
name: String,
email: String,
phone: String,
passwordHash: String,
createdAt: Timestamp)
Я использую slick с Play, поэтому я решил создать класс случая обновления на основе предоставленных пользователем необязательных полей json, например:
case class UserUpdate(
id: Long,
name: Option[String],
email: Option[String],
phone: Option[String],
passwordHash: Option[String])
Как я могу сделать гладкий запрос 3.1, который обновляет поля типа Some(value)
в этом объекте обновления?
oldUser: User
и сделатьUserUpdate.field.getOrElse(oldUser.field)
- person insan-e   schedule 11.04.2017