UNPKG

2.18 kBJavaScriptView Raw
1(function (root, factory) {
2
3 module.exports = factory();
4
5}(this, function () {
6 return (function () {
7
8 const fs = require('fs');
9
10 const accessDataDir = (datadir) => {
11 return new Promise((resolve, reject) => {
12 fs.lstat(datadir, (err, stats) => {
13 if (err) {
14 reject({
15 message: 'Dir does not exist'
16 });
17 }
18 resolve(stats);
19 });
20 });
21 };
22
23 const saveRecord = (coll, obj, dir) => {
24 console.log(`File is ${dir}/${coll}/${obj.$loki}.json`);
25 fs.writeFile(`${dir}/${coll}/${obj.$loki}.json`, JSON.stringify(obj), {
26 encoding: 'utf8'
27 }, (err) => {
28 if (err) {
29 console.log('Document save failed.');
30 throw err;
31 }
32 console.log('Document saved correctly');
33 });
34 };
35
36 const iterateFolders = (db, dir) => {
37 console.log(`Colls: ${db.listCollections().length}`);
38
39 console.log(`Changes: ${db.generateChangesNotification().length}`);
40 db.generateChangesNotification().forEach(change => {
41 saveRecord(change.name, change.obj, dir);
42 });
43 };
44
45 class LokiIncrementalAdapter {
46 constructor(options) {
47 const config = options || {
48 journaling: false,
49 format: 'json'
50 };
51 this.mode = 'reference';
52 this.journaling = config.journaling;
53 this.format = config.format;
54 }
55
56 checkAvailability() {
57 if (typeof fs !== 'undefined' && fs) return true;
58 return false;
59 }
60
61 exportDatabase(dir, dbref, callback) {
62 console.log('Saving with incremental adapter');
63
64 console.log('Database dir is ' + dir);
65 const promise = accessDataDir(dir);
66 console.log(promise);
67 promise.then(() => {
68 console.log('iterating folders...');
69 iterateFolders(dbref, dir);
70 });
71 promise.catch((err) => {
72 console.log(err);
73 });
74 if (callback) {
75 callback();
76 }
77 }
78
79 loadDatabase(dbname, callback) {
80 console.log(this, dbname, callback);
81 }
82 }
83
84 return LokiIncrementalAdapter;
85
86 }());
87}));