Size: a a a

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

2021 August 22

SP

Stas P in Clojure — русскоговорящее сообщество
апдейт сделал так:
источник

SP

Stas P in Clojure — русскоговорящее сообщество
(let [endpoint-path [:data :accountingCustomerParty :endpoint]
       send-to-path [:processingPreference :sendTo]]
   (-> payload (update-in endpoint-path assoc :id "UNKNOWN99")
               (update-in send-to-path assoc :id "UNKNOWN99")))
источник

SP

Stas P in Clojure — русскоговорящее сообщество
а вот как бы примотать условие что делать это если по пути [:data :accountingCustomerParty :endpoint] поле :scheme имеет определенное значение
источник

ST

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

SP

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
(cond-> payload
 (= "UNKNOWN99" (get-in payload [:data :accountingCustomerParty :endpoint]))
 (update-in [:processingPreference :sendTo] assoc :id "UNKNOWN99"))
источник

SP

Stas P in Clojure — русскоговорящее сообщество
чот в таком случае оно возвращает конкретно кусок мапы что обновил а не мапу.
источник

SP

Stas P in Clojure — русскоговорящее сообщество
сделал так:
источник

SP

Stas P in Clojure — русскоговорящее сообщество
(defn set-unknown-email-endpoint [payload]
 (let [endpoint-path [:data :accountingCustomerParty :endpoint]
       send-to-path [:processingPreference :sendTo]]
   (if (= scheme-email (get-in payload (conj endpoint-path :schemeId)))
     (-> payload (update-in endpoint-path assoc :id "UNKNOWN")
         (update-in send-to-path assoc :id "UNKNOWN"))
     payload)))
источник

SP

Stas P in Clojure — русскоговорящее сообщество
с ифом.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
не может такого быть
(let [payload {:data {:accountingCustomerParty {:endpoint "UNKNOWN99"}}}]
 (cond-> payload
   (= "UNKNOWN99" (get-in payload [:data :accountingCustomerParty :endpoint]))
   (update-in [:processingPreference :sendTo] assoc :id "UNKNOWN99")))
=>
{:data {:accountingCustomerParty {:endpoint "UNKNOWN99"}},
:processingPreference {:sendTo {:id "UNKNOWN99"}}}
источник

SP

Stas P in Clojure — русскоговорящее сообщество
Ммм может я перетащил криво
источник

ST

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
(let [payload {:data {:accountingCustomerParty {:endpoint {:schemeId "email"}}}}
     endpoint-path [:data :accountingCustomerParty :endpoint]
     send-to-path [:processingPreference :sendTo]]
 (cond-> payload
   (= "email" (get-in payload (conj endpoint-path :schemeId)))
   (-> (update-in endpoint-path assoc :id "UNKNOWN")
       (update-in send-to-path assoc :id "UNKNOWN"))))
=>
{:data {:accountingCustomerParty {:endpoint {:schemeId "email", :id "UNKNOWN"}}},
:processingPreference {:sendTo {:id "UNKNOWN"}}}
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
(let [payload {:data {:accountingCustomerParty
                     {:endpoint
                      {:schemeId "email"}}}}
     endpoint-path [:data :accountingCustomerParty :endpoint]
     send-to-path [:processingPreference :sendTo]
     email? (= "email" (get-in payload (conj endpoint-path :schemeId)))
     updater #(if email? "UNKNOWN" %)]
 (-> payload
     (update-in endpoint-path updater)
     (update-in send-to-path updater)))

а можно не заморачиваться и безусловно апдейтить
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Nil-punning
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
источник

D

Dmitry in Clojure — русскоговорящее сообщество
Коллеги, доброго вечера. Cursive пользую, ругается на арность у find, skip, etc. вот в таком коде
(defn get-list-by-query
 [connection opts filter sort]
 (let [db (get-db-from-connection connection)
       collection (get opts :collection nil )
       skip (get opts :skip 0)
       limit (get opts :limit 10)]
   (if (nil? collection)
     (throw (Exception. "Not send query options"))
     (mq/with-collection
         db
         collection
         (mq/find (if (nil? filter) {} filter))
         (mq/skip skip)
         (mq/limit limit)))))

mq - это query monger'a
источник

D

Dmitry in Clojure — русскоговорящее сообщество
Как по фиксить? Работает, но раздражает
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Было че-то такое. Например для mount/defstate можно было настроить, чтобы не подсвечивал как undeclared symbol.
источник