diff options
author | Carlo Zancanaro <carlo@clearboxsystems.com.au> | 2013-05-15 18:51:21 +1000 |
---|---|---|
committer | Carlo Zancanaro <carlo@clearboxsystems.com.au> | 2013-05-15 18:51:21 +1000 |
commit | 626ab0234ad2e578992d128ced35c2003902e90f (patch) | |
tree | aa7f9af9cd96ce62c3277fcbdd51015345e19737 /src/clojure_sql/query.clj | |
parent | 4101c8b9ddae51793296c99dcd90a01edae55d9d (diff) |
Split out core into compiler/dsl/query.
The query namespace really only exists because I didn't want to put it in dsl,
but I couldn't put it in core without a circular dependency.
Users should only have to :require core to do things, though. It just aliases
other stuff to make that work.
Diffstat (limited to 'src/clojure_sql/query.clj')
-rw-r--r-- | src/clojure_sql/query.clj | 20 |
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)))) |