@resolveio/server-lib 9.0.34 → 9.0.36
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/client-server-app.js +48 -7
- package/client-server-app.js.map +1 -1
- package/collections/app-status.collection.js +11 -8
- package/collections/app-status.collection.js.map +1 -1
- package/collections/app-version.collection.js +11 -8
- package/collections/app-version.collection.js.map +1 -1
- package/collections/counter.collection.js +11 -8
- package/collections/counter.collection.js.map +1 -1
- package/collections/cron-job-history.collection.js +12 -9
- package/collections/cron-job-history.collection.js.map +1 -1
- package/collections/cron-job.collection.js +11 -8
- package/collections/cron-job.collection.js.map +1 -1
- package/collections/email-history.collection.js +11 -8
- package/collections/email-history.collection.js.map +1 -1
- package/collections/email-verified.collection.js +12 -9
- package/collections/email-verified.collection.js.map +1 -1
- package/collections/file.collection.js +11 -8
- package/collections/file.collection.js.map +1 -1
- package/collections/flag.collection.js +11 -8
- package/collections/flag.collection.js.map +1 -1
- package/collections/log-method-latency.collection.js +14 -11
- package/collections/log-method-latency.collection.js.map +1 -1
- package/collections/log-subscription.collection.js +16 -13
- package/collections/log-subscription.collection.js.map +1 -1
- package/collections/log.collection.js +19 -16
- package/collections/log.collection.js.map +1 -1
- package/collections/logged-in-users.collection.js +12 -9
- package/collections/logged-in-users.collection.js.map +1 -1
- package/collections/method-call.collection.js +13 -10
- package/collections/method-call.collection.js.map +1 -1
- package/collections/method-response.collection.js +13 -10
- package/collections/method-response.collection.js.map +1 -1
- package/collections/monitor-cpu.collection.js +16 -13
- package/collections/monitor-cpu.collection.js.map +1 -1
- package/collections/monitor-https-inbound.collection.js +16 -13
- package/collections/monitor-https-inbound.collection.js.map +1 -1
- package/collections/monitor-https-outbound.collection.js +18 -15
- package/collections/monitor-https-outbound.collection.js.map +1 -1
- package/collections/monitor-memory.collection.js +15 -12
- package/collections/monitor-memory.collection.js.map +1 -1
- package/collections/monitor-mongo.collection.js +15 -12
- package/collections/monitor-mongo.collection.js.map +1 -1
- package/collections/notification.collection.js +11 -8
- package/collections/notification.collection.js.map +1 -1
- package/collections/queue-flag.collection.js +12 -9
- package/collections/queue-flag.collection.js.map +1 -1
- package/collections/queue-method.collection.js +12 -9
- package/collections/queue-method.collection.js.map +1 -1
- package/collections/queue-response.collection.js +12 -9
- package/collections/queue-response.collection.js.map +1 -1
- package/collections/report-builder-dashboard-builder.collection.js +13 -10
- package/collections/report-builder-dashboard-builder.collection.js.map +1 -1
- package/collections/report-builder-library.collection.js +14 -11
- package/collections/report-builder-library.collection.js.map +1 -1
- package/collections/report-builder-report.collection.js +14 -11
- package/collections/report-builder-report.collection.js.map +1 -1
- package/collections/user-group.collection.js +14 -11
- package/collections/user-group.collection.js.map +1 -1
- package/collections/user-guide.collection.js +11 -8
- package/collections/user-guide.collection.js.map +1 -1
- package/collections/user.collection.js +15 -12
- package/collections/user.collection.js.map +1 -1
- package/cron/cron.js +25 -25
- package/cron/cron.js.map +1 -1
- package/fixtures/cron-jobs.js +80 -30
- package/fixtures/cron-jobs.js.map +1 -1
- package/fixtures/init.js +59 -9
- package/fixtures/init.js.map +1 -1
- package/http/auth.js +460 -344
- package/http/auth.js.map +1 -1
- package/http/health.js +5 -1
- package/http/health.js.map +1 -1
- package/http/home.js +11 -7
- package/http/home.js.map +1 -1
- package/index.js +98 -36
- package/index.js.map +1 -1
- package/managers/cron.manager.js +157 -78
- package/managers/cron.manager.js.map +1 -1
- package/managers/method.manager.js +302 -314
- package/managers/method.manager.js.map +1 -1
- package/managers/mongo.manager.js +1010 -741
- package/managers/mongo.manager.js.map +1 -1
- package/managers/monitor.manager.js +254 -171
- package/managers/monitor.manager.js.map +1 -1
- package/managers/queue-method.manager.js +166 -69
- package/managers/queue-method.manager.js.map +1 -1
- package/managers/subscription.manager.js +714 -515
- package/managers/subscription.manager.js.map +1 -1
- package/methods/accounts.js +183 -111
- package/methods/accounts.js.map +1 -1
- package/methods/aws.js +262 -156
- package/methods/aws.js.map +1 -1
- package/methods/cloudconvert.js +180 -100
- package/methods/cloudconvert.js.map +1 -1
- package/methods/collections.js +110 -103
- package/methods/collections.js.map +1 -1
- package/methods/counters.js +79 -29
- package/methods/counters.js.map +1 -1
- package/methods/cron-jobs.js +884 -819
- package/methods/cron-jobs.js.map +1 -1
- package/methods/flags.js +5 -1
- package/methods/flags.js.map +1 -1
- package/methods/logs.js +313 -258
- package/methods/logs.js.map +1 -1
- package/methods/monitor.js +348 -289
- package/methods/monitor.js.map +1 -1
- package/methods/pdf.js +340 -341
- package/methods/pdf.js.map +1 -1
- package/methods/report-builder.js +657 -565
- package/methods/report-builder.js.map +1 -1
- package/methods/support.js +185 -67
- package/methods/support.js.map +1 -1
- package/models/app-status.model.js +2 -1
- package/models/app-version.model.js +2 -1
- package/models/billing-logged-in-users.model.js +2 -1
- package/models/collection-document.model.js +2 -1
- package/models/counter.model.js +2 -1
- package/models/cron-job-history.model.js +2 -1
- package/models/cron-job.model.js +2 -1
- package/models/dialog.model.js +2 -1
- package/models/email-history.model.js +2 -1
- package/models/email-verified.model.js +2 -1
- package/models/file.model.js +2 -1
- package/models/flag.model.js +2 -1
- package/models/log-method-latency.model.js +2 -1
- package/models/log-subscription.model.js +2 -1
- package/models/log.model.js +2 -1
- package/models/logged-in-users.model.js +2 -1
- package/models/method-call.model.js +2 -1
- package/models/method-response.model.js +2 -1
- package/models/method.model.js +2 -1
- package/models/monitor-cpu.model.js +2 -1
- package/models/monitor-https-inbound.model.js +2 -1
- package/models/monitor-https-outbound.model.js +2 -1
- package/models/monitor-memory.model.js +2 -1
- package/models/monitor-mongo.model.js +2 -1
- package/models/notification.model.js +2 -1
- package/models/pagination.model.js +5 -2
- package/models/pagination.model.js.map +1 -1
- package/models/permission.model.js +2 -1
- package/models/queue-method.model.js +2 -1
- package/models/queue-response.model.js +2 -1
- package/models/report-builder-dashboard-builder.model.js +2 -1
- package/models/report-builder-library.model.js +2 -1
- package/models/report-builder-report.model.js +2 -1
- package/models/report-builder.model.js +2 -1
- package/models/select-data-label.model.js +2 -1
- package/models/server-response.model.js +2 -1
- package/models/subscription.model.js +2 -1
- package/models/support-ticket.model.js +2 -1
- package/models/user-group.model.js +2 -1
- package/models/user-guide.model.js +2 -1
- package/models/user.model.js +2 -1
- package/package.json +1 -1
- package/public_api.js +82 -70
- package/public_api.js.map +1 -1
- package/publications/app-status.js +8 -4
- package/publications/app-status.js.map +1 -1
- package/publications/app-version.js +8 -4
- package/publications/app-version.js.map +1 -1
- package/publications/cron-jobs.js +13 -9
- package/publications/cron-jobs.js.map +1 -1
- package/publications/files.js +15 -11
- package/publications/files.js.map +1 -1
- package/publications/flags.js +11 -7
- package/publications/flags.js.map +1 -1
- package/publications/logs.js +35 -31
- package/publications/logs.js.map +1 -1
- package/publications/method-calls.js +8 -4
- package/publications/method-calls.js.map +1 -1
- package/publications/method-responses.js +8 -4
- package/publications/method-responses.js.map +1 -1
- package/publications/notifications.js +8 -4
- package/publications/notifications.js.map +1 -1
- package/publications/report-builder-dashboard-builders.js +12 -8
- package/publications/report-builder-dashboard-builders.js.map +1 -1
- package/publications/report-builder-libraries.js +66 -16
- package/publications/report-builder-libraries.js.map +1 -1
- package/publications/report-builder-reports.js +21 -17
- package/publications/report-builder-reports.js.map +1 -1
- package/publications/super-admin.js +7 -3
- package/publications/super-admin.js.map +1 -1
- package/publications/user-groups.js +8 -4
- package/publications/user-groups.js.map +1 -1
- package/publications/user-guides.js +8 -4
- package/publications/user-guides.js.map +1 -1
- package/server-app.js +534 -393
- package/server-app.js.map +1 -1
- package/util/common.js +92 -55
- package/util/common.js.map +1 -1
- package/util/schema-report-builder.js +134 -76
- package/util/schema-report-builder.js.map +1 -1
|
@@ -1,37 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.QueueMethodManager = void 0;
|
|
40
|
+
var queue_flag_collection_1 = require("../collections/queue-flag.collection");
|
|
41
|
+
var queue_method_collection_1 = require("../collections/queue-method.collection");
|
|
42
|
+
var queue_response_collection_1 = require("../collections/queue-response.collection");
|
|
43
|
+
var method_response_collection_1 = require("../collections/method-response.collection");
|
|
44
|
+
var log_collection_1 = require("../collections/log.collection");
|
|
45
|
+
var common_1 = require("../util/common");
|
|
46
|
+
var mongo_manager_1 = require("./mongo.manager");
|
|
47
|
+
var QueueMethodManager = /** @class */ (function () {
|
|
48
|
+
function QueueMethodManager(mainServer) {
|
|
49
|
+
var _this = this;
|
|
10
50
|
this._sendQueue = [];
|
|
11
51
|
this._runningQueue = false;
|
|
12
52
|
this._mainServer = mainServer;
|
|
13
|
-
setInterval(()
|
|
14
|
-
if (!
|
|
15
|
-
if (
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
53
|
+
setInterval(function () {
|
|
54
|
+
if (!_this._runningQueue) {
|
|
55
|
+
if (_this._sendQueue.length) {
|
|
56
|
+
_this._runningQueue = true;
|
|
57
|
+
var _loop_1 = function (i) {
|
|
58
|
+
var ws = _this._mainServer.getWS(_this._sendQueue[i].id_ws);
|
|
19
59
|
if (ws && ws.readyState === ws.OPEN) {
|
|
20
60
|
if (ws.bufferedAmount < 20480) {
|
|
21
|
-
|
|
22
|
-
ws.send(JSON.stringify(sendItem.response), (error)
|
|
61
|
+
var sendItem = _this._sendQueue.pop();
|
|
62
|
+
ws.send(JSON.stringify(sendItem.response), function (error) {
|
|
23
63
|
if (error) {
|
|
24
64
|
console.log('Error on WS: ', error);
|
|
25
|
-
|
|
65
|
+
_this._mainServer.unsubscribeWS(ws);
|
|
26
66
|
}
|
|
27
67
|
});
|
|
28
68
|
if (sendItem.method !== 'reportBuilderGetResults' && sendItem.method !== 'reportBuilderGetDistinctValue' && sendItem.method !== 'reportBuilderBuildTree' && sendItem.method !== 'generatePDF' && sendItem.method !== 'getWOOfflineData' && sendItem.method !== 'countQuery' && sendItem.method !== 'countWithQuery' && sendItem.method !== 'countCollectionWithQuery' && sendItem.method !== 'find' && sendItem.method !== 'findOne' && sendItem.method !== 'findWithOptions' && sendItem.method !== 'setWSAppVersion' && sendItem.method !== 'uploadFileAndSave' && sendItem.method !== 'getDrivers') {
|
|
29
|
-
Logs.create({
|
|
30
|
-
_id: objectIdHexString(),
|
|
69
|
+
log_collection_1.Logs.create({
|
|
70
|
+
_id: mongo_manager_1.objectIdHexString(),
|
|
31
71
|
type: 'client-response',
|
|
32
72
|
collection: '',
|
|
33
73
|
id_document: '',
|
|
34
|
-
payload: getBinarySize(JSON.stringify([sendItem.methodData, sendItem.response])) < 200000 ? JSON.stringify([sendItem.methodData, sendItem.response], null, 2) : 'Too Big',
|
|
74
|
+
payload: common_1.getBinarySize(JSON.stringify([sendItem.methodData, sendItem.response])) < 200000 ? JSON.stringify([sendItem.methodData, sendItem.response], null, 2) : 'Too Big',
|
|
35
75
|
method: sendItem.method,
|
|
36
76
|
id_user: ws['id_user'],
|
|
37
77
|
user: ws['user'],
|
|
@@ -39,27 +79,30 @@ export class QueueMethodManager {
|
|
|
39
79
|
route: ''
|
|
40
80
|
});
|
|
41
81
|
}
|
|
42
|
-
MethodResponses.create({
|
|
43
|
-
_id: objectIdHexString(),
|
|
82
|
+
method_response_collection_1.MethodResponses.create({
|
|
83
|
+
_id: mongo_manager_1.objectIdHexString(),
|
|
44
84
|
__v: 0,
|
|
45
85
|
id_user: sendItem.id_user,
|
|
46
86
|
message_id: sendItem.messageId,
|
|
47
|
-
response: getBinarySize(JSON.stringify(sendItem.response)) < 200000 ? sendItem.response : 'Too Big',
|
|
87
|
+
response: common_1.getBinarySize(JSON.stringify(sendItem.response)) < 200000 ? sendItem.response : 'Too Big',
|
|
48
88
|
method: sendItem.method,
|
|
49
89
|
date: sendItem.date
|
|
50
90
|
});
|
|
51
91
|
}
|
|
52
92
|
}
|
|
93
|
+
};
|
|
94
|
+
for (var i = _this._sendQueue.length - 1; i >= 0; i--) {
|
|
95
|
+
_loop_1(i);
|
|
53
96
|
}
|
|
54
|
-
|
|
97
|
+
_this._runningQueue = false;
|
|
55
98
|
}
|
|
56
99
|
}
|
|
57
100
|
}, 10);
|
|
58
101
|
}
|
|
59
|
-
addMethodToQueue(id_methodLatency, id_ws, id_user, user, messageDate, messageId, method, data) {
|
|
102
|
+
QueueMethodManager.prototype.addMethodToQueue = function (id_methodLatency, id_ws, id_user, user, messageDate, messageId, method, data) {
|
|
60
103
|
// console.log('Add Method To Queue', method);
|
|
61
|
-
QueueMethods.create({
|
|
62
|
-
_id: objectIdHexString(),
|
|
104
|
+
queue_method_collection_1.QueueMethods.create({
|
|
105
|
+
_id: mongo_manager_1.objectIdHexString(),
|
|
63
106
|
__v: 0,
|
|
64
107
|
id_ws: id_ws,
|
|
65
108
|
messageId: messageId,
|
|
@@ -71,32 +114,72 @@ export class QueueMethodManager {
|
|
|
71
114
|
date: messageDate,
|
|
72
115
|
id_methodLatency: id_methodLatency
|
|
73
116
|
});
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
117
|
+
};
|
|
118
|
+
QueueMethodManager.prototype.runMethodQueue = function (count) {
|
|
119
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
120
|
+
var updateCnt, _a;
|
|
121
|
+
var _this = this;
|
|
122
|
+
return __generator(this, function (_b) {
|
|
123
|
+
switch (_b.label) {
|
|
124
|
+
case 0:
|
|
125
|
+
if (!count) return [3 /*break*/, 1];
|
|
126
|
+
_a = count;
|
|
127
|
+
return [3 /*break*/, 3];
|
|
128
|
+
case 1: return [4 /*yield*/, queue_method_collection_1.QueueMethods.countDocuments()];
|
|
129
|
+
case 2:
|
|
130
|
+
_a = _b.sent();
|
|
131
|
+
_b.label = 3;
|
|
132
|
+
case 3:
|
|
133
|
+
updateCnt = _a;
|
|
134
|
+
if (updateCnt) {
|
|
135
|
+
// console.log('Run Method Queue', updateCnt);
|
|
136
|
+
queue_flag_collection_1.QueueFlags.insertOne({ _id: 'method-queue', __v: 0 }).then(function (res) { return __awaiter(_this, void 0, void 0, function () {
|
|
137
|
+
var updates, i, update;
|
|
138
|
+
return __generator(this, function (_a) {
|
|
139
|
+
switch (_a.label) {
|
|
140
|
+
case 0:
|
|
141
|
+
if (!res) return [3 /*break*/, 8];
|
|
142
|
+
return [4 /*yield*/, queue_method_collection_1.QueueMethods.find({}, { sort: { createdAt: 1 } })];
|
|
143
|
+
case 1:
|
|
144
|
+
updates = _a.sent();
|
|
145
|
+
i = 0;
|
|
146
|
+
_a.label = 2;
|
|
147
|
+
case 2:
|
|
148
|
+
if (!(i < updates.length)) return [3 /*break*/, 6];
|
|
149
|
+
update = updates[i];
|
|
150
|
+
update.method_data = JSON.parse(update.method_data_string, common_1.dateReviver);
|
|
151
|
+
return [4 /*yield*/, this._mainServer.getMethodManager().callMethodQueue(update)];
|
|
152
|
+
case 3:
|
|
153
|
+
_a.sent();
|
|
154
|
+
return [4 /*yield*/, queue_method_collection_1.QueueMethods.deleteOne({ _id: update._id })];
|
|
155
|
+
case 4:
|
|
156
|
+
_a.sent();
|
|
157
|
+
_a.label = 5;
|
|
158
|
+
case 5:
|
|
159
|
+
i++;
|
|
160
|
+
return [3 /*break*/, 2];
|
|
161
|
+
case 6:
|
|
162
|
+
queue_flag_collection_1.QueueFlags.deleteOne({ _id: 'method-queue' });
|
|
163
|
+
return [4 /*yield*/, queue_method_collection_1.QueueMethods.countDocuments()];
|
|
164
|
+
case 7:
|
|
165
|
+
updateCnt = _a.sent();
|
|
166
|
+
if (updateCnt) {
|
|
167
|
+
this.runMethodQueue(updateCnt);
|
|
168
|
+
}
|
|
169
|
+
_a.label = 8;
|
|
170
|
+
case 8: return [2 /*return*/];
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
}); }, function () { });
|
|
174
|
+
}
|
|
175
|
+
return [2 /*return*/];
|
|
93
176
|
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
addMethodResponse(update, response) {
|
|
98
|
-
QueueResponses.create({
|
|
99
|
-
_id: objectIdHexString(),
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
};
|
|
180
|
+
QueueMethodManager.prototype.addMethodResponse = function (update, response) {
|
|
181
|
+
queue_response_collection_1.QueueResponses.create({
|
|
182
|
+
_id: mongo_manager_1.objectIdHexString(),
|
|
100
183
|
__v: 0,
|
|
101
184
|
id_ws: update.id_ws,
|
|
102
185
|
id_user: update.id_user,
|
|
@@ -106,21 +189,35 @@ export class QueueMethodManager {
|
|
|
106
189
|
method: update.method,
|
|
107
190
|
date: update.date
|
|
108
191
|
});
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
this
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
192
|
+
};
|
|
193
|
+
QueueMethodManager.prototype.runMethodResponse = function () {
|
|
194
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
195
|
+
var responseCnt, wsList, responses, i, response;
|
|
196
|
+
return __generator(this, function (_a) {
|
|
197
|
+
switch (_a.label) {
|
|
198
|
+
case 0: return [4 /*yield*/, queue_response_collection_1.QueueResponses.countDocuments()];
|
|
199
|
+
case 1:
|
|
200
|
+
responseCnt = _a.sent();
|
|
201
|
+
if (!(responseCnt && !this._runningMethodResponse)) return [3 /*break*/, 3];
|
|
202
|
+
this._runningMethodResponse = true;
|
|
203
|
+
wsList = this._mainServer.getWSList();
|
|
204
|
+
return [4 /*yield*/, queue_response_collection_1.QueueResponses.find({ id_ws: { $in: wsList } })];
|
|
205
|
+
case 2:
|
|
206
|
+
responses = _a.sent();
|
|
207
|
+
for (i = 0; i < responses.length; i++) {
|
|
208
|
+
response = responses[i];
|
|
209
|
+
this._sendQueue.splice(0, 0, response);
|
|
210
|
+
queue_response_collection_1.QueueResponses.deleteOne({ _id: response._id });
|
|
211
|
+
}
|
|
212
|
+
this._runningMethodResponse = false;
|
|
213
|
+
_a.label = 3;
|
|
214
|
+
case 3: return [2 /*return*/];
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
};
|
|
219
|
+
return QueueMethodManager;
|
|
220
|
+
}());
|
|
221
|
+
exports.QueueMethodManager = QueueMethodManager;
|
|
125
222
|
|
|
126
223
|
//# sourceMappingURL=queue-method.manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/queue-method.manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,OAAO,kBAAkB;IAQ9B,YAAY,UAAU;QALd,eAAU,GAAG,EAAE,CAAC;QAChB,kBAAa,GAAG,KAAK,CAAC;QAK7B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAE9B,WAAW,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACxB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;oBAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;oBAC1B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;wBACrD,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;wBAC1D,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,IAAI,EAAE;4BACpC,IAAI,EAAE,CAAC,cAAc,GAAG,KAAK,EAAE;gCAC9B,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;gCACrC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;oCACpD,IAAI,KAAK,EAAE;wCACV,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;wCACpC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;qCACnC;gCACF,CAAC,CAAC,CAAC;gCAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,yBAAyB,IAAI,QAAQ,CAAC,MAAM,KAAK,+BAA+B,IAAI,QAAQ,CAAC,MAAM,KAAK,wBAAwB,IAAI,QAAQ,CAAC,MAAM,KAAK,aAAa,IAAI,QAAQ,CAAC,MAAM,KAAK,kBAAkB,IAAI,QAAQ,CAAC,MAAM,KAAK,YAAY,IAAI,QAAQ,CAAC,MAAM,KAAK,gBAAgB,IAAI,QAAQ,CAAC,MAAM,KAAK,0BAA0B,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,iBAAiB,IAAI,QAAQ,CAAC,MAAM,KAAK,iBAAiB,IAAI,QAAQ,CAAC,MAAM,KAAK,mBAAmB,IAAI,QAAQ,CAAC,MAAM,KAAK,YAAY,EAAE;oCACtkB,IAAI,CAAC,MAAM,CAAC;wCACX,GAAG,EAAE,iBAAiB,EAAE;wCACxB,IAAI,EAAE,iBAAiB;wCACvB,UAAU,EAAE,EAAE;wCACd,WAAW,EAAE,EAAE;wCACf,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;wCACzK,MAAM,EAAE,QAAQ,CAAC,MAAM;wCACvB,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC;wCACtB,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC;wCAChB,SAAS,EAAE,QAAQ,CAAC,SAAS;wCAC7B,KAAK,EAAE,EAAE;qCACT,CAAC,CAAC;iCACH;gCAED,eAAe,CAAC,MAAM,CAAC;oCACtB,GAAG,EAAE,iBAAiB,EAAE;oCACxB,GAAG,EAAE,CAAC;oCACN,OAAO,EAAE,QAAQ,CAAC,OAAO;oCACzB,UAAU,EAAE,QAAQ,CAAC,SAAS;oCAC9B,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;oCACnG,MAAM,EAAE,QAAQ,CAAC,MAAM;oCACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;iCACnB,CAAC,CAAC;6BACH;yBACD;qBACD;oBAED,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;iBAC3B;aACD;QACF,CAAC,EAAE,EAAE,CAAC,CAAC;IACR,CAAC;IAEM,gBAAgB,CAAC,gBAAwB,EAAE,KAAa,EAAE,OAAe,EAAE,IAAY,EAAE,WAAiB,EAAE,SAAiB,EAAE,MAAc,EAAE,IAAW;QAEhK,8CAA8C;QAE9C,YAAY,CAAC,MAAM,CAAC;YACnB,GAAG,EAAE,iBAAiB,EAAE;YACxB,GAAG,EAAE,CAAC;YACN,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,EAAE;YACf,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YACxC,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,WAAW;YACjB,gBAAgB,EAAE,gBAAgB;SAClC,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,KAAc;QACzC,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC;QAEpE,IAAI,SAAS,EAAE;YACd,8CAA8C;YAE9C,UAAU,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;gBACpE,IAAI,GAAG,EAAE;oBACR,IAAI,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAC,IAAI,EAAE,EAAC,SAAS,EAAE,CAAC,EAAC,EAAC,CAAC,CAAC;oBAElE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACxC,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;wBAExB,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;wBAExE,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;wBAClE,MAAM,YAAY,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAC,CAAC,CAAC;qBAChD;oBAED,UAAU,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,cAAc,EAAC,CAAC,CAAC;oBAE5C,SAAS,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC;oBAEhD,IAAI,SAAS,EAAE;wBACd,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;qBAC/B;iBACD;YACF,CAAC,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;SACb;IACF,CAAC;IAEM,iBAAiB,CAAC,MAAwB,EAAE,QAA6B;QAC/E,cAAc,CAAC,MAAM,CAAC;YACrB,GAAG,EAAE,iBAAiB,EAAE;YACxB,GAAG,EAAE,CAAC;YACN,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI;SACjB,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC7B,IAAI,WAAW,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC;QAExD,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAChD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YAEnC,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;YAE1C,IAAI,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,EAAC,GAAG,EAAE,MAAM,EAAC,EAAC,CAAC,CAAC;YAElE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAE5B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAEvC,cAAc,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAC,CAAC,CAAC;aAC9C;YAED,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;SACpC;IACF,CAAC;CACD","file":"queue-method.manager.js","sourcesContent":["import { QueueFlags } from '../collections/queue-flag.collection';\nimport { QueueMethodModel } from '../models/queue-method.model';\nimport { QueueMethods } from '../collections/queue-method.collection';\nimport { QueueResponses } from '../collections/queue-response.collection';\nimport { ServerResponseModel } from '../models/server-response.model';\nimport { MethodResponses } from '../collections/method-response.collection';\nimport { Logs } from '../collections/log.collection';\nimport { getBinarySize, dateReviver } from '../util/common';\nimport ResolveIOMainServer from '../server-app';\nimport { objectIdHexString } from './mongo.manager';\n\nexport class QueueMethodManager {\n\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _sendQueue = [];\n\tprivate _runningQueue = false;\n\n\tprivate _runningMethodResponse;\n\n\tconstructor(mainServer) {\n\t\tthis._mainServer = mainServer;\n\n\t\tsetInterval(() => {\n\t\t\tif (!this._runningQueue) {\n\t\t\t\tif (this._sendQueue.length) {\n\t\t\t\t\tthis._runningQueue = true;\n\t\t\t\t\tfor (let i = this._sendQueue.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tlet ws = this._mainServer.getWS(this._sendQueue[i].id_ws);\n\t\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\t\tif (ws.bufferedAmount < 20480) {\n\t\t\t\t\t\t\t\tlet sendItem = this._sendQueue.pop();\n\t\t\t\t\t\t\t\tws.send(JSON.stringify(sendItem.response), (error) => {\n\t\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\t\tthis._mainServer.unsubscribeWS(ws);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (sendItem.method !== 'reportBuilderGetResults' && sendItem.method !== 'reportBuilderGetDistinctValue' && sendItem.method !== 'reportBuilderBuildTree' && sendItem.method !== 'generatePDF' && sendItem.method !== 'getWOOfflineData' && sendItem.method !== 'countQuery' && sendItem.method !== 'countWithQuery' && sendItem.method !== 'countCollectionWithQuery' && sendItem.method !== 'find' && sendItem.method !== 'findOne' && sendItem.method !== 'findWithOptions' && sendItem.method !== 'setWSAppVersion' && sendItem.method !== 'uploadFileAndSave' && sendItem.method !== 'getDrivers') {\n\t\t\t\t\t\t\t\t\tLogs.create({\n\t\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\t\ttype: 'client-response',\n\t\t\t\t\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([sendItem.methodData, sendItem.response])) < 200000 ? JSON.stringify([sendItem.methodData, sendItem.response], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\t\tmethod: sendItem.method,\n\t\t\t\t\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\t\t\t\t\t\tmessageId: sendItem.messageId,\n\t\t\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tMethodResponses.create({\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\t\tid_user: sendItem.id_user,\n\t\t\t\t\t\t\t\t\tmessage_id: sendItem.messageId,\n\t\t\t\t\t\t\t\t\tresponse: getBinarySize(JSON.stringify(sendItem.response)) < 200000 ? sendItem.response : 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: sendItem.method,\n\t\t\t\t\t\t\t\t\tdate: sendItem.date\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._runningQueue = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}, 10);\n\t}\n\n\tpublic addMethodToQueue(id_methodLatency: string, id_ws: string, id_user: string, user: string, messageDate: Date, messageId: number, method: string, data: any[]) {\n\n\t\t// console.log('Add Method To Queue', method);\n\n\t\tQueueMethods.create({\n\t\t\t_id: objectIdHexString(),\n\t\t\t__v: 0,\n\t\t\tid_ws: id_ws,\n\t\t\tmessageId: messageId,\n\t\t\tmethod: method,\n\t\t\tmethod_data: [],\n\t\t\tmethod_data_string: JSON.stringify(data),\n\t\t\tid_user: id_user,\n\t\t\tuser: user,\n\t\t\tdate: messageDate,\n\t\t\tid_methodLatency: id_methodLatency\n\t\t});\n\t}\n\n\tpublic async runMethodQueue(count?: number) {\n\t\tlet updateCnt = count ? count : await QueueMethods.countDocuments();\n\t\t\n\t\tif (updateCnt) {\n\t\t\t// console.log('Run Method Queue', updateCnt);\n\n\t\t\tQueueFlags.insertOne({_id: 'method-queue', __v: 0}).then(async res => {\n\t\t\t\tif (res) {\n\t\t\t\t\tlet updates = await QueueMethods.find({}, {sort: {createdAt: 1}});\n\n\t\t\t\t\tfor (let i = 0; i < updates.length; i++) {\n\t\t\t\t\t\tlet update = updates[i];\n\n\t\t\t\t\t\tupdate.method_data = JSON.parse(update.method_data_string, dateReviver);\n\n\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodQueue(update);\n\t\t\t\t\t\tawait QueueMethods.deleteOne({_id: update._id});\n\t\t\t\t\t}\n\n\t\t\t\t\tQueueFlags.deleteOne({_id: 'method-queue'});\n\n\t\t\t\t\tupdateCnt = await QueueMethods.countDocuments();\n\n\t\t\t\t\tif (updateCnt) {\n\t\t\t\t\t\tthis.runMethodQueue(updateCnt);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, () => {});\n\t\t}\n\t}\n\n\tpublic addMethodResponse(update: QueueMethodModel, response: ServerResponseModel) {\n\t\tQueueResponses.create({\n\t\t\t_id: objectIdHexString(),\n\t\t\t__v: 0,\n\t\t\tid_ws: update.id_ws,\n\t\t\tid_user: update.id_user,\n\t\t\tuser: update.user,\n\t\t\tmessageId: update.messageId,\n\t\t\tresponse: response,\n\t\t\tmethod: update.method,\n\t\t\tdate: update.date\n\t\t});\n\t}\n\n\tpublic async runMethodResponse() {\n\t\tlet responseCnt = await QueueResponses.countDocuments();\n\n\t\tif (responseCnt && !this._runningMethodResponse) {\n\t\t\tthis._runningMethodResponse = true;\n\n\t\t\tlet wsList = this._mainServer.getWSList();\n\n\t\t\tlet responses = await QueueResponses.find({id_ws: {$in: wsList}});\n\n\t\t\tfor (let i = 0; i < responses.length; i++) {\n\t\t\t\tlet response = responses[i];\n\n\t\t\t\tthis._sendQueue.splice(0, 0, response);\n\n\t\t\t\tQueueResponses.deleteOne({_id: response._id});\n\t\t\t}\n\n\t\t\tthis._runningMethodResponse = false;\n\t\t}\n\t}\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/managers/queue-method.manager.ts"],"names":[],"mappings":"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","file":"queue-method.manager.js","sourcesContent":["import { QueueFlags } from '../collections/queue-flag.collection';\nimport { QueueMethodModel } from '../models/queue-method.model';\nimport { QueueMethods } from '../collections/queue-method.collection';\nimport { QueueResponses } from '../collections/queue-response.collection';\nimport { ServerResponseModel } from '../models/server-response.model';\nimport { MethodResponses } from '../collections/method-response.collection';\nimport { Logs } from '../collections/log.collection';\nimport { getBinarySize, dateReviver } from '../util/common';\nimport ResolveIOMainServer from '../server-app';\nimport { objectIdHexString } from './mongo.manager';\n\nexport class QueueMethodManager {\n\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _sendQueue = [];\n\tprivate _runningQueue = false;\n\n\tprivate _runningMethodResponse;\n\n\tconstructor(mainServer) {\n\t\tthis._mainServer = mainServer;\n\n\t\tsetInterval(() => {\n\t\t\tif (!this._runningQueue) {\n\t\t\t\tif (this._sendQueue.length) {\n\t\t\t\t\tthis._runningQueue = true;\n\t\t\t\t\tfor (let i = this._sendQueue.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tlet ws = this._mainServer.getWS(this._sendQueue[i].id_ws);\n\t\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\t\tif (ws.bufferedAmount < 20480) {\n\t\t\t\t\t\t\t\tlet sendItem = this._sendQueue.pop();\n\t\t\t\t\t\t\t\tws.send(JSON.stringify(sendItem.response), (error) => {\n\t\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\t\tthis._mainServer.unsubscribeWS(ws);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (sendItem.method !== 'reportBuilderGetResults' && sendItem.method !== 'reportBuilderGetDistinctValue' && sendItem.method !== 'reportBuilderBuildTree' && sendItem.method !== 'generatePDF' && sendItem.method !== 'getWOOfflineData' && sendItem.method !== 'countQuery' && sendItem.method !== 'countWithQuery' && sendItem.method !== 'countCollectionWithQuery' && sendItem.method !== 'find' && sendItem.method !== 'findOne' && sendItem.method !== 'findWithOptions' && sendItem.method !== 'setWSAppVersion' && sendItem.method !== 'uploadFileAndSave' && sendItem.method !== 'getDrivers') {\n\t\t\t\t\t\t\t\t\tLogs.create({\n\t\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\t\ttype: 'client-response',\n\t\t\t\t\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([sendItem.methodData, sendItem.response])) < 200000 ? JSON.stringify([sendItem.methodData, sendItem.response], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\t\tmethod: sendItem.method,\n\t\t\t\t\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\t\t\t\t\t\tmessageId: sendItem.messageId,\n\t\t\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tMethodResponses.create({\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\t\tid_user: sendItem.id_user,\n\t\t\t\t\t\t\t\t\tmessage_id: sendItem.messageId,\n\t\t\t\t\t\t\t\t\tresponse: getBinarySize(JSON.stringify(sendItem.response)) < 200000 ? sendItem.response : 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: sendItem.method,\n\t\t\t\t\t\t\t\t\tdate: sendItem.date\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._runningQueue = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}, 10);\n\t}\n\n\tpublic addMethodToQueue(id_methodLatency: string, id_ws: string, id_user: string, user: string, messageDate: Date, messageId: number, method: string, data: any[]) {\n\n\t\t// console.log('Add Method To Queue', method);\n\n\t\tQueueMethods.create({\n\t\t\t_id: objectIdHexString(),\n\t\t\t__v: 0,\n\t\t\tid_ws: id_ws,\n\t\t\tmessageId: messageId,\n\t\t\tmethod: method,\n\t\t\tmethod_data: [],\n\t\t\tmethod_data_string: JSON.stringify(data),\n\t\t\tid_user: id_user,\n\t\t\tuser: user,\n\t\t\tdate: messageDate,\n\t\t\tid_methodLatency: id_methodLatency\n\t\t});\n\t}\n\n\tpublic async runMethodQueue(count?: number) {\n\t\tlet updateCnt = count ? count : await QueueMethods.countDocuments();\n\t\t\n\t\tif (updateCnt) {\n\t\t\t// console.log('Run Method Queue', updateCnt);\n\n\t\t\tQueueFlags.insertOne({_id: 'method-queue', __v: 0}).then(async res => {\n\t\t\t\tif (res) {\n\t\t\t\t\tlet updates = await QueueMethods.find({}, {sort: {createdAt: 1}});\n\n\t\t\t\t\tfor (let i = 0; i < updates.length; i++) {\n\t\t\t\t\t\tlet update = updates[i];\n\n\t\t\t\t\t\tupdate.method_data = JSON.parse(update.method_data_string, dateReviver);\n\n\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodQueue(update);\n\t\t\t\t\t\tawait QueueMethods.deleteOne({_id: update._id});\n\t\t\t\t\t}\n\n\t\t\t\t\tQueueFlags.deleteOne({_id: 'method-queue'});\n\n\t\t\t\t\tupdateCnt = await QueueMethods.countDocuments();\n\n\t\t\t\t\tif (updateCnt) {\n\t\t\t\t\t\tthis.runMethodQueue(updateCnt);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, () => {});\n\t\t}\n\t}\n\n\tpublic addMethodResponse(update: QueueMethodModel, response: ServerResponseModel) {\n\t\tQueueResponses.create({\n\t\t\t_id: objectIdHexString(),\n\t\t\t__v: 0,\n\t\t\tid_ws: update.id_ws,\n\t\t\tid_user: update.id_user,\n\t\t\tuser: update.user,\n\t\t\tmessageId: update.messageId,\n\t\t\tresponse: response,\n\t\t\tmethod: update.method,\n\t\t\tdate: update.date\n\t\t});\n\t}\n\n\tpublic async runMethodResponse() {\n\t\tlet responseCnt = await QueueResponses.countDocuments();\n\n\t\tif (responseCnt && !this._runningMethodResponse) {\n\t\t\tthis._runningMethodResponse = true;\n\n\t\t\tlet wsList = this._mainServer.getWSList();\n\n\t\t\tlet responses = await QueueResponses.find({id_ws: {$in: wsList}});\n\n\t\t\tfor (let i = 0; i < responses.length; i++) {\n\t\t\t\tlet response = responses[i];\n\n\t\t\t\tthis._sendQueue.splice(0, 0, response);\n\n\t\t\t\tQueueResponses.deleteOne({_id: response._id});\n\t\t\t}\n\n\t\t\tthis._runningMethodResponse = false;\n\t\t}\n\t}\n}"]}
|