Clutch is a Clojure library for Apache CouchDB. Although it’s in an early stage of development (Clutch API subject to change), Clutch supports most of the basic Apache CouchDB APIs. To get a sense of where we are at with Clutch, please view the tests.
(ns #^{:author "Tunde Ashafa"}
clutch-example
(:use com.ashafa.clutch))
(def example-database
(get-database {:name "clutch_test_db"
:language "clojure"})) ; use Clutch (Clojure) view server
(with-db example-database
;; insert or update multiple documents
(bulk-update [{:test-grade 10}
{:test-grade 20}
{:test-grade 30}])
;; create temporary or permanent views using clojure
(ad-hoc-view
(with-clj-view-server
{:map (fn [doc] [[nil (:test-grade doc)]])
:reduce (fn [keys values _] (apply + values))}))) ; => 60
Clutch uses Leiningen. For installation and help on using Leiningen visit the github repo.
To include Clutch in your project, simply add the following to your project.clj:
(:dependencies [com.ashafa/clutch "0.2.4"])
and run…
lein deps
To use Clojure for views and filters, add the following to the ‘local.ini’ file of your CouchDB installation (replacing <path to…> with the appropiate paths to the jars which reside in the “lib” folder in your project folder).
[query_servers] clojure = java -cp <path to clojure.jar>/clojure.jar:<path to clojure-contrib.jar>/clojure-contrib.jar:clutch.jar com.ashafa.clutch.view_server
Appreciations go out to: