blob: cdfa1c9c21889dd809a3443ec02c4c32ef12f4e4 (
about) (
plain)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
(ns clojure-sql.core
(:refer-clojure :exclude [sort-by])
(:require [clojure.set :as set]
[clojure-sql.compiler :as c]
[clojure-sql.dsl :as d]
[clojure-sql.util :as u]
[clojure.walk]))
(def table d/table)
(def project d/project)
(def rename d/rename)
(def join d/join)
(def select d/select)
(def sort-by d/sort-by)
(def insert! d/insert!)
(def update! d/update!)
(def delete! d/delete!)
(comment
(binding [*database-type* :mysql]
(let [users (-> (table :users)
(project [:id :username :password])
(select '(= :deleted false)))
people (-> (table :people)
(project [:id :fname :sname])
(select '(= :deleted false)))
uid-pid-match '(= :uid :pid)
is-carlo `(= :fname "Carlo'; SELECT * FROM users --")]
(-> (join (-> users
(rename {:id :uid}))
(join (-> people
(rename {:id :pid}))
(-> (table {:others :o})
(project {:id :oid}))
:on '(= :pid :oid))
:on uid-pid-match)
(select is-carlo)
(project [:fname :sname :oid]))))
(-> (table :users)
(join (table :something-else-with-a-username)
:on true)
(select '(or (= :username "john")
(not (= :username "carlo"))))
(project [:username]))
(-> (table {:nodes :child})
(project [:parent-id, :name])
(rename {:name :child.name})
(join (-> (table {:nodes :parent})
(project [:id, :name])
(rename {:name :parent.name}))
:on '(= :parent-id :id))
(project [:child.name :parent.name]))
(-> (table :users)
(project [:id])
(join (-> (table :people)
(project [:id]))))
(-> (table :users)
(project [:id :name])
(rename {:id :name
:name :id}))
(-> (table :users)
(project {:id :name
:name :id}))
(-> (table :anotherStack)
(project [:anotherNumber])
(join (-> (table :collection)
(project [:number]))))
(-> (table :users)
(select '(= (left :username 1) "bloo"))))
|