Size: a a a

2020 November 20

KK

Kirill (Cykooz) Kuzm... in rannts
Байт Словович
ты сравниваешь разные варианты реализации.. Мне честно пофиг. Я хочу просто самому этого не делать. Я не хочу заводить 10 полей для пидантика. Я хочу магию которая сама заведет.
А где там 10? В худшем случае 4. А обычно достаточно 2-ух на один range, т.к. хватвает, например, gt и lte
источник

БС

Байт Словович... in rannts
ну мы же за универсальный подход.. еще gte, le, eq, neq..
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Байт Словович
ну мы же за универсальный подход.. еще gte, le, eq, neq..
Это как преждевременная оптимизация. Ещё и тестами покрывать эти варианты надо бы
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Байт Словович
ты сравниваешь разные варианты реализации.. Мне честно пофиг. Я хочу просто самому этого не делать. Я не хочу заводить 10 полей для пидантика. Я хочу магию которая сама заведет.
Вот затащат макросы в питон - сможешь макросами такое автоматизировать 😊
источник

БС

Байт Словович... in rannts
не надо, если есть фреймворк который за тебя это делает. То есть и моделки валидации сгенерит и в орм правильный запрос сделает
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Ну это скорее всего надо какой-то фреймворк уровня Django - "всё своё ношу с собой". А всякие микро-пикро фреймворки просто не потянут сделать равнозначные реализации для разных комбинаций десериализаиторов и ОРМ/не-ОРМ
источник

SA

Sergey Arkhipov in rannts
У меня была такая проблема. Оказалось проще с точки зрения разработки и поддержки не плодить поля, а просто добавлять префикс: =2020-11, ~2020-11, >2020-11 и тп. Удобно и клиенту, и серверу, и дебагу глазами
источник

БС

Байт Словович... in rannts
кстати да.. иногда надо еще строки сравнить. Где то нужно exact, где то like xxx%, а где то вхождение, то есть %yyy%, ну и в самом редком случае regexp.
Попробую сейчас на pydantic такой валидатор написать..
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Sergey Arkhipov
У меня была такая проблема. Оказалось проще с точки зрения разработки и поддержки не плодить поля, а просто добавлять префикс: =2020-11, ~2020-11, >2020-11 и тп. Удобно и клиенту, и серверу, и дебагу глазами
Такие варианты могут плохо подходить, когда надо выдавать формальную схему параметров для API (OpenAPI, например). Например что бы сгенерить на её основе клиентский код. Все такие схемы умеют только в простые типы данных + коллекции. Через них будет сложно описать "язык" запросов к хитрым полям.
источник

SA

Sergey Arkhipov in rannts
Да, совершенно согласен. Я не представляю, как это можно описать где-то, кроме обычного документа
источник

KK

Kirill (Cykooz) Kuzm... in rannts
А в языках со статической типизацией это вообще может стать попа-болью (особенно если в этих языках нету union-типов). Ну или перебрасываться строками до самого нижнего уровня, где строка будет парситься и конвертится в конкретный запрос к базе.
источник

SA

Sergey Arkhipov in rannts
В таких языках часто есть возможность повлиять на процесс десериализации. Просто у тебя это поле - не тип даты, а скорее структура (дата, компаратор)
источник

БС

Байт Словович... in rannts
с типизированными языками мноого проблем. Например наш клиент который писал на си, просил слать такие json чики
[{"name": "xx", "value": "yyy}, {...}] 
вместо
{xx: yyy}
ибо десерелизатор не позволял..
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Если такое использовать для строковых типов данных, то вероятно понадобится дополнительное экранирование, что бы правильно понять, >ABC% - это:
- "больше чем ABC%"
- или это "точное совпадение со строкой >ABC%"  
- или может "найти всё что начинается на подстроку >ABC"
источник

БС

Байт Словович... in rannts
я тоже про это подумал. Тут можно просто сказать, чтобы клиент всегда слал операцию в начале строки, если возможны коллизии..
источник

SA

Sergey Arkhipov in rannts
Кирилл, поэтому всегда есть обязательный префикс. У тебя такая проблема из-за неявностей
источник

БС

Байт Словович... in rannts
==>ABC%
источник

БС

Байт Словович... in rannts
тут уже очевидно, что хотели
источник

SA

Sergey Arkhipov in rannts
comparator, datetime = data[0], data[1:], грубо говоря
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Байт Словович
с типизированными языками мноого проблем. Например наш клиент который писал на си, просил слать такие json чики
[{"name": "xx", "value": "yyy}, {...}] 
вместо
{xx: yyy}
ибо десерелизатор не позволял..
Да, там проблемы с "рандомными" именами полей. Если список полей фиксированный - то проблем нет. А если рандомный - то это только в HashMap какой-то можно запихнуть и самому потом корячится с его разбором. Это только в питоне со словариками удобно работать.
источник