То, что я пытаюсь сделать в Scala 2.11, и у akka есть один класс дел, но две разные проверки, основанные на том, какой маршрут пробивается.
Например, давайте рассмотрим класс case ниже
case class User(_id: String, name: String, age: Int, address: String)
Теперь, пока проложен маршрут /create
, мне не нужно _id
, но мне нужны все остальные поля.
Но пока проложен маршрут /update
, мне нужны _id
и поля, которые должны быть обновлены (это может быть одно или все три)
Только объявление Option
не служит цели, потому что тогда мой /create
маршрут идет на бросок.
Даже расширение case-классов на самом деле не работает без проблем (слишком много дублирования кода).
Я бы с удовольствием, если бы что-то подобное было возможно
case class User(_id: String, name: String, age: Int, address: String)
case class SaveUser() extends User {
require(name.nonEmpty)
require(age.nonEmpty)
require(address.nonEmpty)
}
case class UpdateUser() extends User {
require(_id.nonEmpty)
}
Есть ли элегантное решение для этого? Или мне нужно создать два одинаковых класса case?