summaryrefslogtreecommitdiff
path: root/src/utils.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils.clj')
-rwxr-xr-xsrc/utils.clj30
1 files changed, 21 insertions, 9 deletions
diff --git a/src/utils.clj b/src/utils.clj
index 3f3efab..5d7af94 100755
--- a/src/utils.clj
+++ b/src/utils.clj
@@ -4,6 +4,8 @@
java.util.TimeZone
java.io.File
java.net.URLDecoder
+ javax.sql.DataSource
+ org.postgresql.ds.PGPoolingDataSource
org.apache.commons.codec.digest.DigestUtils
org.antlr.stringtemplate.StringTemplateGroup)
(:use clojure.contrib.json.write
@@ -12,13 +14,16 @@
compojure))
(let [db-host "localhost"
- db-port 5432
- db-name "dumpfm"]
- (def *db* {:classname "org.postgresql.Driver"
- :subprotocol "postgresql"
- :subname (str "//" db-host ":" db-port "/" db-name)
- :user "postgres"
- :password "root"}))
+ db-name "dumpfm"
+ db-user "postgres"
+ db-pass "root"]
+ ; TODO: use c3p0 for pooling?
+ (def *db* {:datasource (doto (new PGPoolingDataSource)
+ (.setServerName db-host)
+ (.setDatabaseName db-name)
+ (.setUser db-user)
+ (.setPassword db-pass)
+ (.setMaxConnections 3))}))
;; moved this to here which doesn't seem right... maybe a 'settings.clj' or something?
(def *dumps-per-page* 20)
@@ -26,6 +31,9 @@
;; Misc
+(defn append [& vecs]
+ (reduce into vecs))
+
(declare stringify-and-escape)
(defn escape-html-deep [o]
(if (map? o)
@@ -78,11 +86,11 @@
(defn sha1-hash [& more]
(DigestUtils/shaHex (apply str more)))
-(defmacro with-timing [e]
+(defmacro with-timing [e]
`(let [s# (System/nanoTime)
r# ~e
f# (System/nanoTime)]
- [(int (/ (- f# s#) 1000000.0)) r#]))
+ [(int (/ (- f# s#) 1e6)) r#]))
;; Formatters
@@ -185,6 +193,10 @@
([res ok err] (if (not (= (first res) 1)) err ok))
([res] (assert-update res true false)))
+(defn sql-array [type arr]
+ (with-connection *db*
+ (.createArrayOf (connection) type (into-array arr))))
+
;; Parsing
(defn maybe-parse-int