A Common Lisp client to Cassandra using the native protocol (V2)
QuickLisp is probably the most sane way to install CL libraries. Ensure you have this set up and working.
cd $QUICKLISP_HOME/local-projects
git clone https://github.com/AeroNotix/cqlcl.git
sbcl --eval "(ql:quickload :cqlcl)"
This will install all required dependencies.
(defparameter *cxn* (cqlcl:make-connection))
(let ((create-keyspace "CREATE KEYSPACE cqlcl
WITH replication = {
'class': 'SimpleStrategy', 'replication_factor': '1'
}"))
(query *cxn* create-keyspace))
;; T
;; "CREATED: cqlcl."
(let ((create-table "CREATE TABLE cqlcl.readme (
id uuid PRIMARY KEY,
name text,
value int
)"))
(query *cxn* create-table))
;; T
;; "CREATED: cqlcl.readme
(query *cxn* "SELECT * FROM cqlcl.readme")
;; NIL
(prepare *cxn* "INSERT INTO cqlcl.readme (id, name, value) VALUES(?, ?, ?)")
;; No value
(execute *cxn* "INSERT INTO cqlcl.readme (id, name, value) VALUES(?, ?, ?)"
(uuid:make-v4-uuid) "HELLO" 123)
;; No value
(execute *cxn* "INSERT INTO cqlcl.readme (id, name, value) VALUES(?, ?, ?)"
(uuid:make-v4-uuid) "HELLO" 123)
;; No value
(execute *cxn* "INSERT INTO cqlcl.readme (id, name, value) VALUES(?, ?, ?)"
(uuid:make-v4-uuid) "HELLO" 123)
;; No value
(query *cxn* "SELECT * FROM cqlcl.readme")
((B16805B2-FDA8-4DF5-811B-77F46FFE2BBB "HELLO" 123)
(DF0922E4-BB82-4C59-A32C-CBFD859CC3AD "HELLO" 123)
(43B0683F-8372-4BFC-B2CB-93706360A2D7 "HELLO" 123))
Cassandra type | CL type |
---|---|
ascii | string |
bigint | integer |
blob | byte-vector |
boolean | boolean |
counter | not implemented |
decimal | float |
double | float |
float | float |
inet | cqlcl:ip |
int | integer |
timestamp | integer |
timeuuid | uuid:uuid |
uuid | uuid:uuid |
varchar/text | string |
varint | not implemented |
list | list |
set | list |
map | hashtbale |
custom | not implemented |