Merge 17b6af58ec into 88bc556578
This commit is contained in:
commit
9c7f5017ae
2 changed files with 49 additions and 2 deletions
38
README.md
38
README.md
|
|
@ -188,6 +188,41 @@ Here's a big, complicated query. Note that Honey SQL makes no attempt to verify
|
||||||
=> true
|
=> true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Insert, Update, Delete
|
||||||
|
|
||||||
|
Since version 0.4.3 HoneySQL supports insert, update, and delete.
|
||||||
|
|
||||||
|
```clj
|
||||||
|
;; Insert
|
||||||
|
(-> (insert-into :foo)
|
||||||
|
(values {:foo "foo"
|
||||||
|
:bar "bar"})
|
||||||
|
sql/format)
|
||||||
|
|
||||||
|
=> ["INSERT INTO foo (foo, bar) VALUES (?, ?)" "foo" "bar"]
|
||||||
|
|
||||||
|
;; Alternatively, you can enter multiple rows at a time:
|
||||||
|
(-> (insert-into :foo)
|
||||||
|
(columns :foo :bar)
|
||||||
|
(values [["foo1" "bar1"] ["foo2" "bar2"]])
|
||||||
|
sql/format)
|
||||||
|
|
||||||
|
=> ["INSERT INTO foo (foo, bar) VALUES (?, ?), (?, ?)" "foo1" "bar1" "foo2" "bar2"]
|
||||||
|
|
||||||
|
(-> (update :foo)
|
||||||
|
(sset {:foo "foo"}) ;; (not a typo!)
|
||||||
|
(where [:= :id 1])
|
||||||
|
sql/format)
|
||||||
|
|
||||||
|
=> ["UPDATE foo SET foo = ? WHERE id = 1" "foo"]
|
||||||
|
|
||||||
|
(-> (delete-from :foo)
|
||||||
|
(where [:= :id 1])
|
||||||
|
sql/format)
|
||||||
|
|
||||||
|
=> ["DELETE FROM foo WHERE id = 1"]
|
||||||
|
```
|
||||||
|
|
||||||
## Extensibility
|
## Extensibility
|
||||||
|
|
||||||
You can define your own function handlers for use in `where`:
|
You can define your own function handlers for use in `where`:
|
||||||
|
|
@ -230,11 +265,10 @@ If you do implement a clause or function handler, consider submitting a pull req
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
|
|
||||||
* Insert, update, delete
|
|
||||||
* Create table, etc.
|
* Create table, etc.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Copyright © 2012 Justin Kramer
|
Copyright © 2014 Justin Kramer
|
||||||
|
|
||||||
Distributed under the Eclipse Public License, the same as Clojure.
|
Distributed under the Eclipse Public License, the same as Clojure.
|
||||||
|
|
|
||||||
|
|
@ -55,3 +55,16 @@
|
||||||
"bort" "gabba" 2])))
|
"bort" "gabba" 2])))
|
||||||
(testing "SQL data prints and reads correctly"
|
(testing "SQL data prints and reads correctly"
|
||||||
(is (= m1 (read-string (pr-str m1)))))))
|
(is (= m1 (read-string (pr-str m1)))))))
|
||||||
|
|
||||||
|
(deftest can-format-values-properly
|
||||||
|
(is (= ["VALUES (?, ?), (?, ?)" "foo1" "bar1" "foo2" "bar2"]
|
||||||
|
(sql/format (values [["foo1" "bar1"] ["foo2" "bar2"]]))))
|
||||||
|
|
||||||
|
(is (= ["(foo, bar) VALUES (1, ?)" "bar"]
|
||||||
|
(sql/format (values [{:foo 1 :bar "bar"}]))))
|
||||||
|
|
||||||
|
(is (= ["(foo, bar) VALUES (?, ?)" "foo" "bar"]
|
||||||
|
(sql/format (values [{:foo "foo" :bar "bar"}]))))
|
||||||
|
|
||||||
|
(is (= ["(foo, bar) VALUES (?, ?), (?, ?)" "foo1" "bar1" "foo2" "bar2"]
|
||||||
|
(sql/format (values [{:foo "foo1" :bar "bar1"} {:foo "foo2" :bar "bar2"}])))))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue