Skip to content

Instantly share code, notes, and snippets.

@sorenmacbeth
Created March 20, 2012 19:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sorenmacbeth/899a400cd837369d306d to your computer and use it in GitHub Desktop.
Save sorenmacbeth/899a400cd837369d306d to your computer and use it in GitHub Desktop.
(defmacro mk-property-tap [property-id property-name val-id val-name]
`(defn ~(symbol (str property-name "-" val-name "-tap")) [source-dir#]
(let [tap# (split-data-tap source-dir# [~property-id ~val-id])]
(<- [?id ?property ?pedigree]
(tap# _ ?data)
(expand-data ?data :> ?pedigree ?du)
(expand-property ?du :> ?id ?property)))))
(defn bootstrap-schema []
(let [md (thrift-meta-data ybot.schema.DataUnit)]
(doseq [f (.keySet md)]
(let [id (.getThriftFieldId f)
name (.getFieldName f)
class-name (-> (.get md f) (.valueMetaData) (.structClass) (.getName))]
(if (.endsWith name "property")
(doseq [v (.keySet (thrift-meta-data (str class-name "Value")))]
(let [val-id (.getThriftFieldId v)
value-name (.getFieldName v)]
(mk-property-tap id name val-id val-name)))
nil)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment