molly-db 1.3.2 → 1.3.4
Sign up to get free protection for your applications and to get access to all the features.
- package/module/import_handler.js +3 -0
- package/module/init_handler.js +2 -1
- package/module/memory_handler.js +2 -2
- package/module/utils.js +60 -24
- package/module/worker_handler.js +1 -0
- package/package.json +3 -5
package/module/init_handler.js
CHANGED
package/module/memory_handler.js
CHANGED
@@ -22,8 +22,8 @@ module.exports = function( data,inst,db ){
|
|
22
22
|
for( var i in input ){
|
23
23
|
const cfg = copy(data,input[i]); try {
|
24
24
|
const bool = await utils.validator(db,cfg);
|
25
|
-
if( bool )
|
26
|
-
else
|
25
|
+
if( !bool[0] ) return reject(bool[1]);
|
26
|
+
else result.push(await utils[cfg.type](cfg,db));
|
27
27
|
} catch(e) {
|
28
28
|
return reject({ status:404, message:`error: ${e.message}` })
|
29
29
|
}
|
package/module/utils.js
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
/*--────────────────────────────────────────────────────────────────────────────────────────────--*/
|
2
2
|
|
3
3
|
const crypto = require('./crypto_handler');
|
4
|
+
const init = require('./init_handler');
|
4
5
|
const path = require('path');
|
5
6
|
const output = new Object();
|
6
7
|
const fs = require('fs');
|
@@ -11,28 +12,27 @@ output.validator = function( db, params ){
|
|
11
12
|
return new Promise((response,reject)=>{
|
12
13
|
|
13
14
|
let validator = false; output.bodyParser( params );
|
14
|
-
const vdb = (
|
15
|
-
const vtb = (
|
15
|
+
const vdb = ()=>db._init_.DB.some(x=>x.name==params.db);
|
16
|
+
const vtb = ()=>db._init_.DB.some(x=>x.tables?.join().match(params.table));
|
16
17
|
|
17
18
|
validator = [
|
19
|
+
[ !params?.db, 'params.db = "test"' ],
|
18
20
|
[ !params?.offset, 'params.offset = 0' ],
|
19
21
|
[ !params?.target, 'params.target = ""' ],
|
20
22
|
[ !params?.length, 'params.length = 100' ],
|
23
|
+
[ !params?.table, 'params.table = "test"' ],
|
21
24
|
].every(x=>{ if(x[0]) eval(x[1]); return true; });
|
22
25
|
|
23
26
|
validator = [
|
24
27
|
[!params?.db, {status:404,message:'error: no db name added'}],
|
25
|
-
[!params?.table, {status:404,message:'error: no table name added'}]
|
26
|
-
].some(x=>{ if(x[0]) response(0
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
].some(x=>{ if(x[0]) response(0); /*reject(x[1])*/ return x[0];}); if(validator) return 0;
|
33
|
-
}
|
28
|
+
[!params?.table, {status:404,message:'error: no table name added'}],
|
29
|
+
].some(x=>{ if(x[0]) response([0,x[1]]); return x[0];}); if(validator) return 0;
|
30
|
+
|
31
|
+
validator = [
|
32
|
+
[!vdb(), output.addDB(params,db)],
|
33
|
+
[!vtb(), output.addTable(params,db)],
|
34
|
+
].some(x=>x[0]); response([1,'']);
|
34
35
|
|
35
|
-
response(1); //response();
|
36
36
|
});
|
37
37
|
}
|
38
38
|
|
@@ -69,9 +69,9 @@ const modifyDB = async function( data, db, _name, _table ){
|
|
69
69
|
try{const length = db[_name][_table].length;
|
70
70
|
if( !(length>0) ) fs.writeFileSync(dir,'');
|
71
71
|
else await encryptDB( data, db, _name, _table, dir );
|
72
|
-
} catch(e) {
|
72
|
+
} catch(e) { fs.unlinkSync( dir ); }
|
73
73
|
|
74
|
-
} catch(e) {
|
74
|
+
} catch(e) { return parseError(db,data,e) }
|
75
75
|
}
|
76
76
|
|
77
77
|
const parseData = function( db,params,_data, _length ){
|
@@ -132,6 +132,18 @@ output.unshift = function( data,db ){ db._update_ = true;
|
|
132
132
|
|
133
133
|
/*-- ── --*/
|
134
134
|
|
135
|
+
output.tableList = function( data,db ){
|
136
|
+
const result = Object.keys(db[data.db]);
|
137
|
+
return parseData( db,data,result );
|
138
|
+
}
|
139
|
+
/*
|
140
|
+
output.dbList = function( data,db ){
|
141
|
+
const result = Object.keys(db);
|
142
|
+
return parseData( db,data,result );
|
143
|
+
}
|
144
|
+
*/
|
145
|
+
/*-- ── --*/
|
146
|
+
|
135
147
|
output.list = function(data,db){
|
136
148
|
try{return parseData( db,data,
|
137
149
|
db[data.db][data.table].slice(
|
@@ -227,11 +239,14 @@ output.removeDB = function(data,db){
|
|
227
239
|
};
|
228
240
|
|
229
241
|
for( var i in db._init_.DB ){
|
230
|
-
if( db._init_.DB.name == data.db ){
|
242
|
+
if( db._init_.DB[i].name == data.db ){
|
231
243
|
db._init_.DB[i].tables.map(x=>{
|
232
|
-
|
233
|
-
|
234
|
-
|
244
|
+
const dir = path.join(data.path,`${x}.json`);
|
245
|
+
if( fs.existsSync(dir) ) fs.unlinkSync(dir);
|
246
|
+
});
|
247
|
+
const arr = db._init_.DB; arr.splice(i,1);
|
248
|
+
db._init_.DB = arr||new Array();
|
249
|
+
delete db[data.db];
|
235
250
|
break;
|
236
251
|
}
|
237
252
|
}
|
@@ -286,12 +301,15 @@ output.removeTable = function(data,db){
|
|
286
301
|
|
287
302
|
for( var i in db._init_.DB ){
|
288
303
|
if( db._init_.DB[i].name == data.db ){
|
289
|
-
const
|
290
|
-
|
291
|
-
|
304
|
+
const dir = path.join(data.path,`${data.table}.json`);
|
305
|
+
const j = db._init_.DB[i].tables.indexOf(data.table);
|
306
|
+
if( fs.existsSync(dir) ) fs.unlinkSync(dir);
|
307
|
+
const arr = db._init_.DB[i].tables; arr.splice(j,1);
|
308
|
+
db._init_.DB[i].tables = arr||new Array();
|
309
|
+
delete db[data.db][data.table];
|
292
310
|
}
|
293
311
|
}
|
294
|
-
|
312
|
+
|
295
313
|
return {
|
296
314
|
status: 200,
|
297
315
|
database: data.db,
|
@@ -306,14 +324,32 @@ output.removeTable = function(data,db){
|
|
306
324
|
|
307
325
|
output.saveAll = async function(data,db){
|
308
326
|
try { for( var i in db['_init_'] ){ for( var j in db['_init_'][i] ){
|
309
|
-
const {name,tables} = db['_init_'][i][j];
|
327
|
+
const { name, tables } = db['_init_'][i][j];
|
310
328
|
for( var k in tables ) await modifyDB(data,db,name,tables[k])
|
311
329
|
}} return {
|
312
330
|
status: 200,
|
313
331
|
database: data.db,
|
314
332
|
table: data.table,
|
315
333
|
message: 'DB Saved'
|
316
|
-
}} catch(e) {
|
334
|
+
}} catch(e) { return parseError(db,data,e) }
|
335
|
+
}
|
336
|
+
|
337
|
+
/*--────────────────────────────────────────────────────────────────────────────────────────────--*/
|
338
|
+
|
339
|
+
output.reset = async function(data,db){
|
340
|
+
const args = JSON.parse(process.env.MOLLY_DB_ARGS);
|
341
|
+
return new Promise((response,reject)=>{
|
342
|
+
init( args ).then((ndb)=>{ db = ndb;
|
343
|
+
|
344
|
+
return response({
|
345
|
+
status: 200,
|
346
|
+
database: data.db,
|
347
|
+
table: data.table,
|
348
|
+
message: 'DB Reseted'
|
349
|
+
});
|
350
|
+
|
351
|
+
}).catch((e)=>{ response(parseError(db,data,e)) });
|
352
|
+
})
|
317
353
|
}
|
318
354
|
|
319
355
|
/*--────────────────────────────────────────────────────────────────────────────────────────────--*/
|
package/module/worker_handler.js
CHANGED
@@ -26,6 +26,7 @@ function saveTimeout(data,db){
|
|
26
26
|
/*--────────────────────────────────────────────────────────────────────────────────────────────--*/
|
27
27
|
|
28
28
|
module.exports = (args)=>{
|
29
|
+
process.env.MOLLY_DB_ARGS = JSON.stringify(args);
|
29
30
|
init( args ).then((db)=>{ saveTimeout( args, db );
|
30
31
|
const dir = path.join(__dirname,'server_worker.js');
|
31
32
|
const srv = new worker.Worker(dir,{ workerData: args });
|
package/package.json
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
{
|
2
|
-
"scripts": {
|
3
|
-
"start": "node main"
|
4
|
-
},
|
2
|
+
"scripts": { "start": "node main" },
|
5
3
|
"repository": "https://github.com/EDBC-REPO-NPM/Molly-db",
|
6
4
|
"dependencies": {
|
7
|
-
"crypto-js": "^4.1.1",
|
8
5
|
"molly-fetch": "^1.0.16",
|
6
|
+
"crypto-js": "^4.1.1",
|
9
7
|
"ws": "^8.11.0"
|
10
8
|
},
|
11
9
|
"license": "MIT",
|
12
10
|
"main": "main.js",
|
13
11
|
"name": "molly-db",
|
14
|
-
"version": "1.3.
|
12
|
+
"version": "1.3.4",
|
15
13
|
"author": "bececrazy",
|
16
14
|
"description": "Molly-db is a free and open source library for nodejs that allow you create a lightweight encrypted database using Json files",
|
17
15
|
"keywords": [
|