bonsaif 1.10.39 → 1.10.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -133
- package/lib/execute.js +15 -4
- package/lib/hookup/exec.js +2 -4
- package/lib/hookup/mariadb.js +10 -28
- package/lib/hookup/mongodb.js +177 -193
- package/lib/hookup/mongoose.js +126 -12
- package/lib/hookup/postgres.js +27 -35
- package/lib/hookup/redis.js +42 -162
- package/package.json +14 -5
- package/tests/config.js +64 -0
package/lib/hookup/mongodb.js
CHANGED
|
@@ -24,24 +24,24 @@ const find=async(options,dbm, col, query, orderby, limit)=>{
|
|
|
24
24
|
//let obj_result = {"alias":alias,"dml":dml,"headers":"","columns":0,"error":0,"msg":"","ip":ip, "time":0}
|
|
25
25
|
return new Promise((resolve, reject)=>{
|
|
26
26
|
mongoclient.then(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
27
|
+
function(client){
|
|
28
|
+
let db = client.db(dbm);
|
|
29
|
+
db.collection(col).find(query).sort(orderby).limit(limit).toArray(function(err, result) {
|
|
30
|
+
const end = Date.now();
|
|
31
|
+
const time = end - start;
|
|
32
|
+
|
|
33
|
+
if (err) {
|
|
34
|
+
resolve({"result":{"dml":"find", "headers":"", "time":utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
35
|
+
}else{
|
|
36
|
+
resolve({"result":{"dml":"find", "headers":getFields(result[0]), "time":utl.milisegundosASegundos(time), code:200, error:0}, data:result});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
try{
|
|
40
|
+
exec.mongoClose(mongoclient);
|
|
41
|
+
}catch(e){
|
|
42
|
+
utl.log('err.find '+e);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
45
|
}
|
|
46
46
|
).catch(err=>{
|
|
47
47
|
resolve({"result":{"dml":"find", "headers":"", time:0, code:404, error:1}, "results":err});
|
|
@@ -57,35 +57,28 @@ const count=async(options,dbm, col, json)=>{
|
|
|
57
57
|
const start = Date.now();
|
|
58
58
|
return new Promise((resolve, reject)=>{
|
|
59
59
|
mongoclient.then(
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
// Compatibilidad con versiones antiguas y nuevas de MongoDB
|
|
65
|
-
if (typeof db.collection(col).countDocuments === 'function') {
|
|
66
|
-
res = await db.collection(col).countDocuments(query);
|
|
67
|
-
} else {
|
|
68
|
-
// Fallback para versiones anteriores
|
|
69
|
-
res = await db.collection(col).count(query);
|
|
70
|
-
}
|
|
71
|
-
const end = Date.now();
|
|
72
|
-
const time = end - start;
|
|
73
|
-
let data = {"count":res};
|
|
74
|
-
resolve({"result":{dml:"count", headers:"count", "time":utl.milisegundosASegundos(time), code:200, error:0}, results:res, data});
|
|
75
|
-
}catch(err){
|
|
60
|
+
function(client){
|
|
61
|
+
let db = client.db(dbm);
|
|
62
|
+
db.collection(col).find(query).count(function(err, res) {
|
|
63
|
+
|
|
76
64
|
const end = Date.now();
|
|
77
65
|
const time = end - start;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
66
|
+
|
|
67
|
+
if (err) {
|
|
68
|
+
resolve({result:{dml:"count", headers:"", time:utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
69
|
+
}else{
|
|
70
|
+
let data = {"count":res};
|
|
71
|
+
resolve({"result":{dml:"count", headers:"count", "time":utl.milisegundosASegundos(time), code:200, error:0}, results:res, data});
|
|
72
|
+
}
|
|
73
|
+
try{
|
|
74
|
+
exec.mongoClose(mongoclient);
|
|
75
|
+
}catch(e){
|
|
76
|
+
utl.log('err.count '+e);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
86
79
|
}
|
|
87
80
|
).catch(err=>{
|
|
88
|
-
resolve({result:{dml:"
|
|
81
|
+
resolve({result:{dml:"insert", headers:"", time:0, code:404, error:1}, results:err});
|
|
89
82
|
});
|
|
90
83
|
})
|
|
91
84
|
}
|
|
@@ -109,26 +102,24 @@ const insert= async(options,dbm, col, json_obj)=>{
|
|
|
109
102
|
|
|
110
103
|
return new Promise((resolve, reject)=>{
|
|
111
104
|
mongoclient.then(
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
}
|
|
105
|
+
function(client){
|
|
106
|
+
let db = client.db(dbm);
|
|
107
|
+
db.collection(col).insertOne(json_insert, function(err, res) {
|
|
108
|
+
const end = Date.now();
|
|
109
|
+
const time = end - start;
|
|
110
|
+
if (err) {
|
|
111
|
+
resolve({result:{dml:"insert", headers:"insertId", insertId:_id, time:utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
112
|
+
}else{
|
|
113
|
+
let data = {"insertId":_id};
|
|
114
|
+
let ops=res.ops!=null?res.ops:{};
|
|
115
|
+
resolve({result:{dml:"insert", headers:"insertId", insertId:_id, time:utl.milisegundosASegundos(time), code:200, error:0}, results:{WriteResult:'1 document inserted', ops}, data:[data]});
|
|
116
|
+
}
|
|
117
|
+
try{
|
|
118
|
+
exec.mongoClose(mongoclient);
|
|
119
|
+
}catch(e){
|
|
120
|
+
utl.log('err.insert '+e);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
132
123
|
}
|
|
133
124
|
).catch(err=>{
|
|
134
125
|
resolve({"result":{"dml":"insert", "headers":"", time:0, code:404, error:1}, results:err});
|
|
@@ -146,26 +137,24 @@ const update=async(options,dbm, col, json_obj, query)=>{
|
|
|
146
137
|
|
|
147
138
|
return new Promise((resolve, reject)=>{
|
|
148
139
|
mongoclient.then(
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
let res = await db.collection(col).updateOne(query, { $set: json_obj });
|
|
140
|
+
function(client){
|
|
141
|
+
let db = client.db(dbm);
|
|
142
|
+
db.collection(col).updateOne(query, { $set: json_obj }, function(err, res) {
|
|
153
143
|
const end = Date.now();
|
|
154
144
|
const time = end - start;
|
|
155
145
|
let result, nModified=0;
|
|
156
|
-
try{ result = res.result; nModified = res.
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
146
|
+
try{ result = res.result; nModified = res.result.nModified; } catch(e){ }
|
|
147
|
+
if (err) {
|
|
148
|
+
resolve({result:{dml:"update", headers:"", time:utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
149
|
+
}else{
|
|
150
|
+
resolve({result:{dml:"update", headers:"update", time:utl.milisegundosASegundos(time), code:200, error:0}, results:{WriteResult:`${nModified} document Updated`, result }});
|
|
151
|
+
}
|
|
152
|
+
try{
|
|
153
|
+
exec.mongoClose(mongoclient);
|
|
154
|
+
}catch(e){
|
|
155
|
+
utl.log('err.update '+e);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
169
158
|
}
|
|
170
159
|
).catch(err=>{
|
|
171
160
|
resolve({result:{dml:"update", headers:"", time:0, code:404, error:1}, results:err});
|
|
@@ -213,27 +202,25 @@ const dbs=async(options)=>{
|
|
|
213
202
|
const start = Date.now();
|
|
214
203
|
return new Promise((resolve, reject)=>{
|
|
215
204
|
mongoclient.then(
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
}
|
|
236
|
-
}
|
|
205
|
+
function(client){
|
|
206
|
+
let db = client.db().admin();
|
|
207
|
+
db.listDatabases(function(err, res) {
|
|
208
|
+
const end = Date.now();
|
|
209
|
+
const time = end - start;
|
|
210
|
+
if (err) {
|
|
211
|
+
resolve({result:{dml:"dbs", headers:"", time:utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
212
|
+
}else{
|
|
213
|
+
res.time=utl.milisegundosASegundos(time);
|
|
214
|
+
let databases=res.databases!=null?res.databases:{};
|
|
215
|
+
let totalSize=res.totalSize!=null?res.totalSize:0;
|
|
216
|
+
resolve({result:{dml:"dbs", headers:getFields(databases[0]), time:utl.milisegundosASegundos(time), code:200, error:0}, results:{totalSize}, data:databases});
|
|
217
|
+
}
|
|
218
|
+
try{
|
|
219
|
+
exec.mongoClose(mongoclient);
|
|
220
|
+
}catch(e){
|
|
221
|
+
utl.log('err.dbs '+e);
|
|
222
|
+
}
|
|
223
|
+
});
|
|
237
224
|
}
|
|
238
225
|
).catch(err=>{
|
|
239
226
|
resolve({result:{dml:"dbs", headers:"", time:0, code:404, error:1}, results:err});
|
|
@@ -248,24 +235,24 @@ const collections=async(options,dbm)=>{
|
|
|
248
235
|
const start = Date.now();
|
|
249
236
|
return new Promise((resolve, reject)=>{
|
|
250
237
|
mongoclient.then(
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
const end = Date.now();
|
|
256
|
-
const time = end - start;
|
|
257
|
-
resolve({result:{dml:"collections", headers:"name", time:utl.milisegundosASegundos(time), code:200, error:0}, results:res, data:res});
|
|
258
|
-
}catch(err){
|
|
238
|
+
function(client){
|
|
239
|
+
let db = client.db(dbm);
|
|
240
|
+
db.listCollections().toArray(function(err, res) {
|
|
241
|
+
|
|
259
242
|
const end = Date.now();
|
|
260
243
|
const time = end - start;
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
244
|
+
|
|
245
|
+
if (err) {
|
|
246
|
+
resolve({result:{dml:"collections", headers:"", time:utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
247
|
+
}else{
|
|
248
|
+
resolve({result:{dml:"collections", headers:"name", time:utl.milisegundosASegundos(time), code:200, error:0}, results:res, data:res});
|
|
249
|
+
}
|
|
250
|
+
try{
|
|
251
|
+
exec.mongoClose(mongoclient);
|
|
252
|
+
}catch(e){
|
|
253
|
+
utl.log('err.collections '+e);
|
|
254
|
+
}
|
|
255
|
+
});
|
|
269
256
|
}
|
|
270
257
|
).catch(err=>{
|
|
271
258
|
resolve({result:{dml:"collections", headers:"", time:0, code:404, error:1}, results:err});
|
|
@@ -407,33 +394,32 @@ const command=async(options,dbm, json)=>{
|
|
|
407
394
|
|
|
408
395
|
return new Promise((resolve, reject)=>{
|
|
409
396
|
mongoclient.then(
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
const time = end - start;
|
|
397
|
+
function(client){
|
|
398
|
+
let db = client.db(dbm);
|
|
399
|
+
db.command(json,function(err, res) {
|
|
400
|
+
const end = Date.now();
|
|
401
|
+
const time = end - start;
|
|
416
402
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
}
|
|
403
|
+
if (err) {
|
|
404
|
+
resolve({result:{dml:"command", headers:"", time:utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
405
|
+
}else{
|
|
406
|
+
if (find){
|
|
407
|
+
let rFind = res.cursor.firstBatch;
|
|
408
|
+
resolve({result:{dml:"find", headers:getFields(rFind[0]), time:utl.milisegundosASegundos(time), code:200, error:0}, data:rFind});
|
|
409
|
+
}else{
|
|
410
|
+
resolve({result:{dml:"command", headers:"", time:utl.milisegundosASegundos(time), code:200, error:0}, results:res});
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
try{
|
|
415
|
+
exec.mongoClose(mongoclient);
|
|
416
|
+
}catch(e){
|
|
417
|
+
utl.log('err.find '+e);
|
|
418
|
+
}
|
|
419
|
+
});
|
|
434
420
|
}
|
|
435
421
|
).catch(err=>{
|
|
436
|
-
resolve({result:{dml:"
|
|
422
|
+
resolve({result:{dml:"insert", headers:"", time:0, code:404, error:1}, results:err});
|
|
437
423
|
});
|
|
438
424
|
})
|
|
439
425
|
}
|
|
@@ -445,24 +431,24 @@ const deleteMany=async(options,dbm, col, json)=>{
|
|
|
445
431
|
const start = Date.now();
|
|
446
432
|
return new Promise((resolve, reject)=>{
|
|
447
433
|
mongoclient.then(
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
const end = Date.now();
|
|
453
|
-
const time = end - start;
|
|
454
|
-
resolve({"result":{dml:"deleteMany", headers:"", "time":utl.milisegundosASegundos(time), code:200, error:0}, results:res});
|
|
455
|
-
}catch(err){
|
|
434
|
+
function(client){
|
|
435
|
+
let db = client.db(dbm);
|
|
436
|
+
db.collection(col).deleteMany(query,function(err, res) {
|
|
437
|
+
|
|
456
438
|
const end = Date.now();
|
|
457
439
|
const time = end - start;
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
440
|
+
|
|
441
|
+
if (err) {
|
|
442
|
+
resolve({result:{dml:"deleteMany", headers:"", time:utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
443
|
+
}else{
|
|
444
|
+
resolve({"result":{dml:"deleteMany", headers:"", "time":utl.milisegundosASegundos(time), code:200, error:0}, results:res});
|
|
445
|
+
}
|
|
446
|
+
try{
|
|
447
|
+
exec.mongoClose(mongoclient);
|
|
448
|
+
}catch(e){
|
|
449
|
+
utl.log('err.deleteMany '+e);
|
|
450
|
+
}
|
|
451
|
+
});
|
|
466
452
|
}
|
|
467
453
|
).catch(err=>{
|
|
468
454
|
resolve({result:{dml:"deleteMany", headers:"", time:0, code:404, error:1}, results:err});
|
|
@@ -480,29 +466,27 @@ const updateMany=async(options,dbm, col, json_obj, query)=>{
|
|
|
480
466
|
|
|
481
467
|
return new Promise((resolve, reject)=>{
|
|
482
468
|
mongoclient.then(
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
let res = await db.collection(col).updateMany(query, { $set: json_obj });
|
|
469
|
+
function(client){
|
|
470
|
+
let db = client.db(dbm);
|
|
471
|
+
db.collection(col).updateMany(query, { $set: json_obj }, function(err, res) {
|
|
487
472
|
const end = Date.now();
|
|
488
473
|
const time = end - start;
|
|
489
474
|
let result, nModified=0;
|
|
490
|
-
try{ result = res.result; nModified = res.
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
}
|
|
475
|
+
try{ result = res.result; nModified = res.result.nModified; } catch(e){ }
|
|
476
|
+
if (err) {
|
|
477
|
+
resolve({result:{dml:"updateMany", headers:"", time:utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
478
|
+
}else{
|
|
479
|
+
resolve({result:{dml:"updateMany", headers:"updateMany", time:utl.milisegundosASegundos(time), code:200, error:0}, results:{WriteResult:`${nModified} document Updated`, result }});
|
|
480
|
+
}
|
|
481
|
+
try{
|
|
482
|
+
exec.mongoClose(mongoclient);
|
|
483
|
+
}catch(e){
|
|
484
|
+
utl.log('err.updateMany '+e);
|
|
485
|
+
}
|
|
486
|
+
});
|
|
503
487
|
}
|
|
504
488
|
).catch(err=>{
|
|
505
|
-
resolve({result:{dml:"
|
|
489
|
+
resolve({result:{dml:"update", headers:"", time:0, code:404, error:1}, results:err});
|
|
506
490
|
});
|
|
507
491
|
})
|
|
508
492
|
}
|
|
@@ -513,28 +497,28 @@ const drop=async(options,dbm, col)=>{
|
|
|
513
497
|
const start = Date.now();
|
|
514
498
|
return new Promise((resolve, reject)=>{
|
|
515
499
|
mongoclient.then(
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
const end = Date.now();
|
|
521
|
-
const time = end - start;
|
|
522
|
-
let data = {"drop":res};
|
|
523
|
-
resolve({"result":{dml:"drop", headers:"drop", "time":utl.milisegundosASegundos(time), code:200, error:0}, results:res, data});
|
|
524
|
-
}catch(err){
|
|
500
|
+
function(client){
|
|
501
|
+
let db = client.db(dbm);
|
|
502
|
+
db.collection(col).drop(function(err, res) {
|
|
503
|
+
|
|
525
504
|
const end = Date.now();
|
|
526
505
|
const time = end - start;
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
506
|
+
|
|
507
|
+
if (err) {
|
|
508
|
+
resolve({result:{dml:"drop", headers:"", time:utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
509
|
+
}else{
|
|
510
|
+
let data = {"drop":res};
|
|
511
|
+
resolve({"result":{dml:"drop", headers:"drop", "time":utl.milisegundosASegundos(time), code:200, error:0}, results:res, data});
|
|
512
|
+
}
|
|
513
|
+
try{
|
|
514
|
+
exec.mongoClose(mongoclient);
|
|
515
|
+
}catch(e){
|
|
516
|
+
utl.log('err.drop '+e);
|
|
517
|
+
}
|
|
518
|
+
});
|
|
535
519
|
}
|
|
536
520
|
).catch(err=>{
|
|
537
|
-
resolve({result:{dml:"
|
|
521
|
+
resolve({result:{dml:"insert", headers:"", time:0, code:404, error:1}, results:err});
|
|
538
522
|
});
|
|
539
523
|
})
|
|
540
524
|
}
|