Well, I managed to cobble something together after looking at the source for resultset-seq, just in case someone is looking for something similar.
(ns navigator.core
(:require [clojure.java.jdbc :as jdbc]
[korma.core :as k]
[korma.db :refer :all]
[korma.sql.engine :as engine])
(:import org.postgresql.util.PSQLException))
(def db-settings (postgres {:db "cordata"}))
(defdb db db-settings)
(defn get-meta-for-qry [q]
"get's metadata from resultset for qry"
(let [current-db (or (:db q) @_default)
cn (get-connection current-db)
cb (fn [r] (. r (getMetaData)))
the-q (engine/->sql q)
sql-str (:sql-str the-q)
params (:params the-q)]
(jdbc/db-query-with-resultset cn
(apply vector sql-str params)
cb)))
(defn get-columns-for-qry [q]
(let [m (get-meta-for-qry (-> q (k/where (= 1 0))))
idxs (range 1 (inc (. m (getColumnCount))))
keys (map (comp keyword #(.toLowerCase ^String %))
(map (fn [i] (. m (getColumnLabel i))) idxs))]
keys))