Skip to content
This repository has been archived by the owner on Nov 5, 2018. It is now read-only.

Commit

Permalink
Added version 0.1.6
Browse files Browse the repository at this point in the history
Added Update
Refactored tests to cleanup as the very first thing they do
  • Loading branch information
dscape committed Aug 15, 2011
1 parent bfea288 commit 17d7f40
Show file tree
Hide file tree
Showing 12 changed files with 61 additions and 12 deletions.
7 changes: 5 additions & 2 deletions README.md
Expand Up @@ -53,7 +53,8 @@ Don't forget to delete the database you created:

Assuming `var db = nano.use("somedb");`:

db.insert(doc_name,doc,callback)
db.insert(doc_name,doc,callback) // doc_name is optional
db.update(doc_name,rev,doc,callback)
db.destroy(doc_name,rev,callback)
db.get(doc_name,callback)
db.list(callback)
Expand All @@ -65,7 +66,7 @@ Assuming `var db = nano.use("somedb");`:
nano.db.get(db_name,callback)
nano.db.list(callback)
nano.db.compact(db_name,callback)
nano.db.replicate(source,target,continuous,callback) // Continuous is optional
nano.db.replicate(source,target,continuous,callback) // continuous is optional

### Other / Advanced

Expand All @@ -87,6 +88,8 @@ Some future plans are mostly:
3. Convenience functions for attachments
4. Support views
5. Support bulk load
6. `_uuids`, `_stats`, `_config`, `_active_tasks`, `_all_docs_by_seq`
7. Support `batch` in updates and inserts.

Great segway to contribute.

Expand Down
11 changes: 11 additions & 0 deletions nano.js
Expand Up @@ -218,6 +218,16 @@ module.exports = exports = nano = function database_module(cfg) {
relax(opts,callback);
}

/*
* Updates a document in a CouchDB Database
*
* @see relax
*/
function update_doc(doc_name,rev,doc,callback) {
doc._rev = rev;
relax({ db: db_name, doc: doc_name, method: "PUT", body: doc},callback);
}

