Павел
И если ты ради этого устроил сыр бор - это отдельный вопрос...
Кирилл
Да если тебе не хватает встроенных констрейнтов - пиши кастомные валидаторы, ну блин
The Ant
Павел
The Ant
Павел
Хотя тут и кей не нужен
The Ant
И это самый простой пример
Кирилл
The Ant
The Ant
Я вообще не разделяю первичную не первичную.
Павел
The Ant
Надо проверить правильный ли логин пароль - взял и проверил, потом юзера авторизовал
Павел
У тебя есть ошибки валидации, а есть ошибки логики, проверки логики.
The Ant
Нету, щас наговоришь
Иван
The Ant
Да с чего ты решил то? По твоему валидатор в базу сходить не может?
Павел
Павел
Точнее может, но это уже не первичная
The Ant
Или доку почитай хотябы. Может.
Иван
Иван
валидатор - это название компонента
он может чекать авторизацию
Павел
Это удобно но как то смазывается
Konstantin
как ты его сделаешь, не сходив в базу?
Konstantin
валидатор - это далеко не только "проверить на регулярку" или "чтобы количество символов было не меньше и не больше"
Konstantin
Кирилл
Konstantin
блокировку написать?
Konstantin
завести семафор, что вот, мол, с таким-то ключом записи не допускать
Konstantin
как конкретно - вариантов довольно много, ограничены фантазией
Павел
блокировку написать?
Т.е. мы идем в валидтор, делаем лок селект фор апдейт, потом делаем логику на 5 сек и нас все жлут 5 сек?
Иван
если валидатор вызывается в миддлваре, то вообще не видно, что авторизацию чекнет класс, у которого в неймспейсе что-то про валидацию
Кирилл
Павел
Технически в валидатор (констрейнт) ДТО хоть регистрацию можно запихать, но это скрыто, я за максимальную прозрачность.
Кирилл
Иван
Павел
The Ant
Совершенно верно
Ну вот смотри. Юзер отправляет логин пароль. Далее, если такой юзер существует и пароль ему соответствует выдаётся токен. Через специальный объект.
Задачи проверять пару у выписывателя токена нету. Его задача выдать токен и все.
Какую альтернативу предложишь в этой схеме?
Иван
но в принципе можно в атрибут правило для лока прописать
Konstantin
Т.е. мы идем в валидтор, делаем лок селект фор апдейт, потом делаем логику на 5 сек и нас все жлут 5 сек?
не все, а только по этому ключу. то есть тот, кто пишет в эту таблицу, теперь тоже проверяет этот лок. выглядит мутновато, да, но если логика того требует, куда деваться-то? не все системы позволяют иметь несколько записей с одним ключом и ждать какого-то компакшна (какая-нибудь транзакция, например).
но тебе об этом надо сообщить в форме/апишке, где там у тебя валидатор
Иван
Павел
Остальное - уже ближе к логике идет
Konstantin
можно сколько угодно теоретизировать про "должен/не должен", но честно говоря твои аргументы слабоваты. валидаторы имеют полное право обращаться в внешним источникам. у меня вон есть валидаторы в компании (мы работаем на рынке приватности твоих данных), которые проверяют при регистрации, не юзаешь ли ты скомпрометированный пароль, делая запрос к haveibeenpwned.com
Konstantin
не особо понятно кто, если не валидатор, должен сказать "нет, бро, 123456 пароль не лучший, давай другой"
Павел
Иван
если у корпоративного клиента при заказе надо проверять кучу ограничений, это валидация
Konstantin
^ сходив в пять баз и справочников
Павел
Konstantin
нет никакой первичной и вторичной валидации
Konstantin
то, что ты называешь "первичная" (кстати, кажется, это ты сам придумал) - это жс тебе в браузере делает, ну по масочке там проверить, по регулярочке
Павел
Иван
проверка синтаксиса емейла ничем не отличается от проверки лимита на время поездки
Иван
хотя конечно отличается немного
Konstantin
ну вот не очень понятно, почему один валидатор может подчеркнуть красным "инн невалиден" (потому что там цифр мало), а другой (который в базу сходит и проверит, что нет такого инна в налоговой) - уже нет. где между ними разница
Павел
Ладно, ок. В чем разница между проверкой одного конфига, справочника, или например 10, которые асинхронные, возможно под сагой и потом конпенсаций? Где у вас грань между валидацией и безнес рулом?
Konstantin
поэтому, всё это херня, первичный, вторичный. есть задача валидации, есть всякие способы делать композабл правила, группы и прочее. от этого надо отталкиваться, а не вводить странные ограничения "валидатор не может в базу!!11"
Иван
Иван
поэтому бизнесрул - это вообще хз что
Павел
То что баланс не может быть меньше 0, но если есть кредитный лимит то все же может ? Это тоже валидация?
Konstantin
не забывай, что валидация - это первый шаг бизнес-логики по пути следования ввода пользователя (формы, запроса)
Иван
типа при деактивации пользователя снимать с публикации его материалы - точно бизнесрул
а инн проверить у налоговой скорее валидация
Кирилл
Кирилл
За такое убивать можно
Павел
Konstantin
тебе надо это в формочке отобразить
Иван
Konstantin
"вы не можете юзать этот инн, у вас тут задолженность и делопроизводство"
Кирилл
Павел