Skip to content

Instantly share code, notes, and snippets.

@bhenry
Created October 11, 2012 13:40
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 bhenry/06cdd93dadcbe68c2378 to your computer and use it in GitHub Desktop.
Save bhenry/06cdd93dadcbe68c2378 to your computer and use it in GitHub Desktop.
(defn move-data [q f & [db-spec]]
(let [conn (sql/get-connection (or db-spec wm-active))
stmt (sql/prepare-statement conn q)]
(sql/run-over-results stmt f)))
(defn upsert [ent obj unique-by]
(if (not (empty? (select ent
(where (select-keys obj unique-by)))))
(update ent (set-fields obj)
(where (select-keys obj unique-by)))
(insert ent (values obj))))
(defn update-message [ref seq msg]
(reset! last-message (:callnumber msg))
(move-data (format details-by-message ref seq (:callnumber msg))
#(upsert tmessagedetail %
[:referencenumber :sequencenumber :callnumber :displayorder])
wm-archive)
(move-data (format history-by-message ref seq (:callnumber msg))
#(upsert tmessagehistory %
[:referencenumber :sequencenumber :callnumber :datecreated])
wm-archive)
(move-data (format comments-by-message ref seq (:callnumber msg))
#(upsert tmessagecomment %
[:referencenumber :sequencenumber :callnumber :datecreated])
wm-archive))
(defn import-archive-messages [ref seq]
(let [continue (if @last-message
(str "AND callnumber >= '" @last-message "'") "")]
(move-data (format messages-by-practice ref seq continue)
(partial update-message ref seq) wm-archive)))
(defn import-archive-messages-by-practice [& [start-at]]
(move-data (format "
select referencenumber, sequencenumber
from tpractice
where referencenumber >= '%s'
order by referencenumber, sequencenumber" start-at)
#(move-data
(format "
select callnumber from tmessage
where referencenumber = '%s' and sequencenumber = '%s'
order by referencenumber, sequencenumber, callnumber
" (:referencenumber %) (:sequencenumber %))
(partial update-message (:referencenumber %) (:sequencenumber %))
wm-archive)
wm-archive))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment