walkable-server / walkable

A Clojure(script) SQL library for building APIs: Datomic® (GraphQL-ish) pull syntax, data driven configuration, dynamic filtering with relations in mind
https://walkable.gitlab.io/
Eclipse Public License 2.0
444 stars 15 forks source link

support Fulcro pagination idents first-class #101

Closed myguidingstar closed 6 years ago

myguidingstar commented 6 years ago
(df/load [:user/by-id 42] User
  {:params {:pagination/children-params
            {:user/paginated-liked-articles #:pagination {:size  10
                                                          :start 33}}}})

(defsc User
  {:query [:user/id
           {:user/paginated-liked-articles (prim/get-query Page)}]})

(defsc Page
  {:query [:pagination/list-type
           :pagination/list-id
           :pagination/start
           :pagination/size
           :pagination/items [:article/id :article/body]]})
;; will behave like
(defsc User
  {:query [:user/id
           `(:user/paginated-liked-articles-previous-id {:limit 10 :filters [:<= 33 :article/id]})
           `(:user/paginated-liked-articles-next-id {:limit 10 :filters [:<= 33 :article/id]})           
           {`(:user/liked-articles {:limit 10 :filters [:<= 33 :article/id]})
            [:article/id :article/body]}]})
myguidingstar commented 6 years ago

this should be implemented as a two-step plugin:

myguidingstar commented 6 years ago

after understanding fulcro pagination better, I find this unnecessary