Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defn get-columns
- [_]
- #{"part_id" "name" "image_paths"})
- (defn update
- [_ _ _]
- "UPDATED!!")
- (defmacro UPDATER
- [table]
- (let [column-names (vec (get-columns table))
- column-symbols (map symbol column-names)
- column-names-and-symbols (zipmap column-names column-symbols)]
- `(fn [& {:keys [~@column-symbols ~'where]
- :or ~(zipmap column-symbols
- (repeat (count column-names) nil))}]
- (let [#_~@(reduce into [] (for [col column-symbols] [col col]))
- provided-columns# (for [col-name# ~column-names
- :let [col-sym# (get ~column-names-and-symbols col-name#)]
- :when col-sym#]
- col-name#)
- provided-columns-and-values# (zipmap (map keyword provided-columns#)
- (map ~column-names-and-symbols provided-columns#))]
- (println (pr-str provided-columns#))
- (println (pr-str provided-columns-and-values#))
- ;; don't forget to wrap `where` with `build-where-clause`
- (update ~(eval `(keyword '~table)) provided-columns-and-values# ~'where)
- #_(zipmap ~column-symbols provided-columns#)))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement