UNPKG

@stefanprobst/lokijs

Version:

Fast document oriented javascript in-memory database

88 lines (73 loc) 2.18 kB
(function (root, factory) { module.exports = factory(); }(this, function () { return (function () { const fs = require('fs'); const accessDataDir = (datadir) => { return new Promise((resolve, reject) => { fs.lstat(datadir, (err, stats) => { if (err) { reject({ message: 'Dir does not exist' }); } resolve(stats); }); }); }; const saveRecord = (coll, obj, dir) => { console.log(`File is ${dir}/${coll}/${obj.$loki}.json`); fs.writeFile(`${dir}/${coll}/${obj.$loki}.json`, JSON.stringify(obj), { encoding: 'utf8' }, (err) => { if (err) { console.log('Document save failed.'); throw err; } console.log('Document saved correctly'); }); }; const iterateFolders = (db, dir) => { console.log(`Colls: ${db.listCollections().length}`); console.log(`Changes: ${db.generateChangesNotification().length}`); db.generateChangesNotification().forEach(change => { saveRecord(change.name, change.obj, dir); }); }; class LokiIncrementalAdapter { constructor(options) { const config = options || { journaling: false, format: 'json' }; this.mode = 'reference'; this.journaling = config.journaling; this.format = config.format; } checkAvailability() { if (typeof fs !== 'undefined' && fs) return true; return false; } exportDatabase(dir, dbref, callback) { console.log('Saving with incremental adapter'); console.log('Database dir is ' + dir); const promise = accessDataDir(dir); console.log(promise); promise.then(() => { console.log('iterating folders...'); iterateFolders(dbref, dir); }); promise.catch((err) => { console.log(err); }); if (callback) { callback(); } } loadDatabase(dbname, callback) { console.log(this, dbname, callback); } } return LokiIncrementalAdapter; }()); }));