Комментарии 4
Не совсем понял про применение, описанное в начале — условия выборки записей в базе данных. Ожидал чего-то вроде типизированного способа составлять sql запросы.
И мне кажется, будет хорошо смотреться апи на основе std::expected, сейчас объявление error и явный if зашумляют код. В стандарт expected не вошёл, но библиотечных реализаций уже хватает.
В мотивации все же описано не применение, а откуда вообще задумка пошла. На основе правил валидатора можно было бы составлять SQL-запросы, например _[field1](value(gt,100) ^OR^ value(eq,1)) транслировать в "WHERE field1>100 OR field1=1". Сейчас библиотека написана так, что это в принципе можно сделать, надо только разработать соответствующий adapter
. Сама библиотека таких адаптеров не содержит. Может позже напишу статью с примером такого применения. Эта статья все же про валидацию данных.
Да, if
зашумляют код, но для этого eсть версия с exception
. Посмотрю на std::expected
, спасибо за совет.
Статье очень не хватает раздела, в котором было бы показано как выглядит некий прикладной код без использования cpp-validator и как этот же код выглядит с cpp-validator. Чтобы сразу и наглядно было видно, какие преимущества можно получить от использования cpp-validator. А то у вас перечень возможностей есть, но как все это ложится на реальный код читателю нужно додумывать самостоятельно.
Валидация данных в C++ с использованием библиотеки cpp-validator