1. If you return a handler function from a Compojure route, the handler is evaluated with the request. So:
(GET "/" request (posts/all request))
Is the same as: (GET "/" [] posts/all)
So there's no need for a separate "route" macro.However, passing the full request map is discouraged, because the more information you give a function, the more things can theoretically affect it. Functions should be limited in what they know and what they can do, and this is one of the principles Compojure is designed around.
2. Some of the macros you've written for Korma could be written as functions instead. For example:
(defn paginate [query page per-page]
(-> query (limit per-page) (offset (dec page))))
(post/all (where conditions) (paginate page per-page))