(defmacro def-fetcher [sym bindings do-fetch-fn] `(defrecord ~sym ~bindings u/DataSource (-identity [this#] (:id this#)) (-fetch [this# env#] (unwrap (~do-fetch-fn this# env#)))))