Last active
February 17, 2019 19:31
-
-
Save currentoor/5f9b556376fc5c70fc0f302bcc11fbf7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; Setup | |
(defmulti resolver-fn pc/resolver-dispatch) | |
(defmulti mutation-fn pc/mutation-dispatch) | |
(defonce indexes (atom {})) | |
(defonce defresolver (pc/resolver-factory resolver-fn indexes)) | |
(defonce defmutation (pc/mutation-factory mutation-fn indexes)) | |
(defn rest-parser | |
"Create a REST parser. Make sure you've required all nses that define rest resolvers. The given app-atom will be available | |
to all resolvers in `env` as `:app-atom`." | |
[app-atom] | |
(p/async-parser | |
{::p/plugins [(p/env-plugin | |
{::p/reader [p/map-reader | |
pc/all-async-readers] | |
:app-atom app-atom | |
::pc/resolver-dispatch resolver-fn | |
::pc/mutation-dispatch mutation-fn | |
::pc/indexes @indexes}) | |
p/request-cache-plugin | |
(p/post-process-parser-plugin p/elide-not-found)]})) | |
(defn rest-remote | |
[app-atom] | |
(pn/pathom-remote (rest-parser app-atom))) | |
;; Mutation definition | |
(defmutation `print-receipt | |
{::pc/params [:firm :order] | |
::pc/output [:receipt-printer/success]} | |
(fn [{:keys [app-atom ast]} {:keys [firm order]}] | |
(go-catch | |
(let [controller-api "http://localhost:4000/api" | |
response (async/<! (http/post controller-api | |
{:body {:firm firm :order order}}))] | |
(util/spy response))))) | |
;; Client Definition | |
(defn ^:export init [] | |
(reset! app (fc/make-fulcro-client | |
{:request-transform auth/with-auth-token | |
:networking {:remote (c.socket/make-networking app {:client-type "pos"}) | |
:rest (rest/rest-remote app) | |
:file-upload (file-upload/make-networking)} | |
:client-did-mount started-callback | |
:query-transform-default (fn [query] | |
(df/elide-query-nodes query #{:fulcro.ui.form-state/config}))})) | |
(start)) | |
;; My Pathom indexes look like this | |
{:com.wsscode.pathom.connect/index-resolvers {ucv.ui.mobile-pos.vehicle-capture/post-file-to-alpr-api {:com.wsscode.pathom.connect/sym ucv.ui.mobile-pos.vehicle-capture/post-file-to-alpr-api, | |
:com.wsscode.pathom.connect/input #{}, | |
:com.wsscode.pathom.connect/resolve #object[Function], | |
:com.wsscode.pathom.connect/output [{:vehicle/recognition [:vehicle/id | |
:vehicle/plate]}]}}, | |
:com.wsscode.pathom.connect/index-io {#{} {:vehicle/recognition {:vehicle/id {}, :vehicle/plate {}}}}, | |
:com.wsscode.pathom.connect/index-oir {:vehicle/recognition {#{} #{ucv.ui.mobile-pos.vehicle-capture/post-file-to-alpr-api}}}, | |
:com.wsscode.pathom.connect/index-mutations {ucv.ui.receipt/print-receipt {:com.wsscode.pathom.connect/mutate #object[Function], | |
:com.wsscode.pathom.connect/params [:firm | |
:order], | |
:com.wsscode.pathom.connect/output [:receipt-printer/success], | |
:com.wsscode.pathom.connect/sym ucv.ui.receipt/print-receipt}}} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment