-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrepository.js
More file actions
96 lines (80 loc) · 2.56 KB
/
repository.js
File metadata and controls
96 lines (80 loc) · 2.56 KB
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
91
92
93
94
95
96
/* global process, __dirname */
(function () {
"use strict";
var q = require("q"),
_ = require('lodash');
var db = (function () {
var Datastore = require('nedb');
var dbfile = function (collection) {
var path = __dirname + "/__data/";
return path + collection + ".db"
};
var collections = {};
["Route", "Cycle", "Address", "User", "Notification"].forEach(function (entity) {
collections[entity] = new Datastore({ filename: dbfile(entity), autoload: true });
});
return collections;
})();
var generateUniqueId = function () {
var d = Date.now();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
return uuid;
};
var stripDatabaseIds = function (collection) {
_.forEach(collection, function (item) {
delete (item["_id"]);
});
};
var get = function (query) {
var collection = this,
deferred = q.defer();
try {
db[collection].find(query || {}, function (err, items) {
if (err || !items) {
console.log("No items found");
}
else {
console.log((items.length) + " items found");
stripDatabaseIds(items);
}
deferred.resolve(items);
});
}
catch (ex) {
console.error(ex);
deferred.reject(ex);
}
return deferred.promise;
};
var put = function (entity) {
var collection = this,
deferred = q.defer();
try {
db[collection].insert(entity, function (err, newEntity) {
if (err || !newEntity) {
console.log("Insert failed");
}
deferred.resolve(newEntity);
});
}
catch (ex) {
console.error(ex);
deferred.reject(ex);
}
return deferred.promise;
};
var service = {
get: function (collection, query) {
return get.call(collection, query);
},
put: function (collection, entity) {
return put.call(collection, entity);
},
getUsers: get.bind("User")
};
module.exports = service;
})();