applay-utils 1.2.9 → 1.2.12
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/package.json +1 -1
- package/utils/mdb.js +136 -99
package/package.json
CHANGED
package/utils/mdb.js
CHANGED
|
@@ -2,166 +2,203 @@ var MongoBase = require('mongodb');
|
|
|
2
2
|
var ObjectId = require('mongodb').ObjectId;
|
|
3
3
|
|
|
4
4
|
var MDB = {
|
|
5
|
-
status:{},
|
|
6
|
-
clients:{}
|
|
5
|
+
status: {},
|
|
6
|
+
clients: {}
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
var connect= (alias,url,callback)=>{
|
|
10
|
-
console.log('Conectando..',alias,' - url:',url);
|
|
11
|
-
if(MDB.status[alias]){return callback(MDB.clients[alias]);}
|
|
12
|
-
MongoBase.MongoClient.connect(url,{useUnifiedTopology: true}, (err, client)=>{
|
|
13
|
-
if(err){return console.log('ERRO MDB -- TRACKING -- ',err);}
|
|
14
|
-
MDB.status[alias]=true;
|
|
15
|
-
MDB.clients[alias]=client;
|
|
16
|
-
process.on('SIGTERM', internalStop(alias,true,'SIGTERM'));
|
|
17
|
-
process.on('SIGINT'
|
|
18
|
-
process.on('uncaughtException', internalStop(alias,true,'uncaughtException'));
|
|
19
|
-
console.log('Conectado com ',alias);
|
|
9
|
+
var connect = (alias, url, callback) => {
|
|
10
|
+
console.log('Conectando..', alias, ' - url:', url);
|
|
11
|
+
if (MDB.status[alias]) { return callback(MDB.clients[alias]); }
|
|
12
|
+
MongoBase.MongoClient.connect(url, { useUnifiedTopology: true }, (err, client) => {
|
|
13
|
+
if (err) { return console.log('ERRO MDB -- TRACKING -- ', err); }
|
|
14
|
+
MDB.status[alias] = true;
|
|
15
|
+
MDB.clients[alias] = client;
|
|
16
|
+
process.on('SIGTERM', internalStop(alias, true, 'SIGTERM'));
|
|
17
|
+
process.on('SIGINT', internalStop(alias, true, 'SIGINT'));
|
|
18
|
+
process.on('uncaughtException', internalStop(alias, true, 'uncaughtException'));
|
|
19
|
+
console.log('Conectado com ', alias);
|
|
20
20
|
callback(client)
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
var connectAsync = (alias, url) => new Promise(resolve => connect(alias,url,(client)=>resolve(client)));
|
|
24
|
+
var connectAsync = (alias, url) => new Promise(resolve => connect(alias, url, (client) => resolve(client)));
|
|
25
25
|
|
|
26
|
-
var internalStop = (alias,finish)=>{
|
|
27
|
-
return (code)=>{
|
|
26
|
+
var internalStop = (alias, finish) => {
|
|
27
|
+
return (code) => {
|
|
28
28
|
console.log('Desconnecting...');
|
|
29
|
-
if(!MDB.status[alias]){console.log('Mongodb OFF');return}
|
|
29
|
+
if (!MDB.status[alias]) { console.log('Mongodb OFF'); return }
|
|
30
30
|
MDB.status[alias] = false;
|
|
31
31
|
MDB.clients[alias].close();
|
|
32
|
-
if(finish&&MDB.stopCustom){
|
|
33
|
-
MDB.stop(alias,()=>{
|
|
34
|
-
console.log('Mongodb',alias,'OFF');
|
|
32
|
+
if (finish && MDB.stopCustom) {
|
|
33
|
+
MDB.stop(alias, () => {
|
|
34
|
+
console.log('Mongodb', alias, 'OFF');
|
|
35
35
|
process.exit();
|
|
36
36
|
});
|
|
37
37
|
}
|
|
38
|
-
if(finish
|
|
39
|
-
console.log('Mongodb',alias,'OFF');
|
|
38
|
+
if (finish && !MDB.stopCustom) {
|
|
39
|
+
console.log('Mongodb', alias, 'OFF');
|
|
40
40
|
process.exit();
|
|
41
41
|
}
|
|
42
|
-
if(!finish){
|
|
43
|
-
console.log('Mongodb',alias,'OFF');
|
|
42
|
+
if (!finish) {
|
|
43
|
+
console.log('Mongodb', alias, 'OFF');
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
-
|
|
46
|
+
|
|
47
47
|
}
|
|
48
|
-
|
|
49
48
|
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
|
|
50
|
+
var stopCustom = (customCallback) => {
|
|
51
|
+
MDB.stopCustom = true;
|
|
52
52
|
MDB.stop = customCallback;//(alias,callback)=>{}
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
var genOpsUpdate = (data, params) => {
|
|
56
|
+
var lista = [];
|
|
55
57
|
|
|
58
|
+
for (var item of data) {
|
|
59
|
+
let filter = item.filter;
|
|
60
|
+
let update = item.update;
|
|
56
61
|
|
|
57
|
-
var
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
let
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
var novo = params && params.newField && item[params.newField];
|
|
63
|
+
var remove = params && params.removeField && item[params.removeField];
|
|
64
|
+
|
|
65
|
+
if (params && params.type == 'array') {
|
|
66
|
+
let objArray = {}
|
|
67
|
+
let sub = params.rule.split('.');
|
|
68
|
+
|
|
69
|
+
update = {};
|
|
70
|
+
|
|
71
|
+
if (novo) {
|
|
72
|
+
delete item[params.newField];
|
|
73
|
+
update[sub[0]] = item;
|
|
69
74
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
75
|
+
else if (remove) {
|
|
76
|
+
delete item[params.removeField];
|
|
77
|
+
objArray[params.rule] = item[sub[1]];
|
|
78
|
+
let objRemove = {};
|
|
79
|
+
objRemove[sub[1]] = item[sub[1]];
|
|
80
|
+
update[sub[0]] = objRemove;
|
|
74
81
|
}
|
|
75
|
-
|
|
82
|
+
else {
|
|
83
|
+
objArray[params.rule] = item[sub[1]];
|
|
84
|
+
update[sub[0] + '.$'] = item;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
filter = Object.assign(objArray, params.filter)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
let objLista = {}
|
|
91
|
+
var upSet = { $set: update };
|
|
92
|
+
|
|
93
|
+
if (novo) {
|
|
94
|
+
upSet = { $addToSet: update };
|
|
95
|
+
}
|
|
96
|
+
else if (remove) {
|
|
97
|
+
upSet = { $pull: update };
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
objLista['updateOne'] = {
|
|
101
|
+
filter: filter,
|
|
102
|
+
update: upSet
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
lista.push(objLista)
|
|
76
106
|
}
|
|
77
107
|
return lista
|
|
78
108
|
}
|
|
79
109
|
|
|
80
|
-
|
|
81
|
-
function genOpsFull(data,tipo) {
|
|
110
|
+
function genOpsFull(data, tipo) {
|
|
82
111
|
var lista = [];
|
|
83
|
-
for(var x1 in data){
|
|
112
|
+
for (var x1 in data) {
|
|
84
113
|
var objLista = {};
|
|
85
|
-
if(typeof data[x1] != 'object'){continue;}
|
|
86
|
-
if(tipo=='save'
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
114
|
+
if (typeof data[x1] != 'object') { continue; }
|
|
115
|
+
if (tipo == 'save' && !data[x1]._id) {
|
|
116
|
+
objLista['insertOne'] = { document: data[x1] };
|
|
117
|
+
}
|
|
118
|
+
if (tipo == 'save' && data[x1]._id && (data[x1]._id + '').length == 24) {
|
|
119
|
+
data[x1]._id = new ObjectID(data[x1]._id + '');
|
|
120
|
+
|
|
121
|
+
objLista['replaceOne'] = {
|
|
122
|
+
filter: { "_id": data[x1]._id },
|
|
123
|
+
replacement: data[x1],
|
|
124
|
+
upsert: true
|
|
93
125
|
}
|
|
94
126
|
}
|
|
95
|
-
if(tipo=='reg'){
|
|
127
|
+
if (tipo == 'reg' || tipo == 'regs') {
|
|
96
128
|
var copyObj = Object.assign({}, data[x1]);
|
|
97
|
-
copyObj.regId=''
|
|
98
|
-
|
|
129
|
+
copyObj.regId = ''
|
|
130
|
+
|
|
131
|
+
if (data[x1]._id) { copyObj._reg.objId = data[x1]._id + ''; }
|
|
132
|
+
|
|
99
133
|
delete copyObj._id;
|
|
100
|
-
|
|
134
|
+
|
|
135
|
+
objLista['insertOne'] = { document: copyObj };
|
|
101
136
|
}
|
|
137
|
+
|
|
102
138
|
lista.push(objLista);
|
|
103
139
|
}
|
|
104
140
|
return lista;
|
|
105
141
|
}
|
|
106
142
|
|
|
107
|
-
|
|
143
|
+
|
|
144
|
+
function genOps(data, tipo) {
|
|
108
145
|
var lista = [];
|
|
109
146
|
var regs = [];
|
|
110
|
-
for(var x1 in data){
|
|
147
|
+
for (var x1 in data) {
|
|
111
148
|
var objLista = {};
|
|
112
|
-
if(typeof data[x1] != 'object'){continue;}
|
|
113
|
-
if(tipo=='insert'&&data[x1]._id){continue;}
|
|
114
|
-
if(tipo=='replace'
|
|
115
|
-
if(tipo=='insert'){objLista['insertOne']={document:data[x1]};}
|
|
116
|
-
if(tipo=='replace'){
|
|
117
|
-
data[x1]._id=new ObjectID(data[x1]._id+'');
|
|
118
|
-
objLista['replaceOne']={
|
|
119
|
-
filter:{"_id"
|
|
120
|
-
replacement:data[x1],
|
|
121
|
-
upsert:true
|
|
149
|
+
if (typeof data[x1] != 'object') { continue; }
|
|
150
|
+
if (tipo == 'insert' && data[x1]._id) { continue; }
|
|
151
|
+
if (tipo == 'replace' && !data[x1]._id) { continue; }
|
|
152
|
+
if (tipo == 'insert') { objLista['insertOne'] = { document: data[x1] }; }
|
|
153
|
+
if (tipo == 'replace') {
|
|
154
|
+
data[x1]._id = new ObjectID(data[x1]._id + '');
|
|
155
|
+
objLista['replaceOne'] = {
|
|
156
|
+
filter: { "_id": data[x1]._id },
|
|
157
|
+
replacement: data[x1],
|
|
158
|
+
upsert: true
|
|
122
159
|
}
|
|
123
160
|
}
|
|
124
|
-
if(tipo=='regs'){
|
|
161
|
+
if (tipo == 'regs') {
|
|
125
162
|
var copyObj = Object.assign({}, data[x1]);;
|
|
126
|
-
copyObj.regId=''
|
|
127
|
-
if(data[x1]._id){copyObj._reg.objId = data[x1]._id+'';}
|
|
163
|
+
copyObj.regId = ''
|
|
164
|
+
if (data[x1]._id) { copyObj._reg.objId = data[x1]._id + ''; }
|
|
128
165
|
delete copyObj._id;
|
|
129
|
-
objLista['insertOne']={document:copyObj};
|
|
166
|
+
objLista['insertOne'] = { document: copyObj };
|
|
130
167
|
}
|
|
131
168
|
lista.push(objLista);
|
|
132
169
|
}
|
|
133
170
|
return lista;
|
|
134
171
|
}
|
|
135
172
|
|
|
136
|
-
function build(data,model,user) {
|
|
137
|
-
var tipo = model.slice(0,3);
|
|
173
|
+
function build(data, model, user) {
|
|
174
|
+
var tipo = model.slice(0, 3);
|
|
138
175
|
var time = new Date();
|
|
139
|
-
var letra = model.slice(3,4);
|
|
140
|
-
if(cfg.db.types.indexOf(tipo)<0){return {status:false,msg:'Tipo de Collection não definida'};}
|
|
141
|
-
if('ABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(letra)<0){return {status:false,msg:'Tipo de Collection não definida'};}
|
|
142
|
-
for(var x1 in data){
|
|
176
|
+
var letra = model.slice(3, 4);
|
|
177
|
+
// if(cfg.db.types.indexOf(tipo)<0){return {status:false,msg:'Tipo de Collection não definida'};}
|
|
178
|
+
if ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(letra) < 0) { return { status: false, msg: 'Tipo de Collection não definida' }; }
|
|
179
|
+
for (var x1 in data) {
|
|
143
180
|
// console.log(x1,data[x1]);
|
|
144
181
|
var create = time.getTime();
|
|
145
182
|
var createtext = time.toLocaleString('pt-BR');
|
|
146
|
-
if(data[x1]._db){
|
|
147
|
-
create = data[x1]._db.create*1;
|
|
148
|
-
createtext = data[x1]._db.createtext+'';
|
|
183
|
+
if (data[x1]._db) {
|
|
184
|
+
create = data[x1]._db.create * 1;
|
|
185
|
+
createtext = data[x1]._db.createtext + '';
|
|
149
186
|
}
|
|
150
|
-
data[x1]._db={
|
|
151
|
-
tipo:tipo,
|
|
152
|
-
time:time.getTime(),
|
|
153
|
-
timetext:time.toLocaleString('pt-BR').split(' ')[0],
|
|
154
|
-
create:create*1,
|
|
155
|
-
createtext:createtext+'',
|
|
156
|
-
userId:user._id+'',
|
|
157
|
-
username:user.username
|
|
187
|
+
data[x1]._db = {
|
|
188
|
+
tipo: tipo,
|
|
189
|
+
time: time.getTime(),
|
|
190
|
+
timetext: time.toLocaleString('pt-BR').split(' ')[0],
|
|
191
|
+
create: create * 1,
|
|
192
|
+
createtext: createtext + '',
|
|
193
|
+
userId: user._id + '',
|
|
194
|
+
username: user.username
|
|
158
195
|
};
|
|
159
|
-
var objId = data[x1]._reg&&data[x1]._reg.objId?data[x1]._reg.objId:'';
|
|
160
|
-
data[x1]._reg={
|
|
161
|
-
regId:time.getTime()+user._id+'',
|
|
162
|
-
collection:model,
|
|
163
|
-
objId:objId,
|
|
164
|
-
reg:'reg'+model.slice(0,1).toUpperCase()+model.slice(1)
|
|
196
|
+
var objId = data[x1]._reg && data[x1]._reg.objId ? data[x1]._reg.objId : '';
|
|
197
|
+
data[x1]._reg = {
|
|
198
|
+
regId: time.getTime() + user._id + '',
|
|
199
|
+
collection: model,
|
|
200
|
+
objId: objId,
|
|
201
|
+
reg: 'reg' + model.slice(0, 1).toUpperCase() + model.slice(1)
|
|
165
202
|
};
|
|
166
203
|
}
|
|
167
204
|
return data;
|