-
Notifications
You must be signed in to change notification settings - Fork 0
/
pantry_nedb.js
115 lines (99 loc) · 2.64 KB
/
pantry_nedb.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
var Datastore = require('nedb');
var path = require('path');
/*
file:
- id_name : original name + md5(8 digit)
- id_dir : pantry location
- id_path : id_dir+id_name
- name
- path
- ext
- type
- md5
- birth_time
- modify_time
- change_time
*/
var Pantry = function (db_home) {
var pantry_ = path.join(db_home, 'pantry.nedb');
var comments_ = path.join(db_home, 'comments.nedb');
var db_ = new Datastore({filename: pantry_, autoload: true});
var db_comments = new Datastore({filename: comments_, autoload: true});
this.Remove = Remove;
this.SaveFile = SaveFile;
this.GetAll = GetAll;
this.GetByDate = GetByDate;
this.GetByType = GetByType;
this.GetByOneDay = GetByOneDay;
this.GetComments = GetComments;
this.SaveComments = SaveComments;
this.DeleteComments = DeleteComments;
SetUpIndex();
function Remove(file_id_path) {
db_.remove({ _id: file_id_path }, {}, function (err, numRemoved) {});
}
function SaveFile(file) {
file['_id'] = file['id_path']
db_.insert(file, function(err, doc) {});
}
function GetAll(on_file_records) {
db_.find({}, function (err, docs) {
if (!err) {
on_file_records(docs);
}
});
}
function GetByDate(iso_date, on_file_records) {
db_.find({ birth_time: iso_date }).sort({ birth_time: -1 }).exec(function (err, docs) {
if (!err) {
on_file_records(docs);
}
});
}
function GetByOneDay(iso_day, on_file_records) {
var re_iso_day = new RegExp(iso_day);
db_.find({ birth_time: { $regex: re_iso_day } }).sort({ birth_time: -1 }).exec(function (err, docs) {
if (!err) {
on_file_records(docs);
}
});
}
function GetByType(type_name, on_file_records) {
db_.find({ type: type_name }).sort({ birth_time: -1 }).exec(function (err, docs) {
if (!err) {
on_file_records(docs);
}
});
}
function GetComments(idpath, on_comments) {
db_comments.find({id_path:idpath}).sort({creation_time: 1}).exec(function (err, docs) {
if (!err) {
on_comments(docs);
}
});
}
function SaveComments(comment, onsuccess) {
/*
id_path, comment, creation_time
*/
db_comments.insert(comment, function(err, doc) {
if (!err) {
onsuccess(doc);
}
});
}
function DeleteComments(commentid, onsuccess) {
db_comments.remove({ _id: commentid }, {}, function (err, numRemoved) {
if (!err) {
onsuccess(commentid);
}
});
}
function SetUpIndex() {
db_.ensureIndex({fieldName: 'birth_time'}, function(err) {});
db_.ensureIndex({fieldName: 'type'}, function(err) {});
db_comments.ensureIndex({fieldName: 'id'}, function(err) {});
db_comments.ensureIndex({fieldName: 'id_path'}, function(err) {});
}
}
module.exports.Pantry = Pantry;