Size: a a a

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

2021 April 28

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
А ещё можно запаковать матчинг в регулярку и использовать результат совпадения как ключ, хотя на двух образцах сомневаюсь, что будет сильный эффект
(def errors
 {"Phone" :DUPLICATED_PHONE
  "Email" :DUPLICATED_EMAIL})

(def matcher
 (re-pattern
   (apply str (interpose "|" (keys errors)))))

(defn error-id [msg]
 (errors (re-find matcher msg)))

(error-id "Something with that Phone already exists")
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
(def errors
 {"Phone" :DUPLICATED_PHONE
  "Email" :DUPLICATED_EMAIL})

(defn- error-code
 [^Throwable e, phrase]
 (when (some-> e .getMessage (.contains phrase))
   (errors phrase)))

(some (partial error-code e) (keys errors))
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
ну да, суть в том, что избегаем дублирования кода и пишем максимально декларативно
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
Я бы добавил в запрос «on conflict» и «returning» и работал бы потом с мапками, а не проверял строку на вхождение подстроки

https://www.postgresql.org/docs/9.5/sql-insert.html#SQL-ON-CONFLICT

https://www.postgresql.org/docs/9.5/dml-returning.html
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
как лучше всего расширить чужую спеку s/keys? добавить туда несколько новых ключиков.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
(s/def ::old/spec
 (s/merge
  ::old/spec
  (s/keys :req [:some/key
                :another/key])))
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
но как-то мне не нравится
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
особенно некрасиво выходит, когда надо расширить не верхний уровень мапы, а вложенный.
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
так ведь для вложенного ты все равно будешь расширять обычную спеку
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
ну да, но все равно как-то...
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
прикольно иногда с включенным линтером побродить по чужим библиотекам, столько странного говна можно найти...
источник

IS

Ilshat Sultanov in Clojure — русскоговорящее сообщество
как раз вчера этот же код смотрел 😁
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
нет появилось желание номальный http клиент написать? 😵
источник

IS

Ilshat Sultanov in Clojure — русскоговорящее сообщество
желание переписать всегда есть)) времени нет 😔
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
да, clj-http написан не фонтан...
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Я недавно в clj-kondo заглянул 😱
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Но работает же ))
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
в том и дело что clj-http не работает
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
в отличие от кондо, код clj-http выполняется внутри моего приложения, и меня волнует, насколько оптимально он написан 😊
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Я, кстати, почти ни разу clj-http не использовал.
источник