aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/sql/test
diff options
context:
space:
mode:
authorscgilardi <scgilardi@gmail.com>2008-10-06 02:31:05 +0000
committerscgilardi <scgilardi@gmail.com>2008-10-06 02:31:05 +0000
commitaaa467fd2eb6b2ca60b4bd7f2f1d6e0f7756a59c (patch)
tree9f7594dd4dab1b597318aaa61fe418b4404417d7 /src/clojure/contrib/sql/test
parent2d5f5de88c91b56cd9b7103a6750091774801ce1 (diff)
sql: updates to be more modular, explicit transactions that nest, db-spec as data rather than as a function, with-results changed to bind a seq of results rather than records repeatedly, see clojure.contrib.sql.test for new examples.
Diffstat (limited to 'src/clojure/contrib/sql/test')
-rw-r--r--src/clojure/contrib/sql/test/test.clj93
1 files changed, 59 insertions, 34 deletions
diff --git a/src/clojure/contrib/sql/test/test.clj b/src/clojure/contrib/sql/test/test.clj
index 94a5a644..eb212dc5 100644
--- a/src/clojure/contrib/sql/test/test.clj
+++ b/src/clojure/contrib/sql/test/test.clj
@@ -14,47 +14,72 @@
;; Created 13 September 2008
(ns clojure.contrib.sql.test
- (:use clojure.contrib.sql))
+ (:require [clojure.contrib.sql :as sql]))
-(clojure.lang.RT/classForName "org.apache.derby.jdbc.EmbeddedDriver")
+(def db {:classname "org.apache.derby.jdbc.EmbeddedDriver"
+ :subprotocol "derby"
+ :subname "/tmp/clojure.contrib.sql.test.db"
+ :create true})
-(defn db []
- (connection "derby" "/tmp/clojure.contrib.sql.test.db" :create true))
+(defn drop-fruit []
+ (try
+ (sql/drop-table :fruit)
+ (catch Exception e)))
+
+(defn create-fruit []
+ (sql/create-table :fruit
+ [:name "varchar(32)" "NOT NULL"]
+ [:appearance "varchar(32)"]
+ [:cost :int]
+ [:grade :real]))
+
+(defn insert-rows-fruit []
+ (sql/insert-rows :fruit
+ ["Apple" "red" 59 87]
+ ["Banana" "yellow" 29 92.2]
+ ["Peach" "fuzzy" 139 90.0]
+ ["Orange" "juicy" 89 88.6]))
+
+(defn insert-values-fruit []
+ (sql/insert-values :fruit
+ [:name :cost]
+ ["Mango" 722]
+ ["Feijoa" 441]))
(defn db-write []
- (with-connection con (db)
- (try
- (drop-table con :fruit)
- (catch Exception e))
- (create-table con :fruit
- [:name "varchar(32)" "NOT NULL"]
- [:appearance "varchar(32)"]
- [:cost :int]
- [:grade :real])
- (insert-rows con :fruit
- ["Apple" "red" 59 87]
- ["Banana" "yellow" 29 92.2]
- ["Peach" "fuzzy" 139 90.0]
- ["Orange" "juicy" 89 88.6])
- (insert-values con :fruit [:name :cost]
- ["Mango" 722]
- ["Feijoa" 441])))
+ (sql/with-connection db
+ (sql/transaction
+ (drop-fruit)
+ (create-fruit)
+ (insert-rows-fruit)
+ (insert-values-fruit)))
+ nil)
(defn db-read []
- (with-connection con (db)
- (with-results rec con
- "select * from fruit"
- (println rec))))
+ (sql/with-connection db
+ (sql/with-results res
+ "select * from fruit"
+ (doseq rec res
+ (println rec)))))
+
+(defn db-read-all []
+ (sql/with-connection db
+ (sql/with-results res
+ "select * from fruit"
+ (into [] res))))
(defn db-grade-a []
- (with-connection con (db)
- (with-results rec con
- "select name, cost from fruit where grade >= 90"
- (println rec))))
+ (sql/with-connection db
+ (sql/with-results res
+ "select name, cost from fruit where grade >= 90"
+ (doseq rec res
+ (println rec)))))
(defn db-exception []
- (with-connection con (db)
- (insert-values con :fruit [:name :appearance]
- ["Grape" "yummy"]
- ["Pear" "bruised"])
- (throw (Exception. "an exception"))))
+ (sql/with-connection db
+ (sql/transaction
+ (sql/insert-values :fruit
+ [:name :appearance]
+ ["Grape" "yummy"]
+ ["Pear" "bruised"])
+ (throw (Exception. "an exception")))))