All tests pass. Is this the end of the link table naming issue?
This commit is contained in:
parent
37d56321b3
commit
e93368c675
|
@ -309,22 +309,22 @@
|
||||||
(= (max n1 n2) 1)))
|
(= (max n1 n2) 1)))
|
||||||
|
|
||||||
|
|
||||||
(defn link-related-property-name
|
(defn link-related-query-name
|
||||||
"link is tricky. If there's exactly than one link between the two
|
"link is tricky. If there's exactly than one link between the two
|
||||||
entities, we need to generate the same name from both
|
entities, we need to generate the same name from both
|
||||||
ends of the link"
|
ends of the link"
|
||||||
[property nearside farside]
|
[property nearside farside]
|
||||||
(if (unique-link? nearside farside)
|
(if (unique-link? nearside farside)
|
||||||
(let [ordered (sort-by (-> % :attrs :name) (list nearside farside))
|
(let [ordered (sort-by #(-> % :attrs :name) (list nearside farside))
|
||||||
e1 (first ordered)
|
e1 (first ordered)
|
||||||
e2 (nth ordered 1)]
|
e2 (nth ordered 1)]
|
||||||
(str "list-"
|
(str "list-"
|
||||||
(safe-name e1 :sql)
|
(safe-name e1 :sql)
|
||||||
"-by-"
|
"-by-"
|
||||||
(safe-name e2 :sql))
|
(safe-name e2 :sql)))
|
||||||
(str "list-"
|
(str "list-"
|
||||||
(safe-name ~property :sql) "-by-"
|
(safe-name property :sql) "-by-"
|
||||||
(singularise (safe-name ~nearside :sql))))))
|
(singularise (safe-name nearside :sql)))))
|
||||||
|
|
||||||
|
|
||||||
(defn link-table-name
|
(defn link-table-name
|
||||||
|
@ -352,22 +352,19 @@
|
||||||
`farside` which match a given record on `nearside`, where `nearide` and
|
`farside` which match a given record on `nearside`, where `nearide` and
|
||||||
`farside` are both entities."
|
`farside` are both entities."
|
||||||
[property nearside farside]
|
[property nearside farside]
|
||||||
`(if
|
(if
|
||||||
(and
|
(and
|
||||||
(property? ~property)
|
(property? property)
|
||||||
(entity? ~nearside)
|
(entity? nearside)
|
||||||
(entity? ~farside))
|
(entity? farside))
|
||||||
(case (-> ~property :attrs :type)
|
(case (-> property :attrs :type)
|
||||||
;; link is tricky. If there's exactly than one link between the two
|
"link" (link-related-query-name property nearside farside)
|
||||||
;; entities, we need to generate the same name from both
|
|
||||||
;; ends of the link
|
|
||||||
"link" (link-related-query-name)
|
|
||||||
"list" (str "list-"
|
"list" (str "list-"
|
||||||
(safe-name ~farside :sql) "-by-"
|
(safe-name farside :sql) "-by-"
|
||||||
(singularise (safe-name ~nearside :sql)))
|
(singularise (safe-name nearside :sql)))
|
||||||
"entity" (str "list-"
|
"entity" (str "list-"
|
||||||
(safe-name ~farside :sql) "-by-"
|
(safe-name nearside :sql) "-by-"
|
||||||
(singularise (safe-name ~nearside :sql)))
|
(singularise (safe-name farside :sql)))
|
||||||
;; default
|
;; default
|
||||||
(str "ERROR-bad-property-type-"
|
(str "ERROR-bad-property-type-"
|
||||||
(-> ~property :attrs :type) "-of-"
|
(-> ~property :attrs :type) "-of-"
|
||||||
|
|
|
@ -366,7 +366,7 @@
|
||||||
[{:tag :prompt,
|
[{:tag :prompt,
|
||||||
:attrs {:locale "en_GB.UTF-8", :prompt "Gender"},
|
:attrs {:locale "en_GB.UTF-8", :prompt "Gender"},
|
||||||
:content nil}]}]}
|
:content nil}]}]}
|
||||||
property (child e1 #(= (-> % :attrs :name) "gender"))
|
property (child e2 #(= (-> % :attrs :name) "gender"))
|
||||||
expected "list-electors-by-gender"
|
expected "list-electors-by-gender"
|
||||||
actual (list-related-query-name property e2 e1)]
|
actual (list-related-query-name property e2 e1)]
|
||||||
(is (= expected actual) "just checking..."))
|
(is (= expected actual) "just checking..."))
|
||||||
|
@ -426,4 +426,24 @@
|
||||||
actual (list-related-query-name property e2 e1)]
|
actual (list-related-query-name property e2 e1)]
|
||||||
(is (= actual expected) "Link property - membersips")))))
|
(is (= actual expected) "Link property - membersips")))))
|
||||||
|
|
||||||
|
;; (def e1 {:tag :entity
|
||||||
|
;; :attrs {:name "teams"}
|
||||||
|
;; :content [{:tag :key
|
||||||
|
;; :content [{:tag :property
|
||||||
|
;; :attrs {:name "id" :type "integer" :distinct "system"}}]}
|
||||||
|
;; {:tag :property
|
||||||
|
;; :attrs {:name "members" :type "link" :entity "canvassers"}}
|
||||||
|
;; {:tag :property
|
||||||
|
;; :attrs {:name "organisers" :type "link" :entity "canvassers"}}]})
|
||||||
|
;; (def e2 {:tag :entity
|
||||||
|
;; :attrs {:name "canvassers"}
|
||||||
|
;; :content [{:tag :key
|
||||||
|
;; :content [{:tag :property
|
||||||
|
;; :attrs {:name "id" :type "integer" :distinct "system"}}]}
|
||||||
|
;; {:tag :property
|
||||||
|
;; :attrs {:name "memberships" :type "link" :entity "teams"}}]})
|
||||||
|
|
||||||
|
;; (def property {:tag :property
|
||||||
|
;; :attrs {:name "members" :type "link" :entity "canvassers"}})
|
||||||
|
|
||||||
|
;; (list-related-query-name property e1 e2)
|
||||||
|
|
Loading…
Reference in a new issue