dont know what happened
This commit is contained in:
70
client/lib/databasable.js
Normal file
70
client/lib/databasable.js
Normal file
@@ -0,0 +1,70 @@
|
||||
import Loki from 'lokijs/src/lokijs';
|
||||
import LokiIndexedAdapter from 'lokijs/src/loki-indexed-adapter';
|
||||
|
||||
const DEFAULTS = {
|
||||
autosave: false
|
||||
};
|
||||
|
||||
var databasable = {
|
||||
|
||||
accessDb: function(db_name, opts){
|
||||
var databasable = this;
|
||||
opts = Object.assign(Object.assign({
|
||||
adapter: new LokiIndexedAdapter(db_name)
|
||||
}, DEFAULTS), opts || {});
|
||||
return new Promise((fnResolve, fnReject)=>{
|
||||
if (!databasable.db) {
|
||||
databasable.db = new Loki(db_name, opts);
|
||||
databasable.db.loadDatabase({}, ()=>{
|
||||
fnResolve(databasable.db);
|
||||
});
|
||||
} else { fnResolve(databasable.db); }
|
||||
|
||||
});
|
||||
},
|
||||
|
||||
closeDb: function(){
|
||||
var databasable = this;
|
||||
if (databasable.db){
|
||||
databasable.db.save();
|
||||
databasable.db.close();
|
||||
databasable.db = undefined;
|
||||
}
|
||||
},
|
||||
|
||||
collection: function(db_name, collection_name, options){
|
||||
var databasable = this;
|
||||
return databasable.accessDb(db_name)
|
||||
.then((db)=>{
|
||||
var collection = db.getCollection(collection_name)
|
||||
if (!collection){
|
||||
collection = db.addCollection(collection_name, options);
|
||||
if (options && options.unique_indices){
|
||||
options.unique_indices.forEach((field)=>{
|
||||
collection.ensureUniqueIndex(field);
|
||||
});
|
||||
}
|
||||
}
|
||||
return collection;
|
||||
});
|
||||
},
|
||||
|
||||
rangeToLokiParams: function(attr, range){
|
||||
var date_params = {};
|
||||
if (range[0] !== undefined && range[0] !== undefined){
|
||||
var start_condition = {},
|
||||
end_condition = {};
|
||||
date_params['$and'] = [start_condition, end_condition];
|
||||
start_condition[attr] = {'$gte': range[0]};
|
||||
end_condition[attr] = {'$lte': range[1]};
|
||||
} else if (range[0] !== undefined) {
|
||||
date_params[attr] = {'$gte': range[0]}
|
||||
} else if (range[1] !== undefined) {
|
||||
date_params[attr] = {'$lte': range[1]}
|
||||
}
|
||||
return date_params;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
export default databasable;
|
||||
Reference in New Issue
Block a user