This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2019-01-10
Channels
- # announcements (15)
- # bangalore-clj (1)
- # beginners (207)
- # calva (22)
- # cider (4)
- # clara (73)
- # cljs-dev (7)
- # cljsrn (4)
- # clojure (125)
- # clojure-dev (38)
- # clojure-europe (2)
- # clojure-india (11)
- # clojure-italy (11)
- # clojure-nl (14)
- # clojure-russia (22)
- # clojure-uk (32)
- # clojurescript (30)
- # cursive (11)
- # datavis (2)
- # datomic (14)
- # editors (3)
- # emacs (3)
- # hyperfiddle (4)
- # juxt (13)
- # klipse (1)
- # luminus (5)
- # nrepl (7)
- # off-topic (9)
- # overtone (13)
- # portkey (1)
- # re-frame (15)
- # reagent (13)
- # ring (30)
- # schema (4)
- # shadow-cljs (108)
- # spacemacs (8)
- # specter (3)
- # sql (2)
- # testing (11)
- # tools-deps (21)
- # unrepl (4)
Пролистываю книгу "Designing Event-Driven Systems". В первой же главе ссылка на Рича "Deconstructing the Database". Можно продолжать читать 🙂
https://www.confluent.io/wp-content/uploads/confluent-designing-event-driven-systems.pdf
не вижу у себя подходящего кода можно взять какой-нибудь пример на flow и переписать у меня это где-то пробегало, когда я делал google авторизацию, но похоже этот код «ушёл» а для валидации форм у меня сложился другой подход, не связанный ни с исключениями, ни с flow
@fmnoise если дашь пример кода под flow, который можно перефразировать, то я может на выходных набросал бы
функция применяет набор правил к данным формы и возвращает тупл с конформленными данными формы + данные об ошибках формы [form-params form-errors]
как-то так
(let [[form-params
form-errors] (form-validation/validate-form-params
(validation-rules)
(transit/read-transit-stream (:body request)))]
(if (empty? form-errors)
(let [_ (db-create-user form-params)]
(transit-response
[:run-cmd [[:redirect (config/path-for-route :route--login)]]]))
(transit-response
[:update-form
{:form-params (dissoc form-params :password :password-confirm)
:form-errors form-errors}])))
(defn validation-rules
[]
(list
(form-validation/validate-not-blank
:first_name "First name is required.")
(form-validation/validate-not-blank
:last_name "Last name is required.")
(form-validation/validate-email :email)
(form-validation/validate-new-login :login)
(form-validation/validate-new-password :password :password-confirm)))
(defn validate-not-blank
[field-id error-message]
[[:conform #(update % field-id cuerdas/clean)]
[:validate (fn [form-params errors]
(let [value (get form-params field-id)]
(cond-> errors
(or (cuerdas/empty-or-nil? value)
(cuerdas/blank? value))
(conj [field-id error-message]))))]])
можно тут на форму логина посмотреть https://backend-auth-dev.vonstierlitz.com/
а я вот такую штуку для форм делал https://github.com/darkleaf/form-ujs можно посмотреть тут: https://darkleaf-publicator2.herokuapp.com/register https://github.com/darkleaf/publicator/blob/master/web/src/publicator/web/forms/user/register.clj
заодно поднял весь стек на кложуре, до этого на https://www.liftweb.net/ вся разработка была...