diff options
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)))) |