From f93f2837fea736e34eb3355645395f1c0722a9cc Mon Sep 17 00:00:00 2001 From: Alex Wheeler Date: Fri, 18 Nov 2016 07:51:24 -0500 Subject: [PATCH] extracts a function into ch.clj for turning a result set into a csv-like vector for writing --- src/airlift/core.clj | 12 ++---------- src/airlift/db.clj | 11 +++++++++++ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/airlift/core.clj b/src/airlift/core.clj index fefc82c..72e063f 100644 --- a/src/airlift/core.clj +++ b/src/airlift/core.clj @@ -11,14 +11,6 @@ chan (ch/channel (:sftp config))] (doseq [table (get-in config [:db :tables])] (let [res (db/query conn (str "SELECT * FROM " table)) - headers (->> (first res) - (keys) - (map name) - (vec) - (conj [])) - body (->> (rest res) - (map (comp vec vals)) - (vec) - (apply conj headers))] - (csv/write body (str table ".csv")) + csv-data (db/resultset->csv res)] + (csv/write csv-data (str table ".csv")) (ch/upload chan (str table ".csv")))))) diff --git a/src/airlift/db.clj b/src/airlift/db.clj index 7b1c2a3..8b1f9cb 100644 --- a/src/airlift/db.clj +++ b/src/airlift/db.clj @@ -31,3 +31,14 @@ "Returns vector of table columns" (->> (.getMetaData response) (extract-columns))) + +(defn resultset->csv [resultSet] + "Given a database result returns a csv-like vector that can be written to disk" + (let [headers (->> (first resultSet) + (keys) + (map name) + (vec)) + body (->> (rest resultSet) + (map (comp vec vals)) + (vec))] + (apply conj (conj [] headers) body)))