Files
old-spike/client/lib/databasable.js

71 lines
1.9 KiB
JavaScript
Raw Normal View History

2016-02-21 18:40:55 -06:00
import Loki from 'lokijs/src/lokijs';
import LokiIndexedAdapter from 'lokijs/src/loki-indexed-adapter';
2016-02-19 15:42:10 -06:00
2016-02-19 10:49:07 -06:00
const DEFAULTS = {
2016-02-19 15:42:10 -06:00
autosave: false
2016-02-19 10:49:07 -06:00
};
var databasable = {
accessDb: function(db_name, opts){
var databasable = this;
2016-02-19 15:42:10 -06:00
opts = Object.assign(Object.assign({
2016-02-21 18:40:55 -06:00
adapter: new LokiIndexedAdapter(db_name)
2016-02-19 15:42:10 -06:00
}, DEFAULTS), opts || {});
2016-02-21 18:40:55 -06:00
return new Promise((fnResolve, fnReject)=>{
2016-02-19 10:49:07 -06:00
if (!databasable.db) {
databasable.db = new Loki(db_name, opts);
databasable.db.loadDatabase({}, ()=>{
fnResolve(databasable.db);
});
} else { fnResolve(databasable.db); }
2016-02-21 18:40:55 -06:00
2016-02-19 10:49:07 -06:00
});
},
closeDb: function(){
var databasable = this;
if (databasable.db){
databasable.db.save();
databasable.db.close();
databasable.db = undefined;
}
},
collection: function(db_name, collection_name, options){
2016-02-19 10:49:07 -06:00
var databasable = this;
return databasable.accessDb(db_name)
2016-02-21 18:40:55 -06:00
.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);
});
}
2016-02-21 18:40:55 -06:00
}
return collection;
});
},
2016-02-19 10:49:07 -06:00
2016-02-19 15:42:10 -06:00
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]};
2016-02-19 15:42:10 -06:00
} else if (range[0] !== undefined) {
date_params[attr] = {'$gte': range[0]}
2016-02-19 15:42:10 -06:00
} else if (range[1] !== undefined) {
date_params[attr] = {'$lte': range[1]}
2016-02-19 15:42:10 -06:00
}
return date_params;
}
2016-02-19 10:49:07 -06:00
};
2016-02-21 18:40:55 -06:00
export default databasable;