Fork me on GitHub
#reitit
<
2019-09-20
>
jonathan19:09:41

Is there any common pattern to avoid cyclic dependencies when doing reverse routing? I was thinking of simply moving my route names into a new namespace. It just feels strange.

(ns proj.routes
 (:require [proj.user :as user])
...
["/user" {:name ::user, :get {:handler user/user-handler}}
                  ^^^ Uses proj.routes namespace
(ns proj.user
 (:require [proj.routes :as routes])
...
(defn user-handler [request]
   ...
  (r/match-by-name :routes/user)
                    ^^^ Causes cyclic dep
So instead I was thinking of defining my routes like ["/user" {:name route-names/user}

jonathan19:09:01

Alternatively, I guess I don't have to use namespaced keys. I saw the reitit docs were using them and followed suit.

ikitommi20:09:59

@jonjanisch you can use qualified keys without require, e.g. :proj.routes/user

jonathan20:09:58

ah, thanks.