summaryrefslogtreecommitdiff
path: root/src/clojure_sql/query.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/clojure_sql/query.clj')
-rw-r--r--src/clojure_sql/query.clj20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/clojure_sql/query.clj b/src/clojure_sql/query.clj
new file mode 100644
index 0000000..239aab4
--- /dev/null
+++ b/src/clojure_sql/query.clj
@@ -0,0 +1,20 @@
+(ns clojure-sql.query
+ (:require [clojure-sql.compiler :as c]))
+
+
+(def ^:private ^:dynamic *database-type* nil)
+(defn set-database-type! [new-type]
+ (alter-var-root #'*database-type* (constantly new-type))
+ nil)
+
+(def ^:private ^:dynamic *query-deref-behaviour* #(c/compile-query *database-type* %))
+(defn set-query-deref-behaviour! [f]
+ (alter-var-root #'*query-deref-behaviour* (constantly f))
+ nil)
+
+(defrecord ^:private Query []
+ clojure.lang.IDeref
+ (deref [this] (*query-deref-behaviour* this)))
+(defmethod print-method Query [query writer]
+ (binding [*out* writer]
+ (pr (c/compile-query nil query))))