applay-utils 1.2.8 → 1.2.11
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 +107 -102
- package/utils/tools.js +48 -1
package/package.json
CHANGED
package/utils/mdb.js
CHANGED
|
@@ -2,166 +2,171 @@ 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
|
-
|
|
47
|
-
}
|
|
48
|
-
|
|
49
46
|
|
|
50
|
-
var stopCustom = (customCallback)=>{
|
|
51
|
-
MDB.stopCustom=true;
|
|
52
|
-
MDB.stop = customCallback;//(alias,callback)=>{}
|
|
53
47
|
}
|
|
54
48
|
|
|
55
49
|
|
|
50
|
+
var stopCustom = (customCallback) => {
|
|
51
|
+
MDB.stopCustom = true;
|
|
52
|
+
MDB.stop = customCallback;//(alias,callback)=>{}
|
|
53
|
+
}
|
|
56
54
|
|
|
57
|
-
var genOpsUpdate = (data,params) =>{
|
|
55
|
+
var genOpsUpdate = (data, params) => {
|
|
58
56
|
var lista = [];
|
|
59
|
-
for(var item of data){
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
57
|
+
for (var item of data) {
|
|
58
|
+
let filter = item.filter;
|
|
59
|
+
let update = item.update;
|
|
60
|
+
if (params && params.type == 'array') {
|
|
61
|
+
let objArray = {}
|
|
62
|
+
let sub = params.rule.split('.');
|
|
63
|
+
objArray[params.rule] = item[sub[1]];
|
|
64
|
+
filter = Object.assign(objArray, params.filter)
|
|
65
|
+
update = {};
|
|
66
|
+
update[sub[0] + '.$'] = item;
|
|
67
|
+
}
|
|
68
|
+
let objLista = {}
|
|
69
|
+
objLista['updateOne'] = {
|
|
70
|
+
filter: filter,
|
|
71
|
+
update: { $set: update }
|
|
72
|
+
}
|
|
73
|
+
lista.push(objLista)
|
|
76
74
|
}
|
|
77
75
|
return lista
|
|
78
76
|
}
|
|
79
77
|
|
|
80
|
-
|
|
81
|
-
function genOpsFull(data,tipo) {
|
|
78
|
+
function genOpsFull(data, tipo) {
|
|
82
79
|
var lista = [];
|
|
83
|
-
for(var x1 in data){
|
|
80
|
+
for (var x1 in data) {
|
|
84
81
|
var objLista = {};
|
|
85
|
-
if(typeof data[x1] != 'object'){continue;}
|
|
86
|
-
if(tipo=='save'
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
82
|
+
if (typeof data[x1] != 'object') { continue; }
|
|
83
|
+
if (tipo == 'save' && !data[x1]._id) {
|
|
84
|
+
objLista['insertOne'] = { document: data[x1] };
|
|
85
|
+
}
|
|
86
|
+
if (tipo == 'save' && data[x1]._id && (data[x1]._id + '').length == 24) {
|
|
87
|
+
data[x1]._id = new ObjectID(data[x1]._id + '');
|
|
88
|
+
|
|
89
|
+
objLista['replaceOne'] = {
|
|
90
|
+
filter: { "_id": data[x1]._id },
|
|
91
|
+
replacement: data[x1],
|
|
92
|
+
upsert: true
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
-
if(tipo=='reg'){
|
|
95
|
+
if (tipo == 'reg' || tipo == 'regs') {
|
|
96
96
|
var copyObj = Object.assign({}, data[x1]);
|
|
97
|
-
copyObj.regId=''
|
|
98
|
-
|
|
97
|
+
copyObj.regId = ''
|
|
98
|
+
|
|
99
|
+
if (data[x1]._id) { copyObj._reg.objId = data[x1]._id + ''; }
|
|
100
|
+
|
|
99
101
|
delete copyObj._id;
|
|
100
|
-
|
|
102
|
+
|
|
103
|
+
objLista['insertOne'] = { document: copyObj };
|
|
101
104
|
}
|
|
105
|
+
|
|
102
106
|
lista.push(objLista);
|
|
103
107
|
}
|
|
104
108
|
return lista;
|
|
105
109
|
}
|
|
106
110
|
|
|
107
|
-
|
|
111
|
+
|
|
112
|
+
function genOps(data, tipo) {
|
|
108
113
|
var lista = [];
|
|
109
114
|
var regs = [];
|
|
110
|
-
for(var x1 in data){
|
|
115
|
+
for (var x1 in data) {
|
|
111
116
|
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
|
|
117
|
+
if (typeof data[x1] != 'object') { continue; }
|
|
118
|
+
if (tipo == 'insert' && data[x1]._id) { continue; }
|
|
119
|
+
if (tipo == 'replace' && !data[x1]._id) { continue; }
|
|
120
|
+
if (tipo == 'insert') { objLista['insertOne'] = { document: data[x1] }; }
|
|
121
|
+
if (tipo == 'replace') {
|
|
122
|
+
data[x1]._id = new ObjectID(data[x1]._id + '');
|
|
123
|
+
objLista['replaceOne'] = {
|
|
124
|
+
filter: { "_id": data[x1]._id },
|
|
125
|
+
replacement: data[x1],
|
|
126
|
+
upsert: true
|
|
122
127
|
}
|
|
123
128
|
}
|
|
124
|
-
if(tipo=='regs'){
|
|
129
|
+
if (tipo == 'regs') {
|
|
125
130
|
var copyObj = Object.assign({}, data[x1]);;
|
|
126
|
-
copyObj.regId=''
|
|
127
|
-
if(data[x1]._id){copyObj._reg.objId = data[x1]._id+'';}
|
|
131
|
+
copyObj.regId = ''
|
|
132
|
+
if (data[x1]._id) { copyObj._reg.objId = data[x1]._id + ''; }
|
|
128
133
|
delete copyObj._id;
|
|
129
|
-
objLista['insertOne']={document:copyObj};
|
|
134
|
+
objLista['insertOne'] = { document: copyObj };
|
|
130
135
|
}
|
|
131
136
|
lista.push(objLista);
|
|
132
137
|
}
|
|
133
138
|
return lista;
|
|
134
139
|
}
|
|
135
140
|
|
|
136
|
-
function build(data,model,user) {
|
|
137
|
-
var tipo = model.slice(0,3);
|
|
141
|
+
function build(data, model, user) {
|
|
142
|
+
var tipo = model.slice(0, 3);
|
|
138
143
|
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){
|
|
144
|
+
var letra = model.slice(3, 4);
|
|
145
|
+
// if(cfg.db.types.indexOf(tipo)<0){return {status:false,msg:'Tipo de Collection não definida'};}
|
|
146
|
+
if ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(letra) < 0) { return { status: false, msg: 'Tipo de Collection não definida' }; }
|
|
147
|
+
for (var x1 in data) {
|
|
143
148
|
// console.log(x1,data[x1]);
|
|
144
149
|
var create = time.getTime();
|
|
145
150
|
var createtext = time.toLocaleString('pt-BR');
|
|
146
|
-
if(data[x1]._db){
|
|
147
|
-
create = data[x1]._db.create*1;
|
|
148
|
-
createtext = data[x1]._db.createtext+'';
|
|
151
|
+
if (data[x1]._db) {
|
|
152
|
+
create = data[x1]._db.create * 1;
|
|
153
|
+
createtext = data[x1]._db.createtext + '';
|
|
149
154
|
}
|
|
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
|
|
155
|
+
data[x1]._db = {
|
|
156
|
+
tipo: tipo,
|
|
157
|
+
time: time.getTime(),
|
|
158
|
+
timetext: time.toLocaleString('pt-BR').split(' ')[0],
|
|
159
|
+
create: create * 1,
|
|
160
|
+
createtext: createtext + '',
|
|
161
|
+
userId: user._id + '',
|
|
162
|
+
username: user.username
|
|
158
163
|
};
|
|
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)
|
|
164
|
+
var objId = data[x1]._reg && data[x1]._reg.objId ? data[x1]._reg.objId : '';
|
|
165
|
+
data[x1]._reg = {
|
|
166
|
+
regId: time.getTime() + user._id + '',
|
|
167
|
+
collection: model,
|
|
168
|
+
objId: objId,
|
|
169
|
+
reg: 'reg' + model.slice(0, 1).toUpperCase() + model.slice(1)
|
|
165
170
|
};
|
|
166
171
|
}
|
|
167
172
|
return data;
|
package/utils/tools.js
CHANGED
|
@@ -39,7 +39,54 @@ var tools = {
|
|
|
39
39
|
}
|
|
40
40
|
client.end()
|
|
41
41
|
})
|
|
42
|
-
})
|
|
42
|
+
}),
|
|
43
|
+
/**
|
|
44
|
+
* @param {number} milliseconds Valor em milisegundos para ser convertido
|
|
45
|
+
* @returns Retorna uma string no formato **0h 0m 0s** ou retorna **--** em caso de erro
|
|
46
|
+
*/
|
|
47
|
+
'findDistance': (posA, posB) => {
|
|
48
|
+
let rad;
|
|
49
|
+
function deg2rad(deg) {
|
|
50
|
+
rad = deg * Math.PI / 180; // radians = degrees * pi/180
|
|
51
|
+
return rad;
|
|
52
|
+
}
|
|
53
|
+
function round(x) {
|
|
54
|
+
return Math.round(x * 1000) / 1000;
|
|
55
|
+
}
|
|
56
|
+
var Rm = 3961; // mean radius of the earth (miles) at 39 degrees from the equator
|
|
57
|
+
var Rk = 6373; // mean radius of the earth (km) at 39 degrees from the equator
|
|
58
|
+
var t1, n1, t2, n2, lat1, lon1, lat2, lon2, dlat, dlon, a, c, dm, dk, mi, km;
|
|
59
|
+
|
|
60
|
+
// get values for lat1, lon1, lat2, and lon2
|
|
61
|
+
t1 = posA.lat;
|
|
62
|
+
n1 = posA.lng;
|
|
63
|
+
t2 = posB.lat;
|
|
64
|
+
n2 = posB.lng;
|
|
65
|
+
|
|
66
|
+
// convert coordinates to radians
|
|
67
|
+
lat1 = deg2rad(t1);
|
|
68
|
+
lon1 = deg2rad(n1);
|
|
69
|
+
lat2 = deg2rad(t2);
|
|
70
|
+
lon2 = deg2rad(n2);
|
|
71
|
+
|
|
72
|
+
// find the differences between the coordinates
|
|
73
|
+
dlat = lat2 - lat1;
|
|
74
|
+
dlon = lon2 - lon1;
|
|
75
|
+
|
|
76
|
+
// here's the heavy lifting
|
|
77
|
+
a = Math.pow(Math.sin(dlat / 2), 2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(dlon / 2), 2);
|
|
78
|
+
c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); // great circle distance in radians
|
|
79
|
+
dm = c * Rm; // great circle distance in miles
|
|
80
|
+
dk = c * Rk; // great circle distance in km
|
|
81
|
+
|
|
82
|
+
// round the results down to the nearest 1/1000
|
|
83
|
+
mi = round(dm);
|
|
84
|
+
km = round(dk);
|
|
85
|
+
|
|
86
|
+
// display the result
|
|
87
|
+
// frm.mi.value = mi;
|
|
88
|
+
return km;
|
|
89
|
+
}
|
|
43
90
|
}
|
|
44
91
|
|
|
45
92
|
module.exports = tools;
|