Fork me on GitHub
#pathom
<
2018-12-03
>
tony.kay03:12:27

recommend :user/id, since that ends up working better with pathom’s flatten/expand model of attributes

👍 8
danielstockton06:12:41

(def db
  (atom {:users [{:id 1}]}))

(pc/defresolver user-resolver [{:keys [database] :as env} {:keys [user/id]}]
  {::pc/input  #{:user/id}
   ::pc/output [:user/id]}
  (let [user (first (filter #(= (:id %) id)) (:users database))]
    {:user/id (:id user)}))

(def app-registry [user-resolver])

(def parser
  (p/parallel-parser
   {::p/env     {::p/reader               [p/map-reader
                                           pc/parallel-reader
                                           pc/open-ident-reader
                                           p/env-placeholder-reader]
                 ::p/placeholder-prefixes #{">"}}
    ::p/mutate  pc/mutate-async
    ::p/plugins [(pc/connect-plugin {::pc/register app-registry})
                 p/error-handler-plugin
                 p/request-cache-plugin
                 p/trace-plugin]}))
(<!! (parser {:database @db} [{[:user/id 3] [:user/id]}])) => {[:user/id 3] #:user{:id 3}}
I'm not sure why my parser keeps returning what I give it (user 'database' only has one user).

wilkerlucio14:12:53

because you are trying to override a value that was already defined, it just read from the map

wilkerlucio14:12:24

a resolver to rename itself is not a valid thing, because you would be given 2 different semantic properties under the same name (if that makes sense)

wilkerlucio14:12:51

when you provide the ident, the context is {:user/id 3}

wilkerlucio14:12:10

so when you request :user/id it already in the context, its not gonna trigger any resolver, just return the value under the context

danielstockton14:12:54

Yep, perfect, thanks!

aisamu16:12:42

The > default is great, btw

🙂 4