Я пытаюсь проверить конфигурацию в Scala. Сначала я конвертирую config json в соответствующий класс case, а затем проверяю его. Поскольку я хочу работать медленно, я собираю все проверки, которые не проходят, а не возвращаются после первой проверки, которая не удалась. Я планирую использовать аппликативные функторы, предоставленные библиотекой кошек Проверка кошек .
Проблема, с которой я сталкиваюсь, заключается в проверке формы, показанной в ссылке, для простого класса
final case class RegistrationData(username: String, password: String, firstName: String, lastName: String, age: Int)
// Below is the code snippet for applying validation from the link itself
{
(validateUserName(username),
validatePassword(password),
validateFirstName(firstName),
validateLastName(lastName),
validateAge(age)).mapN(RegistrationData)}
// A more complex case for validations
final case class User(name:String,adds:List[Addresses])
final case class Address(street:String,lds:List[LandMark])
final case class LandMark(wellKnown:Boolean,street:String)
В этом случае проверка в поле 'username' не зависит от проверки, скажем, 'firstName'. Но что, если
- Мне пришлось наложить некоторую валидацию типа, которая принимала бы 'firstName' и 'userName' (скажем, гипотетически расстояние Левенштейна, равное двум, должно быть <= некоторое число). </li>
- case-класс не был сделан из простых примитивов (Int, String), но имел в своем составе другие классы case. например, пользовательский класс, как указано выше.
В целом подходит ли аппликативный функтор для этого случая? Должен ли я даже собрать все неудачные проверки?
PS: простите, если упомянул что-то неправильно, я новичок в scala.