Что я пытаюсь сделать в 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?
scala-cats
validation
аппликативный стиль - person pamu   schedule 03.09.2018