summaryrefslogtreecommitdiff
path: root/src/clojure_sql/query.clj
blob: 239aab4f6d0c7268a2e5df9660ebf734e311a496 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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))))