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 | }));
|