Guest User

Untitled

a guest
Oct 22nd, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.77 KB | None | 0 0
  1. (ns cljdoc.pathom3
  2. (:require [com.wsscode.pathom.core :as p]
  3. [com.wsscode.pathom.connect :as pc]
  4. [clojure.core.async :as async]
  5. [clojure.set]
  6. [cljdoc.util.repositories :as repos]
  7. [cljdoc.util.pom :as pom]
  8. [cljdoc.config :as config]
  9. [cljdoc.storage.sqlite-impl :as cljdoc-sqlite]))
  10.  
  11. ;; {::pc/sym `some-resolver ; this is important! we need to name each resolver, prefer qualified symbols
  12. ;; ::pc/input #{:customer/id}
  13. ;; ::pc/output [:customer/id :customer/name :customer/email]
  14. ;; ::pc/resolve (fn [env input] ...)}
  15.  
  16. (def +db+ (config/db (config/config)))
  17.  
  18. (def namespaces-resolver
  19. {::pc/sym `namespaces-resolver
  20. ::pc/input #{:cljdoc.artifact/sql-id}
  21. ::pc/output [:cljdoc.artifact/namespaces]
  22. ::pc/resolve (fn [env input]
  23. {:cljdoc.artifact/namespaces []})})
  24.  
  25. (def artifact-id-resolver
  26. {::pc/sym `artifact-id-resolver
  27. ::pc/input #{:cljdoc/artifact}
  28. ::pc/output [:cljdoc.artifact/sql-id]
  29. ::pc/resolve (fn [env {:keys [group name version] :as in}]
  30. (println "in reader:" in)
  31. (try (#'cljdoc-sqlite/get-version-id +db+ group name version)
  32. (catch Throwable e
  33. (.printStacktrace e)))
  34. (println in (#'cljdoc-sqlite/get-version-id +db+ group name version))
  35. {:cljdoc.artifact/sql-id (#'cljdoc-sqlite/get-version-id +db+ group name version)})})
  36.  
  37. (defmulti resolver-fn pc/resolver-dispatch)
  38.  
  39. (def indexes (atom {}))
  40. (def defresolver (pc/resolver-factory resolver-fn indexes))
  41.  
  42. (def reg-config {::pc/defresolver defresolver})
  43.  
  44. ; register the resolver we created previously
  45. (pc/register reg-config [namespaces-resolver artifact-id-resolver])
  46.  
  47. ;; Create a parser that uses the resolvers:
  48. (def parser (p/parallel-parser {::p/env (fn [env]
  49. (merge
  50. {::p/reader [p/map-reader
  51. pc/parallel-reader
  52. pc/open-ident-reader
  53. p/env-placeholder-reader]
  54. ::p/placeholder-prefixes #{">"}
  55. ::pc/resolver-dispatch resolver-fn
  56. ::pc/indexes @indexes}
  57. env))
  58. #_{::p/reader [p/map-reader
  59. pc/parallel-reader
  60. pc/open-ident-reader
  61. p/env-placeholder-reader]
  62. ::p/placeholder-prefixes #{">"}
  63. ::pc/resolver-dispatch resolver-fn
  64. ::pc/indexes-fn #(deref indexes)}}))
  65.  
  66. (comment
  67. (def a {:group "compojure" :name "compojure" :version "1.6.1"})
  68.  
  69. (let [{:keys [group name version]} a]
  70. (println (#'cljdoc-sqlite/get-version-id +db+ group name version))
  71. {:cljdoc.artifact/sql-id (#'cljdoc-sqlite/get-version-id +db+ group name version)})
  72.  
  73. (async/<!!
  74. (parser {} [{[:cljdoc/artifact {:group "compojure" :name "compojure" :version "1.6.1"}]
  75. [:cljdoc.artifact/sql-id]}]))
  76.  
  77. (def artifact #:artifact{:group "org.martinklepsch" :name "derivatives" :version "0.3.0"})
  78.  
  79. (cljdoc-parser {::p/entity artifact
  80. :db (config/db (config/config))}
  81. '[:artifact/pom-url
  82. :artifact/sql-id
  83. {:artifact/dependencies [* :artifact/sql-id]}])
  84.  
  85. )
Add Comment
Please, Sign In to add comment