Skip to content

Instantly share code, notes, and snippets.

@aamedina
Created September 25, 2013 16:39
Show Gist options
  • Select an option

  • Save aamedina/6702392 to your computer and use it in GitHub Desktop.

Select an option

Save aamedina/6702392 to your computer and use it in GitHub Desktop.
(let [rs (resource-agent (:url account))
a (model-agent (:foreign-key (meta rs) id model))]
(add-watch rs (:id (meta a))
(fn [k ref old-state new-state]
(when (empty? (clojure.set/intersection @a new-state))
(reset! a (select #(= (:id (meta a)) (:id %)) new-state)))))
(add-watch a :update
(fn [k ref old-state new-state]
(when (empty? (clojure.set/intersection @rs new-state))
(send rs #(-> %
(disj (first old-state))
(conj (first new-state))))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment