Open lilactown opened 7 months ago
Support something like
(p/pull (p/db [{:classroom/id "c1" :school [:school/id 1]} {:classroom/id "c2" :school [:school/id 1]} {:classroom/id "c3" :school [:school/id 2]} {:school/id 1 :allocations {[:classroom/id "c1"] [[:course/id 1] [:course/id 2]] [:classroom/id "c2"] [[:course/id 1]]}} {:school/id 2 :allocations {[:classroom/id "c3"] [[:course/id 1] [:course/id 3]]}} {:course/id 1 :course/name "A"} {:course/id 2 :course/name "B"} {:course/id 3 :course/name "C"}]) [{[:school/id 1] [{:allocations [{???? [:course/name]}]}]}]) ;; => {[:school/id 1] ;; {:allocations ;; {[:classroom/id "c1"] [#:course{:name "A"} #:course{:name "B"}], ;; [:classroom/id "c2"] [#:course{:name "A"}]}}}
We'd want to support this for joins and unions.
A few ideas:
_
[{'_ [:course/name]}]
[{(s/spec (s/tuple keyword? string?)) [:course/name]}]
[{(fn [x] (and (vector? x) (= :classroom/id (first x)))) [:course/name]}]
Options 2 and 3 would require changes to the EQL parsing library to allow functions in the key position...
Support something like
We'd want to support this for joins and unions.
A few ideas:
_
as the key, e.g.[{'_ [:course/name]}]
[{(s/spec (s/tuple keyword? string?)) [:course/name]}]
[{(fn [x] (and (vector? x) (= :classroom/id (first x)))) [:course/name]}]