/*
* Destroy a document from CouchDB Database
*
Expand Down Expand Up @@ -259,6 +269,7 @@ module.exports = exports = nano = function database_module(cfg) {
//, changes: { add: add_listener
// , remove: remove_listener}
, insert: insert_doc
, update: update_doc
, get: get_doc
, destroy: destroy_doc
//, bulk: bulk_doc
Expand Down
2 changes: 1 addition & 1 deletion package.json
@@ -1,7 +1,7 @@
{ "name": "nano"
, "description": "NanoCouch is a minimalistic driver for CouchDB built on mikeals/request"
, "homepage": "http://github.com/dscape/nanocouch"
, "version": "0.1.5"
, "version": "0.1.6"
, "author": "Nuno Job <nunojobpinto@gmail.com> (http://nunojob.com)"
, "keywords": ["CouchDB", "data", "request", "json", "nosql", "micro", "nano"]
, "dependencies": { "request": ">=1.9.8", "b64": "1.0.0" }
Expand Down
4 changes: 2 additions & 2 deletions tests/db/create.js
Expand Up @@ -16,9 +16,9 @@ function create_db (callback) {
}

function create_db_ok(e,h,b) {
nano.db.destroy("db_cr1");
assert.isNull(e);
assert.equal(b.ok, true);
nano.db.destroy("db_cr1");
}

/*****************************************************************************
Expand All @@ -40,8 +40,8 @@ function recursive_retries_create_db(tried,callback) {
}

function recursive_retries_create_db_ok(v) {
assert.equal(v,true);
nano.db.destroy("db_cr2");
assert.equal(v,true);
}

vows.describe('nano.db.create').addBatch({
Expand Down
2 changes: 1 addition & 1 deletion tests/db/destroy.js
Expand Up @@ -16,9 +16,9 @@ function destroy_db(callback) {
}

function destroy_db_ok(e,h,b) {
nano.db.destroy("db_de1");
assert.isNull(e);
assert.equal(b.ok, true);
nano.db.destroy("db_de1");
}

vows.describe('nano.db.destroy').addBatch({
Expand Down
2 changes: 1 addition & 1 deletion tests/db/get.js
Expand Up @@ -16,11 +16,11 @@ function get_db(callback) {
}

function get_db_ok(e,h,b) {
nano.db.destroy("db_ge1");
assert.isNull(e);
assert.equal(b.doc_count,0);
assert.equal(b.doc_del_count,0);
assert.equal(b.db_name,"db_ge1");
nano.db.destroy("db_ge1");
}

vows.describe('nano.db.get').addBatch({
Expand Down
2 changes: 1 addition & 1 deletion tests/db/list.js
Expand Up @@ -16,9 +16,9 @@ function list_db (callback) {
}

function list_db_ok (e,h,b) {
nano.db.destroy("db_li1");
assert.isNull(e);
assert.notEqual(b.indexOf("db_li1"),-1);
nano.db.destroy("db_li1");
}

vows.describe('nano.db.list').addBatch({
Expand Down
2 changes: 1 addition & 1 deletion tests/doc/destroy.js
Expand Up @@ -20,11 +20,11 @@ function destroy_doc(callback) {
}

function destroy_doc_ok(e,h,b) {
nano.db.destroy(db_name);
assert.isNull(e);
assert.ok(b.ok);
assert.equal(b.id, "foo");
assert.ok(b.rev);
nano.db.destroy(db_name);
}

vows.describe('db.destroy').addBatch({
Expand Down
2 changes: 1 addition & 1 deletion tests/doc/get.js
Expand Up @@ -20,11 +20,11 @@ function get_doc(callback) {
}

function get_doc_ok(e,h,b) {
nano.db.destroy(db_name);
assert.isNull(e);
assert.ok(b._rev);
assert.equal(b._id, "foo");
assert.equal(b.foo, "bar");
nano.db.destroy(db_name);
}

vows.describe('db.get').addBatch({
Expand Down
2 changes: 1 addition & 1 deletion tests/doc/insert.js
Expand Up @@ -15,11 +15,11 @@ function insert_doc(callback) {
}

function insert_doc_ok(e,h,b) {
nano.db.destroy(db_name);
assert.isNull(e);
assert.ok(b.ok);
assert.ok(b.rev);
assert.ok(b.id);
nano.db.destroy(db_name);
}

vows.describe('db.insert').addBatch({
Expand Down
2 changes: 1 addition & 1 deletion tests/doc/list.js
Expand Up @@ -23,10 +23,10 @@ function list_doc(callback) {
}

function list_doc_ok(e,h,b) {
nano.db.destroy(db_name);
assert.isNull(e);
assert.equal(b.total_rows,3);
assert.ok(b.rows);
nano.db.destroy(db_name);
}

vows.describe('doc.list').addBatch({
Expand Down
35 changes: 35 additions & 0 deletions tests/doc/update.js
@@ -0,0 +1,35 @@
var vows = require('/usr/lib/node_modules/vows/lib/vows')
, assert = require('assert')
, cfg = require('../../cfg/tests.js')
, nano = require('../../nano')(cfg)
, db_name = "doc_up1"
, db = nano.use(db_name);

/*****************************************************************************
* update_doc *
*****************************************************************************/
function update_doc(callback) {
nano.db.create(db_name, function () {
db.insert("foo", {foo: "bar"}, function (_,_,b) {
db.update("foo", b.rev, {foo: "baz"}, function (e,_,b) {
callback(e,b);
return;
});
});
});
}

function update_doc_ok(e,b) {
nano.db.destroy(db_name);
assert.isNull(e);
assert.equal(b.id, "foo");
assert.ok(b.ok);
assert.ok(b.rev);
}

vows.describe('db.update').addBatch({
"update_doc": {
topic: function () { update_doc(this.callback); }
, "=": update_doc_ok
}
}).exportTo(module);

0 comments on commit 17d7f40

Please sign in to comment.