summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorCarlo Zancanaro <carlo@clearboxsystems.com.au>2013-05-15 17:39:06 +1000
committerCarlo Zancanaro <carlo@clearboxsystems.com.au>2013-05-15 17:39:06 +1000
commit4101c8b9ddae51793296c99dcd90a01edae55d9d (patch)
tree65e7863f4f6d2114af6459ccabc7edaff3d65050 /README.md
parentcc7977c6319a8e20eebb0958d08e287b9f489b2a (diff)
Update readme, add stubs, make two vars private.
Diffstat (limited to 'README.md')
-rw-r--r--README.md30
1 files changed, 21 insertions, 9 deletions
diff --git a/README.md b/README.md
index cd688cc..e9ebb86 100644
--- a/README.md
+++ b/README.md
@@ -1,24 +1,33 @@
# clojure-sql
-A DSL for [Clojure][1] to compose queries using the constructs of [Relational
-Algebra][2]. The RA constructs are then compiled into an SQL query to be run on
-a DBMS.
+A DSL for [Clojure][1] to compose queries using the constructs of
+[Relational Algebra][2]. The RA constructs are then compiled into an
+SQL query to be run on a DBMS. `clojure-sql` doesn't connect to a
+database itself, but rather can be configured to perform an action
+when a query is dereferenced.
-`clojure-sql` provides some utility functions beyond strict RA to allow for
-data to be inserted, updated and deleted.
+`clojure-sql` provides some utility functions beyond strict RA to
+allow for data to be inserted, updated and deleted.
`clojure-sql` provides no mechanism to create database schemas.
[1]: http://clojure.org/
[2]: http://en.wikipedia.org/wiki/Relational_Algebra
+## Database support
+
+`clojure-sql` aims to have an extensible compiler. Compilation of
+queries is performed by multimethods which dispatch on an arbitrary
+(and otherwise unused) `db` parameter. This allows the compilation of
+queries to be entirely special-cased per database. By default
+`clojure-sql` will produce standard SQL.
+
## Usage
(require '[clojure-sql.core :as s])
(-> (s/table :users)
- (s/project [:id :username])
- deref)
+ (s/project [:id :username]))
; => ["SELECT \"users\".\"id\", \"users\".\"username\" FROM \"users\""]
(-> (s/table {:users :u})
@@ -28,9 +37,12 @@ data to be inserted, updated and deleted.
(s/project {:id :pid, :fname :first})
(s/select '(= :first "Henry")))
'(= :uid :pid))
- (s/project [:username])
- deref)
+ (s/project [:username]))
; => ["SELECT \"u\".\"username\" FROM \"users\" AS \"u\" JOIN \"people\" AS \"p\" ON (\"u\".\"id\" = \"p\".\"id\") WHERE (\"p\".\"fname\" = ?)" "Henry")]
+
+ (s/use-jdbc!)
+ ; => nil
+
## License