File tree Expand file tree Collapse file tree 2 files changed +24
-12
lines changed
Expand file tree Collapse file tree 2 files changed +24
-12
lines changed Original file line number Diff line number Diff line change 281281
282282; ;;; before insert
283283
284- ; ;; TODO -- this shares a lot of code with [[transform-update-changes]]
285284(defn- transform-insert-rows [[first-row :as rows] k->transform]
286285 {:pre [(map? first-row) (map? k->transform)]}
287- ; ; all rows should have the same keys, so we just need to look at the keys in the first row
288- (let [row-xforms (for [k (keys first-row)
289- :let [xform (get k->transform k)]
290- :when xform]
291- (fn [row]
292- (update row k (fn [v]
293- (if (some? v)
294- (xform v)
295- v)))))
296- row-xform (apply comp row-xforms)]
297- (map row-xform rows)))
286+ (let [x-forms (for [[k transform] k->transform]
287+ (fn [row]
288+ (if (some? (get row k))
289+ (update row k transform)
290+ row)))
291+ x-form (apply comp x-forms)]
292+ (map x-form rows)))
298293
299294(m/defmethod pipeline /build [#_query-type :toucan.query-type/insert.*
300295 #_model ::transformed.model
Original file line number Diff line number Diff line change 543543 (is (= 'transforms-primary-method-model-2
544544 (generated-name `(transformed/deftransforms :model-2
545545 {:x {:in ~'inc}})))))))
546+
547+ (derive ::venues.edn-category ::test/venues )
548+
549+ (transformed/deftransforms ::venues.edn-category
550+ {:category {:in pr-str
551+ :out (fn [s]
552+ (binding [*read-eval* false ]
553+ (read-string s)))}})
554+
555+ (deftest ^:parallel transform-insert-rows-test
556+ (testing " insert multiple rows in which each row has different key set will still do transformation properly (#130)"
557+ (is (= [{:name " Venue 1" }
558+ {:name " Venue 2" , :category " {:name \" Category 2\" }" }]
559+ (#'toucan2.tools.transformed/transform-insert-rows
560+ '[{:name " Venue 1" }
561+ {:name " Venue 2" , :category {:name " Category 2" }}]
562+ (#'toucan2.tools.transformed/in-transforms ::venues.edn-category ))))))
You can’t perform that action at this time.
0 commit comments