-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprovider.js
91 lines (80 loc) · 2.89 KB
/
provider.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
var Db = require('mongodb').Db;
var Connection = require('mongodb').Connection;
var Server = require('mongodb').Server;
var BSON = require('mongodb').BSON;
var ObjectID = require('mongodb').ObjectID;
var Provider = Provider || {};
Provider.config = {
init: function(database, host, port) {
this.db = new Db(database, new Server(host, port, {safe: false}, {auto_reconnect: true}, {}));
this.db.open(function(){});
},
getCollection: function(collection, callback) {
this.db.collection(collection, function(error, selected_collection) {
if( error ) {
callback(error);
} else {
callback(null, selected_collection);
}
});
}
};
Provider.query = {
get: function(collection, search_object, settings, callback) {
Provider.config.getCollection(collection, function(error, selected_collection) {
if( error ) callback(error)
else {
var sort = {};
var limit = 100;
if(settings.length != 'undefined') {
if(settings.sort) {
sort = settings.sort;
}
if(settings.limit) {
limit = settings.limit;
}
}
selected_collection.find(search_object).sort(sort).limit(limit).toArray(function(error, results) {
if( error ) {
callback(error);
} else {
callback(null, results);
}
});
}
});
},
getById: function(collection, search_object, callback) {
Provider.config.getCollection(collection, function(error, selected_collection) {
if( error ) callback(error)
else {
selected_collection.find({_id: ObjectID(search_object.id.toString())}).toArray(function(error, results) {
if( error ) {
callback(error);
} else {
callback(null, results);
}
});
}
});
},
save: function(collection, data, callback) {
Provider.config.getCollection(collection, function(error, selected_collection) {
if( error ) {
callback(error);
} else {
if(typeof(data.length) == 'undefined') {
data = [data];
}
for( var i = 0; i < data.length; i++ ) {
data = data[i];
data.created_at = new Date();
}
selected_collection.insert(data, function() {
callback(null, data);
});
}
});
}
};
exports.Provider = Provider;