Size: a a a

Scala User Group

2020 September 29

P

Python in Scala User Group
Ну я не обманываю, оно проверяет во время компиляции. Соединяется с базой данных из конфигурации и проверяет на ней запросы: https://getquill.io/#quotation-query-probing
источник

AD

Apache DOG™ in Scala User Group
Python
Ну я не обманываю, оно проверяет во время компиляции. Соединяется с базой данных из конфигурации и проверяет на ней запросы: https://getquill.io/#quotation-query-probing
Плюсану кошару
источник

SA

Sergey Alaev in Scala User Group
Это немного разное, примерно как юнит и интеграционные тесты. Есть две задачи - а) при обновлении схемы базы обновить код и ничего не забыть б) убедиться, что слой DAO рабочий
Можно решить обе проблемы интеграционным тестом - но тогда мы получаем длинный turnaround
Можно использовать тот или иной probing - это относительно быстрый turnaround но менее надежные гарантии работоспособности DAO
А можно использовать кодогенерацию и тесты на DAO - это максимально быстрый turnaround + гарантии работоспособности.
источник

λ

λoλdog in Scala User Group
Чем он быстрее того, что сказал кот?
источник

SA

Sergey Alaev in Scala User Group
Python
Ну я не обманываю, оно проверяет во время компиляции. Соединяется с базой данных из конфигурации и проверяет на ней запросы: https://getquill.io/#quotation-query-probing
На стабильность Quill жаловались. К тому же, невозможность собрать проект без доступной базы с нужной версией схемы - так себе фишка.
источник

P

Python in Scala User Group
Sergey Alaev
На стабильность Quill жаловались. К тому же, невозможность собрать проект без доступной базы с нужной версией схемы - так себе фишка.
А с кодогенерацией как собрать без базы? Генерированный код комитить? А если забудешь кодогенерацию запустить?
источник

SA

Sergey Alaev in Scala User Group
Python
А с кодогенерацией как собрать без базы? Генерированный код комитить? А если забудешь кодогенерацию запустить?
Да, коммитить генеренный код. Если абстрагироваться от догмы "коммитить генеренный код плохо", конечно)
источник

P

Python in Scala User Group
Sergey Alaev
Да, коммитить генеренный код. Если абстрагироваться от догмы "коммитить генеренный код плохо", конечно)
Дело не в догме, а в том что это ручная операция которую можно забыть сделать и получится тоже самое что и проверка в рантайме 😳
источник

SA

Sergey Alaev in Scala User Group
Python
Дело не в догме, а в том что это ручная операция которую можно забыть сделать и получится тоже самое что и проверка в рантайме 😳
Как ты её можешь забыть?) если ты обновишь скипты БД, но не перегенеришь модель, то у тебя интеграционные тесты упадут
источник

P

Python in Scala User Group
Sergey Alaev
Как ты её можешь забыть?) если ты обновишь скипты БД, но не перегенеришь модель, то у тебя интеграционные тесты упадут
Но тоже самое же можно сказать и про работу без кодогенерации? Типа тесты упадут?

Или у вас интеграционные тесты - это очень долгий процесс, который локально не запустить, а схема меняется так часто и так сильно, что нужен локальный инструмент для проверки?
источник

SA

Sergey Alaev in Scala User Group
Python
Но тоже самое же можно сказать и про работу без кодогенерации? Типа тесты упадут?

Или у вас интеграционные тесты - это очень долгий процесс, который локально не запустить, а схема меняется так часто и так сильно, что нужен локальный инструмент для проверки?
Можно) Отличается только вероятность ошибки. Забыть вызвать генератор - это редкий случай, поэтому обнаружить ошибку можно потом. А вот забыть обновить какую-то модель или запрос при изменении схемы - это случается регулярно, поэтому ошибка должна обнаруживаться сразу.

Да, если в приложении больше 10 таблиц, то почти каждая доработка требует доработки схемы. Если же таблиц мало, то никакой фреймворк не нужен, можно дуби брать и не заморачиваться.
источник

λ

λoλdog in Scala User Group
так дуби можно брать если и больше
источник

λ

λoλdog in Scala User Group
берешь просто пишешь тест с тест контеинером и IOChecker
источник

λ

λoλdog in Scala User Group
и проверяешь, что все твои квери валидные
источник

P

Python in Scala User Group
Sergey Alaev
Можно) Отличается только вероятность ошибки. Забыть вызвать генератор - это редкий случай, поэтому обнаружить ошибку можно потом. А вот забыть обновить какую-то модель или запрос при изменении схемы - это случается регулярно, поэтому ошибка должна обнаруживаться сразу.

Да, если в приложении больше 10 таблиц, то почти каждая доработка требует доработки схемы. Если же таблиц мало, то никакой фреймворк не нужен, можно дуби брать и не заморачиваться.
Можно так же, вручную, вызывать query probing 😊
источник

SA

Sergey Alaev in Scala User Group
λoλdog
так дуби можно брать если и больше
Можно, но это подвиг из серии "давай напишем большую систему на питоне и покроем её тестами, зачем передавать компилятору работу, которую можно сделать руками"
источник

λ

λoλdog in Scala User Group
причем тут руками?
источник

λ

λoλdog in Scala User Group
обычный тест
источник

λ

λoλdog in Scala User Group
да и компилятор на самом деле схему не генерирует, а если у вас таска генерации в компаиле, то эт очень грустно
источник

SA

Sergey Alaev in Scala User Group
Python
Можно так же, вручную, вызывать query probing 😊
компайлтаймовый есть только в квилл и он требует наличия базы, рантайм - медленно. Ошибки компиляции намного нагляднее.
источник