45 lines
1.6 KiB
Clojure
45 lines
1.6 KiB
Clojure
(ns ch.lyrion.pgwiz.inspect
|
|
(:require [next.jdbc :as jdbc]))
|
|
|
|
(def db {:dbtype "postgresql"
|
|
:dbname "sompani-dev"
|
|
:host "127.0.0.1"
|
|
:port 5432
|
|
:user "sompani_dev"
|
|
:password "sompani-dev"})
|
|
|
|
(def conn (atom (jdbc/get-connection db)))
|
|
|
|
(defn get-named-rows [pg-result-set]
|
|
(.next pg-result-set)
|
|
(loop [pg-meta (.getMetaData pg-result-set)
|
|
result (list)]
|
|
(let [result (cons (reduce #(assoc %1 (keyword (.getColumnName pg-meta %2))
|
|
(.getString pg-result-set %2))
|
|
{} (range 1 (inc (.getColumnCount pg-meta))))
|
|
result)]
|
|
(if (.next pg-result-set)
|
|
(recur (.getMetaData pg-result-set) result)
|
|
result))))
|
|
|
|
(defn get-exported-keys [schema table]
|
|
(get-named-rows (.getExportedKeys (.getMetaData @conn) nil schema table)))
|
|
|
|
(defn get-imported-keys [schema table]
|
|
(get-named-rows (.getImportedKeys (.getMetaData @conn) nil schema table)))
|
|
|
|
(defn get-primary-keys [schema table]
|
|
(get-named-rows (.getPrimaryKeys (.getMetaData @conn) nil schema table)))
|
|
|
|
(defn get-version-columns [schema table]
|
|
(get-named-rows (.getVersionColumns (.getMetaData @conn) nil schema table)))
|
|
|
|
(defn get-index-info [schema table unique approximate]
|
|
(get-named-rows (.getIndexInfo (.getMetaData @conn) nil schema table unique approximate)))
|
|
|
|
(defn get-table-privileges [schema table]
|
|
(get-named-rows (.getTablePrivileges (.getMetaData @conn) nil schema table)))
|
|
|
|
(defn get-columns [schema table]
|
|
(get-named-rows (.getColumns (.getMetaData @conn) nil schema table nil)))
|