/
db.js
91 lines (83 loc) · 1.64 KB
/
db.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/**
* Local DB access methods
*
* Uses couchdb
*/
var util = require('util'),
http = require('http');
function DB(host, port) {
this.host = host;
this.port = port;
}
/**
* CouchDB general functions.
* Callback signature: error, object returned
*/
DB.prototype.put = function(path, obj, callback) {
var options = {
host: this.host,
port: this.port,
path: path,
method: "PUT",
headers: {"Content-Type":"applicaton/json"},
};
var req = http.request(options, function (res) {
var data = "";
res.on('data', function(chunk) {
data += chunk;
});
res.on('end', function () {
callback(null, JSON.parse(data));
});
});
req.on('error', function (e) {
callback(e);
});
req.write(JSON.stringify(obj));
req.end();
}
DB.prototype.get = function(path, callback) {
var options = {
host: this.host,
port: this.port,
path: path,
method: "GET"
};
var req = http.request(options, function (res) {
var data = "";
res.on('data', function(chunk) {
data += chunk;
});
res.on('end', function() {
callback(null, JSON.parse(data));
});
});
req.on('error', function (e) {
callback(e);
});
req.end();
}
DB.prototype.delete = function deleteDB(path, obj, callback) {
var options = {
host: this.host,
port: this.port,
path: path + "?rev=" + obj._rev,
method: "DELETE"
};
var req = http.request(options, function(res) {
var data = "";
res.on('data', function(chunk) {
data += chunk;
});
res.on('end', function () {
callback(null, JSON.parse(data));
});
});
req.on('error' , function(e) {
callback(e);
});
req.end();
}
exports.create = function(host, port) {
return new DB(host, port);
};