/
quoted.clj
31 lines (24 loc) · 897 Bytes
/
quoted.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
;; copyright (c) 2019 Sean Corfield, all rights reserved
(ns next.jdbc.quoted
"Provides functions for use with the `:table-fn` and `:column-fn` options
that define how SQL entities should be quoted in strings constructed
from Clojure data."
(:require [clojure.string :as str]))
(defn ansi "ANSI \"quoting\"" [s] (str \" s \"))
(defn mysql "MySQL `quoting`" [s] (str \` s \`))
(defn sql-server "SQL Server [quoting]" [s] (str \[ s \]))
(def oracle "Oracle \"quoting\" (ANSI)" ansi)
(def postgres "PostgreSQL \"quoting\" (ANSI)" ansi)
(defn schema
"Given a quoting function, return a new quoting function that will
process schema-qualified names by quoting each segment:
```clojure
(mysql (name :foo.bar)) ;=> `foo.bar`
((schema mysql) (name :foo.bar)) ;=> `foo`.`bar`
```
"
[quoting]
(fn [s]
(->> (str/split s #"\.")
(map quoting)
(str/join "."))))