Size: a a a

Clojure — русскоговорящее сообщество

2021 February 18

А

Андрей in Clojure — русскоговорящее сообщество
Sergey Trofimov
ну это как бы вопрос, реально ли написать такой запрос 😊
всё реально
думаю даже статичный запрос можно написать, который будет не учитывать в фильтре незаданные поля фильтра
😊, но сделать это смогут далеко не все. Вернее для этого надо будет быть гуру в SQL запросах
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Андрей
😊, но сделать это смогут далеко не все. Вернее для этого надо будет быть гуру в SQL запросах
я тебе так скажу
лучше всё-таки понимать SQL, когда работаешь с базой данных, а иначе получается как обезьяна с гранатой 😊
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
всякие orm делают магию, но когда что-то идёт не так...
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
но это, конечно, право разработчика, учить ему sql или не учить 😊
источник

А

Андрей in Clojure — русскоговорящее сообщество
Honeysql это же не совсем ORM, или я ошибаюсь?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
насильно никого не заставишь
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Андрей
Honeysql это же не совсем ORM, или я ошибаюсь?
это не orm, да
я говорил про всякие генераторы sql, хотя не знаю, все ли они являются orm
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
это не orm, да
я говорил про всякие генераторы sql, хотя не знаю, все ли они являются orm
скорее правильнее говорить о dsl и не dsl
источник

А

Андрей in Clojure — русскоговорящее сообщество
Похоже надо оба варианта попробовать, чтобы понять что подойдет😊
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Sergey Trofimov
я люблю агрегировать запросы в одной папочке, по одному файлу на запрос 😊
Интересно, я обычно группирую по сущностям. 1 сущность – 1 файл, но много запросов.
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Ну это вообще когда надо, а на начальном этапе можно вообще все в одном файле накидать, если не сильно много
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Разбиение по мере надобности
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mike Bohdan
Интересно, я обычно группирую по сущностям. 1 сущность – 1 файл, но много запросов.
по сущностям я группирую в наименованиях
типа как-то так

login.find-client-api-token.sql
login.save-client-api-token.sql
login.update-client-api-token-introduced.sql
maintenance.delete-client-api-token-deleted.sql
maintenance.list-google-lost-order.sql
maintenance.list-payment-transaction-failure.sql
maintenance.save-payment-transaction-refund.sql
maintenance.update-payment-transaction-failure-resolved.sql
payment.find-payment-database-for-new-transaction.sql
payment.list-payment-product-by-config.sql
payment.save-payment-provider-log.sql
payment.save-payment-transaction.sql
payment.save-payment-transaction-failure.sql
payment.update-finance-overview.sql
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
по сущностям я группирую в наименованиях
типа как-то так

login.find-client-api-token.sql
login.save-client-api-token.sql
login.update-client-api-token-introduced.sql
maintenance.delete-client-api-token-deleted.sql
maintenance.list-google-lost-order.sql
maintenance.list-payment-transaction-failure.sql
maintenance.save-payment-transaction-refund.sql
maintenance.update-payment-transaction-failure-resolved.sql
payment.find-payment-database-for-new-transaction.sql
payment.list-payment-product-by-config.sql
payment.save-payment-provider-log.sql
payment.save-payment-transaction.sql
payment.save-payment-transaction-failure.sql
payment.update-finance-overview.sql
заодно в историю изменений хорошо ложится
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mike Bohdan
Ну это вообще когда надо, а на начальном этапе можно вообще все в одном файле накидать, если не сильно много
ну, разделять муторно, когда в одном файле становится неудобно
поэтому если фреймворк сложился, то проще придерживаться стандартной схемы
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Sergey Trofimov
по сущностям я группирую в наименованиях
типа как-то так

login.find-client-api-token.sql
login.save-client-api-token.sql
login.update-client-api-token-introduced.sql
maintenance.delete-client-api-token-deleted.sql
maintenance.list-google-lost-order.sql
maintenance.list-payment-transaction-failure.sql
maintenance.save-payment-transaction-refund.sql
maintenance.update-payment-transaction-failure-resolved.sql
payment.find-payment-database-for-new-transaction.sql
payment.list-payment-product-by-config.sql
payment.save-payment-provider-log.sql
payment.save-payment-transaction.sql
payment.save-payment-transaction-failure.sql
payment.update-finance-overview.sql
Мне бы для такого пришлось бы писать много конфигов, что я не очень люблю. Особенности duct
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mike Bohdan
Мне бы для такого пришлось бы писать много конфигов, что я не очень люблю. Особенности duct
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Андрей
😊, но сделать это смогут далеко не все. Вернее для этого надо будет быть гуру в SQL запросах
да вроде совсем просто
select * from payment_product
where (:keyword IS NULL OR keyword = :keyword);
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Не, я в плане того, что там ещё баундари, для сущностей есть, и прикидывать по одному запросы неудобно, а так сделал map-of-db-fns, и все нужные запросы попали куда надо

https://github.com/duct-framework/duct/wiki/Boundaries
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Mike Bohdan
Не, я в плане того, что там ещё баундари, для сущностей есть, и прикидывать по одному запросы неудобно, а так сделал map-of-db-fns, и все нужные запросы попали куда надо

https://github.com/duct-framework/duct/wiki/Boundaries
В итоге конфиг будет типа

{:query/some “file1.sql”
:query/another “file2.sql”
 ....
:boundary/some {:queries {:some #ig/ref :query/some}}}

Где-то около того
источник