@resolveio/server-lib 12.7.11 → 12.7.13
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/collections/cron-job-history.collection.d.ts +1 -1
- package/collections/cron-job-history.collection.js +18 -8
- package/collections/cron-job-history.collection.js.map +1 -1
- package/collections/cron-job.collection.js +2 -1
- package/collections/cron-job.collection.js.map +1 -1
- package/managers/cron.manager.js +53 -24
- package/managers/cron.manager.js.map +1 -1
- package/models/cron-job-history.model.d.ts +6 -4
- package/models/cron-job-history.model.js.map +1 -1
- package/models/cron-job.model.d.ts +1 -1
- package/models/cron-job.model.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { MongoManagerCollection } from '../managers/mongo.manager';
|
|
2
2
|
import { CronJobHistoryModel } from '../models/cron-job-history.model';
|
|
3
|
-
export declare let
|
|
3
|
+
export declare let CronJobHistories: MongoManagerCollection<CronJobHistoryModel>;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.CronJobHistories = void 0;
|
|
4
4
|
var index_1 = require("../index");
|
|
5
5
|
var mongo_manager_1 = require("../managers/mongo.manager");
|
|
6
|
+
var simpl_schema_1 = require("simpl-schema");
|
|
6
7
|
var schema = {
|
|
7
8
|
_id: {
|
|
8
9
|
type: String,
|
|
@@ -27,7 +28,7 @@ var schema = {
|
|
|
27
28
|
type: Boolean
|
|
28
29
|
},
|
|
29
30
|
time_to_run: {
|
|
30
|
-
type: String
|
|
31
|
+
type: simpl_schema_1.default.oneOf(String, Date)
|
|
31
32
|
},
|
|
32
33
|
method_name: {
|
|
33
34
|
type: String
|
|
@@ -47,14 +48,23 @@ var schema = {
|
|
|
47
48
|
error: {
|
|
48
49
|
type: String
|
|
49
50
|
},
|
|
50
|
-
|
|
51
|
-
type: Date
|
|
51
|
+
date_scheduled: {
|
|
52
|
+
type: Date,
|
|
53
|
+
optional: true
|
|
52
54
|
},
|
|
53
|
-
|
|
55
|
+
date_start: {
|
|
54
56
|
type: Date
|
|
57
|
+
},
|
|
58
|
+
date_end: {
|
|
59
|
+
type: Date,
|
|
60
|
+
optional: true
|
|
61
|
+
},
|
|
62
|
+
date_next: {
|
|
63
|
+
type: Date,
|
|
64
|
+
optional: true
|
|
55
65
|
}
|
|
56
66
|
};
|
|
57
|
-
exports.
|
|
67
|
+
exports.CronJobHistories = null;
|
|
58
68
|
initializeCollection();
|
|
59
69
|
function initializeCollection() {
|
|
60
70
|
if (index_1.ResolveIOServer && index_1.ResolveIOServer.getMainDB()) {
|
|
@@ -69,8 +79,8 @@ function initializeCollection() {
|
|
|
69
79
|
checkSchema: true,
|
|
70
80
|
collectionOptions: null
|
|
71
81
|
});
|
|
72
|
-
exports.
|
|
73
|
-
exports.
|
|
82
|
+
exports.CronJobHistories = model.collection_main;
|
|
83
|
+
exports.CronJobHistories.createIndex({ createdAt: 1 }, { expireAfterSeconds: 60 * 60 * 24 * 7 });
|
|
74
84
|
}
|
|
75
85
|
else {
|
|
76
86
|
setTimeout(function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/collections/cron-job-history.collection.ts"],"names":[],"mappings":";;;AAAA,kCAA2C;AAC3C,2DAAsF;
|
|
1
|
+
{"version":3,"sources":["../../src/collections/cron-job-history.collection.ts"],"names":[],"mappings":";;;AAAA,kCAA2C;AAC3C,2DAAsF;AAEtF,6CAAwC;AAExC,IAAI,MAAM,GAAQ;IACjB,GAAG,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACd;IACD,GAAG,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACd;IACD,SAAS,EAAE;QACV,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACd;IACD,SAAS,EAAE;QACV,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACd;IACD,IAAI,EAAE;QACL,IAAI,EAAE,MAAM;KACZ;IACD,UAAU,EAAE;QACX,IAAI,EAAE,OAAO;KACb;IACD,WAAW,EAAE;QACZ,IAAI,EAAE,sBAAY,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;KACtC;IACD,WAAW,EAAE;QACZ,IAAI,EAAE,MAAM;KACZ;IACD,QAAQ,EAAE;QACT,IAAI,EAAE,IAAI;KACV;IACD,QAAQ,EAAE;QACT,IAAI,EAAE,IAAI;KACV;IACD,UAAU,EAAE;QACX,IAAI,EAAE,MAAM;KACZ;IACD,MAAM,EAAE;QACP,IAAI,EAAE,OAAO;KACb;IACD,KAAK,EAAE;QACN,IAAI,EAAE,MAAM;KACZ;IACD,cAAc,EAAE;QACf,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACd;IACD,UAAU,EAAE;QACX,IAAI,EAAE,IAAI;KACV;IACD,QAAQ,EAAE;QACT,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACd;IACD,SAAS,EAAE;QACV,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACd;CACD,CAAC;AAES,QAAA,gBAAgB,GAAgD,IAAI,CAAC;AAEhF,oBAAoB,EAAE,CAAC;AAEvB,SAAS,oBAAoB;IAC5B,IAAI,uBAAe,IAAI,uBAAe,CAAC,SAAS,EAAE,EAAE;QACnD,IAAM,KAAK,GAAG,IAAI,iCAAiB,CAAsB;YACxD,cAAc,EAAE,oBAAoB;YACpC,MAAM,EAAE,MAAM;YACd,oBAAoB,EAAE,KAAK;YAC3B,gBAAgB,EAAE,KAAK;YACvB,yBAAyB,EAAE,EAAE;YAC7B,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,IAAI;YACjB,iBAAiB,EAAE,IAAI;SACvB,CAAC,CAAC;QACH,wBAAgB,GAAG,KAAK,CAAC,eAAe,CAAC;QACzC,wBAAgB,CAAC,WAAW,CAAC,EAAC,SAAS,EAAE,CAAC,EAAC,EAAE,EAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,CAAC;KACrF;SACI;QACJ,UAAU,CAAC;YACV,oBAAoB,EAAE,CAAC;QACxB,CAAC,EAAE,CAAC,CAAC,CAAC;KACN;AACF,CAAC","file":"cron-job-history.collection.js","sourcesContent":["import { ResolveIOServer } from '../index';\nimport { MongoManagerCollection, MongoManagerModel } from '../managers/mongo.manager';\nimport { CronJobHistoryModel } from '../models/cron-job-history.model';\nimport SimpleSchema from 'simpl-schema';\n\nlet schema: any = {\n\t_id: {\n\t\ttype: String,\n\t\toptional: true\n\t},\n\t__v: {\n\t\ttype: Number,\n\t\toptional: true\n\t},\n\tupdatedAt: {\n\t\ttype: Date,\n\t\toptional: true\n\t},\n\tcreatedAt: {\n\t\ttype: Date,\n\t\toptional: true\n\t},\n\tname: {\n\t\ttype: String\n\t},\n\treoccuring: {\n\t\ttype: Boolean\n\t},\n\ttime_to_run: {\n\t\ttype: SimpleSchema.oneOf(String, Date)\n\t},\n\tmethod_name: {\n\t\ttype: String\n\t},\n\tlast_run: {\n\t\ttype: Date\n\t},\n\tnext_run: {\n\t\ttype: Date\n\t},\n\tid_cronjob: {\n\t\ttype: String\n\t},\n\tpassed: {\n\t\ttype: Boolean\n\t},\n\terror: {\n\t\ttype: String\n\t},\n\tdate_scheduled: {\n\t\ttype: Date,\n\t\toptional: true\n\t},\n\tdate_start: {\n\t\ttype: Date\n\t},\n\tdate_end: {\n\t\ttype: Date,\n\t\toptional: true\n\t},\n\tdate_next: {\n\t\ttype: Date,\n\t\toptional: true\n\t}\n};\n\nexport let CronJobHistories: MongoManagerCollection<CronJobHistoryModel> = null;\n\ninitializeCollection();\n\nfunction initializeCollection() {\n\tif (ResolveIOServer && ResolveIOServer.getMainDB()) {\n\t\tconst model = new MongoManagerModel<CronJobHistoryModel>({\n\t\t\tcollectionName: 'cron-job-histories',\n\t\t\tschema: schema,\n\t\t\tuseVersionCollection: false,\n\t\t\tuseReportBuilder: false,\n\t\t\treportBuilderLookupTables: [],\n\t\t\ttimestamps: true,\n\t\t\tcreateLogs: false,\n\t\t\tcheckSchema: true,\n\t\t\tcollectionOptions: null\n\t\t});\n\t\tCronJobHistories = model.collection_main;\n\t\tCronJobHistories.createIndex({createdAt: 1}, {expireAfterSeconds: 60 * 60 * 24 * 7});\n\t}\n\telse {\n\t\tsetTimeout(() => {\n\t\t\tinitializeCollection();\n\t\t}, 1);\n\t}\n}"]}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CronJobs = void 0;
|
|
4
4
|
var index_1 = require("../index");
|
|
5
5
|
var mongo_manager_1 = require("../managers/mongo.manager");
|
|
6
|
+
var simpl_schema_1 = require("simpl-schema");
|
|
6
7
|
var schema = {
|
|
7
8
|
_id: {
|
|
8
9
|
type: String,
|
|
@@ -27,7 +28,7 @@ var schema = {
|
|
|
27
28
|
type: Boolean
|
|
28
29
|
},
|
|
29
30
|
time_to_run: {
|
|
30
|
-
type: String
|
|
31
|
+
type: simpl_schema_1.default.oneOf(String, Date)
|
|
31
32
|
},
|
|
32
33
|
method_run: {
|
|
33
34
|
type: String
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/collections/cron-job.collection.ts"],"names":[],"mappings":";;;AAAA,kCAA2C;AAC3C,2DAAsF;
|
|
1
|
+
{"version":3,"sources":["../../src/collections/cron-job.collection.ts"],"names":[],"mappings":";;;AAAA,kCAA2C;AAC3C,2DAAsF;AAEtF,6CAAwC;AAExC,IAAI,MAAM,GAAQ;IACjB,GAAG,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACd;IACD,GAAG,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACd;IACD,SAAS,EAAE;QACV,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACd;IACD,SAAS,EAAE;QACV,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACd;IACD,IAAI,EAAE;QACL,IAAI,EAAE,MAAM;KACZ;IACD,MAAM,EAAE;QACP,IAAI,EAAE,OAAO;KACb;IACD,WAAW,EAAE;QACZ,IAAI,EAAE,sBAAY,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;KACtC;IACD,UAAU,EAAE;QACX,IAAI,EAAE,MAAM;KACZ;IACD,eAAe,EAAE;QAChB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;KACd;IACD,eAAe,EAAE;QAChB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACd;IACD,oBAAoB,EAAE;QACrB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;KACd;IACD,OAAO,EAAE;QACR,IAAI,EAAE,OAAO;KACb;IACD,QAAQ,EAAE;QACT,IAAI,EAAE,MAAM;KACZ;IACD,QAAQ,EAAE;QACT,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACd;CACD,CAAC;AAES,QAAA,QAAQ,GAAyC,IAAI,CAAC;AAEjE,oBAAoB,EAAE,CAAC;AAEvB,SAAS,oBAAoB;IAC5B,IAAI,uBAAe,IAAI,uBAAe,CAAC,SAAS,EAAE,EAAE;QACnD,IAAM,KAAK,GAAG,IAAI,iCAAiB,CAAe;YACjD,cAAc,EAAE,WAAW;YAC3B,MAAM,EAAE,MAAM;YACd,oBAAoB,EAAE,KAAK;YAC3B,gBAAgB,EAAE,KAAK;YACvB,yBAAyB,EAAE,EAAE;YAC7B,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,IAAI;YACjB,iBAAiB,EAAE,IAAI;SACvB,CAAC,CAAC;QACH,gBAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;KACjC;SACI;QACJ,UAAU,CAAC;YACV,oBAAoB,EAAE,CAAC;QACxB,CAAC,EAAE,CAAC,CAAC,CAAC;KACN;AACF,CAAC","file":"cron-job.collection.js","sourcesContent":["import { ResolveIOServer } from '../index';\nimport { MongoManagerCollection, MongoManagerModel } from '../managers/mongo.manager';\nimport { CronJobModel } from '../models/cron-job.model';\nimport SimpleSchema from 'simpl-schema';\n\nlet schema: any = {\n\t_id: {\n\t\ttype: String,\n\t\toptional: true\n\t},\n\t__v: {\n\t\ttype: Number,\n\t\toptional: true\n\t},\n\tupdatedAt: {\n\t\ttype: Date,\n\t\toptional: true\n\t},\n\tcreatedAt: {\n\t\ttype: Date,\n\t\toptional: true\n\t},\n\tname: {\n\t\ttype: String\n\t},\n\trepeat: {\n\t\ttype: Boolean\n\t},\n\ttime_to_run: {\n\t\ttype: SimpleSchema.oneOf(String, Date)\n\t},\n\tmethod_run: {\n\t\ttype: String\n\t},\n\tmethod_run_data: {\n\t\ttype: Object,\n\t\tblackbox: true,\n\t\toptional: true\n\t},\n\tmethod_complete: {\n\t\ttype: String,\n\t\toptional: true\n\t},\n\tmethod_complete_data: {\n\t\ttype: Object,\n\t\tblackbox: true,\n\t\toptional: true\n\t},\n\trunning: {\n\t\ttype: Boolean\n\t},\n\ttimezone: {\n\t\ttype: String\n\t},\n\tnext_run: {\n\t\ttype: Date,\n\t\toptional: true\n\t}\n};\n\nexport let CronJobs: MongoManagerCollection<CronJobModel> = null;\n\ninitializeCollection();\n\nfunction initializeCollection() {\n\tif (ResolveIOServer && ResolveIOServer.getMainDB()) {\n\t\tconst model = new MongoManagerModel<CronJobModel>({\n\t\t\tcollectionName: 'cron-jobs',\n\t\t\tschema: schema,\n\t\t\tuseVersionCollection: false,\n\t\t\tuseReportBuilder: false,\n\t\t\treportBuilderLookupTables: [],\n\t\t\ttimestamps: true,\n\t\t\tcreateLogs: false,\n\t\t\tcheckSchema: true,\n\t\t\tcollectionOptions: null\n\t\t});\n\t\tCronJobs = model.collection_main;\n\t}\n\telse {\n\t\tsetTimeout(() => {\n\t\t\tinitializeCollection();\n\t\t}, 1);\n\t}\n}"]}
|
package/managers/cron.manager.js
CHANGED
|
@@ -39,6 +39,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
39
39
|
exports.CronManager = void 0;
|
|
40
40
|
var cron_job_collection_1 = require("../collections/cron-job.collection");
|
|
41
41
|
var cron_1 = require("../cron/cron");
|
|
42
|
+
var cron_job_history_collection_1 = require("../collections/cron-job-history.collection");
|
|
43
|
+
var mongo_manager_1 = require("../managers/mongo.manager");
|
|
42
44
|
var CronManager = /** @class */ (function () {
|
|
43
45
|
function CronManager(mainServer) {
|
|
44
46
|
this._jobs = [];
|
|
@@ -176,49 +178,76 @@ var CronManager = /** @class */ (function () {
|
|
|
176
178
|
}
|
|
177
179
|
]
|
|
178
180
|
}, { $set: { running: true } }).then(function (res) { return __awaiter(_this, void 0, void 0, function () {
|
|
179
|
-
var err_1, nextDate;
|
|
181
|
+
var cronHistory, err_1, nextDate;
|
|
180
182
|
return __generator(this, function (_a) {
|
|
181
183
|
switch (_a.label) {
|
|
182
184
|
case 0:
|
|
183
|
-
if (!res) return [3 /*break*/,
|
|
184
|
-
|
|
185
|
+
if (!res) return [3 /*break*/, 13];
|
|
186
|
+
cronHistory = {
|
|
187
|
+
_id: (0, mongo_manager_1.objectIdHexString)(),
|
|
188
|
+
name: res.name,
|
|
189
|
+
reoccuring: res.repeat,
|
|
190
|
+
time_to_run: res.time_to_run,
|
|
191
|
+
method_name: res.method_run,
|
|
192
|
+
server_restart: true,
|
|
193
|
+
passed: true,
|
|
194
|
+
error: '',
|
|
195
|
+
date_scheduled: cron.next_run,
|
|
196
|
+
date_start: new Date(),
|
|
197
|
+
date_end: null,
|
|
198
|
+
date_next: null
|
|
199
|
+
};
|
|
200
|
+
return [4 /*yield*/, cron_job_history_collection_1.CronJobHistories.create(cronHistory)];
|
|
185
201
|
case 1:
|
|
186
|
-
_a.trys.push([1, 10, , 11]);
|
|
187
|
-
if (!res.method_run_data) return [3 /*break*/, 3];
|
|
188
|
-
return [4 /*yield*/, this._mainServer.getMethodManager().callMethodCron(res.method_run, res.method_run_data)];
|
|
189
|
-
case 2:
|
|
190
202
|
_a.sent();
|
|
191
|
-
|
|
192
|
-
case
|
|
193
|
-
|
|
203
|
+
_a.label = 2;
|
|
204
|
+
case 2:
|
|
205
|
+
_a.trys.push([2, 11, , 12]);
|
|
206
|
+
if (!res.method_run_data) return [3 /*break*/, 4];
|
|
207
|
+
return [4 /*yield*/, this._mainServer.getMethodManager().callMethodCron(res.method_run, res.method_run_data)];
|
|
208
|
+
case 3:
|
|
194
209
|
_a.sent();
|
|
195
|
-
|
|
210
|
+
return [3 /*break*/, 6];
|
|
211
|
+
case 4: return [4 /*yield*/, this._mainServer.getMethodManager().callMethodCron(res.method_run)];
|
|
196
212
|
case 5:
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
return [4 /*yield*/, this._mainServer.getMethodManager().callMethodCron(res.method_complete, res.method_complete_data)];
|
|
213
|
+
_a.sent();
|
|
214
|
+
_a.label = 6;
|
|
200
215
|
case 6:
|
|
216
|
+
if (!res.method_complete) return [3 /*break*/, 10];
|
|
217
|
+
if (!res.method_complete_data) return [3 /*break*/, 8];
|
|
218
|
+
return [4 /*yield*/, this._mainServer.getMethodManager().callMethodCron(res.method_complete, res.method_complete_data)];
|
|
219
|
+
case 7:
|
|
201
220
|
_a.sent();
|
|
202
|
-
return [3 /*break*/,
|
|
203
|
-
case
|
|
204
|
-
case
|
|
221
|
+
return [3 /*break*/, 10];
|
|
222
|
+
case 8: return [4 /*yield*/, this._mainServer.getMethodManager().callMethodCron(res.method_complete)];
|
|
223
|
+
case 9:
|
|
205
224
|
_a.sent();
|
|
206
|
-
_a.label =
|
|
207
|
-
case
|
|
208
|
-
case
|
|
225
|
+
_a.label = 10;
|
|
226
|
+
case 10: return [3 /*break*/, 12];
|
|
227
|
+
case 11:
|
|
209
228
|
err_1 = _a.sent();
|
|
210
229
|
console.log(new Date(), 'Cron Error', JSON.stringify(err_1, null, 2));
|
|
211
|
-
|
|
212
|
-
|
|
230
|
+
cronHistory.error = JSON.stringify(err_1, null, 2);
|
|
231
|
+
cronHistory.passed = false;
|
|
232
|
+
return [3 /*break*/, 12];
|
|
233
|
+
case 12:
|
|
213
234
|
if (res.repeat) {
|
|
214
235
|
nextDate = new Date(this._cronManager.getJob(res.name).nextDate()['ts']);
|
|
236
|
+
cronHistory.date_next = nextDate;
|
|
215
237
|
cron_job_collection_1.CronJobs.updateOne({ _id: res._id }, { $set: { running: false, next_run: nextDate } });
|
|
216
238
|
}
|
|
217
239
|
else {
|
|
218
240
|
cron_job_collection_1.CronJobs.deleteOne({ _id: res._id });
|
|
219
241
|
}
|
|
220
|
-
|
|
221
|
-
|
|
242
|
+
cron_job_history_collection_1.CronJobHistories.updateOne({ _id: cronHistory._id }, { $set: {
|
|
243
|
+
server_restart: false,
|
|
244
|
+
passed: cronHistory.passed,
|
|
245
|
+
error: cronHistory.error,
|
|
246
|
+
date_end: new Date(),
|
|
247
|
+
date_next: cronHistory.date_next
|
|
248
|
+
} });
|
|
249
|
+
_a.label = 13;
|
|
250
|
+
case 13: return [2 /*return*/];
|
|
222
251
|
}
|
|
223
252
|
});
|
|
224
253
|
}); }, function () { });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/cron.manager.ts"],"names":[],"mappings":"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","file":"cron.manager.js","sourcesContent":["import { CronJobModel } from '../models/cron-job.model';\nimport { CronJobs } from '../collections/cron-job.collection';\nimport ResolveIOMainServer from '../server-app';\nimport { CronJobManager } from '../cron/cron';\nimport * as moment from 'moment';\nimport { ChangeStream, ChangeStreamDocument } from 'mongodb';\n\nexport class CronManager {\n\tprivate _cronManager: CronJobManager;\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _watchCrons$: ChangeStream;\n\tprivate _jobs: CronJobModel[] = [];\n\n\tconstructor(mainServer) {\n\t\tthis._mainServer = mainServer;\n\t\tthis._cronManager = new CronJobManager();\n\n\t\tthis.watchCrons();\n\t}\n\n\tpublic async watchCrons() {\n\t\tif (!this._watchCrons$ || this._watchCrons$.closed) {\n\t\t\tCronJobs.find().then(res => {\n\t\t\t\tthis._jobs = res;\n\n\t\t\t\tthis._jobs.forEach(job => {\n\t\t\t\t\tthis.addCronJob(job);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis._watchCrons$ = CronJobs.watchCollection([], {fullDocument: 'updateLookup'});\n\n\t\t\tthis._watchCrons$.on('change', async (doc: ChangeStreamDocument<CronJobModel>) => {\n\t\t\t\tif (doc.operationType === 'insert') {\n\t\t\t\t\tif (doc.fullDocument) {\n\t\t\t\t\t\tif (!this._jobs.some(a => a._id === <any>doc.documentKey['_id'])) {\n\t\t\t\t\t\t\tthis._jobs.push(doc.fullDocument);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (doc.operationType === 'replace' || doc.operationType === 'update') {\n\t\t\t\t\tif (doc.fullDocument) {\n\t\t\t\t\t\tif (this._jobs.some(a => a._id === <any>doc.documentKey['_id'])) {\n\t\t\t\t\t\t\tdoc.fullDocument.next_run = null;\n\t\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1, doc.fullDocument);\n\t\t\t\t\t\t\tthis.updateCronJob(doc.fullDocument);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._jobs.push(doc.fullDocument);\n\t\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (this._jobs.some(a => a._id === <any>doc.documentKey['_id'])) {\n\t\t\t\t\t\t\tlet job = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\t\tthis.removeCronJob(job.name);\n\t\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (doc.operationType === 'delete') {\n\t\t\t\t\tif (this._jobs.some(a => a._id === (<any>doc).documentKey['_id'])) {\n\t\t\t\t\t\tlet job = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\tthis.removeCronJob(job.name);\n\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('error', (err) => {\n\t\t\t\tthis._watchCrons$.close();\n\t\t\t})\n\t\t\t.on('end', () => {\n\t\t\t\tthis._watchCrons$.close();\n\t\t\t})\n\t\t\t.on('close', () => {\n\t\t\t\tthis._watchCrons$ = null;\n\t\t\t\tthis.watchCrons();\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tthis._watchCrons$.close();\n\t\t}\n\t}\n\n\tprivate doesCronJobExist(cron: CronJobModel) {\n\t\treturn this._cronManager.exists(cron.name);\n\t}\n\n\tprivate doesCronJobNameExist(cron_name: string) {\n\t\treturn this._cronManager.exists(cron_name);\n\t}\n\n\tprivate addCronJob(cron: CronJobModel) {\n\t\tif (cron.running) {\n\t\t\tCronJobs.updateOne({_id: cron._id}, {$set: {running: false, next_run: null}});\n\t\t}\n\t\telse if (cron.next_run) {\n\t\t\tCronJobs.updateOne({_id: cron._id}, {$set: {next_run: null}});\n\t\t}\n\t\t\n\t\tif (!this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.add(\n\t\t\t\tcron.name,\n\t\t\t\tcron.time_to_run,\n\t\t\t\t() => this.runCronJob(cron),\n\t\t\t\tnull,\n\t\t\t\ttrue,\n\t\t\t\tcron.timezone,\n\t\t\t\tnull, \n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate updateCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.update(cron.name, cron.time_to_run, () => this.runCronJob(cron));\n\t\t}\n\t}\n\n\tprivate removeCronJob(cron_name: string) {\n\t\tif (this.doesCronJobNameExist(cron_name)) {\n\t\t\tthis._cronManager.delete(cron_name);\n\t\t}\n\t}\n\n\tprivate startCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.start(cron.name);\n\t\t}\n\t}\n\n\tprivate stopCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.stop(cron.name);\n\t\t}\n\t}\n\n\tprivate stopAllCronJobs() {\n\t\tthis._cronManager.stopAll();\n\t}\n\n\tprivate runCronJob(cron: CronJobModel) {\n\t\tlet now = new Date();\n\n\t\tif (!cron.next_run || now.getTime() >= cron.next_run.getTime()) {\n\n\t\t\tCronJobs.findOneAndUpdate({\n\t\t\t\t$and: [\n\t\t\t\t\t{_id: cron._id},\n\t\t\t\t\t{running: false},\n\t\t\t\t\t{\n\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t{next_run: {$exists: false}},\n\t\t\t\t\t\t\t{next_run: null},\n\t\t\t\t\t\t\t{next_run: {$lte: now}}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}, {$set: {running: true}}).then(async res => {\n\t\t\t\tif (res) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (res.method_run_data) {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run, res.method_run_data);\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (res.method_complete) {\n\t\t\t\t\t\t\tif (res.method_complete_data) {\n\t\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete, res.method_complete_data);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tconsole.log(new Date(), 'Cron Error', JSON.stringify(err, null, 2));\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (res.repeat) {\n\t\t\t\t\t\tlet nextDate = new Date(this._cronManager.getJob(res.name).nextDate()['ts']);\n\t\t\t\t\t\tCronJobs.updateOne({_id: res._id}, {$set: {running: false, next_run: nextDate}});\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\tCronJobs.deleteOne({_id: res._id});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, () => {});\n\t\t}\n\t}\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/managers/cron.manager.ts"],"names":[],"mappings":"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","file":"cron.manager.js","sourcesContent":["import { CronJobModel } from '../models/cron-job.model';\nimport { CronJobs } from '../collections/cron-job.collection';\nimport ResolveIOMainServer from '../server-app';\nimport { CronJobManager } from '../cron/cron';\nimport * as moment from 'moment';\nimport { ChangeStream, ChangeStreamDocument } from 'mongodb';\nimport { CronJobHistories } from '../collections/cron-job-history.collection';\nimport { objectIdHexString } from '../managers/mongo.manager';\nimport { CronJobHistoryModel } from '../models/cron-job-history.model';\n\nexport class CronManager {\n\tprivate _cronManager: CronJobManager;\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _watchCrons$: ChangeStream;\n\tprivate _jobs: CronJobModel[] = [];\n\n\tconstructor(mainServer) {\n\t\tthis._mainServer = mainServer;\n\t\tthis._cronManager = new CronJobManager();\n\n\t\tthis.watchCrons();\n\t}\n\n\tpublic async watchCrons() {\n\t\tif (!this._watchCrons$ || this._watchCrons$.closed) {\n\t\t\tCronJobs.find().then(res => {\n\t\t\t\tthis._jobs = res;\n\n\t\t\t\tthis._jobs.forEach(job => {\n\t\t\t\t\tthis.addCronJob(job);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis._watchCrons$ = CronJobs.watchCollection([], {fullDocument: 'updateLookup'});\n\n\t\t\tthis._watchCrons$.on('change', async (doc: ChangeStreamDocument<CronJobModel>) => {\n\t\t\t\tif (doc.operationType === 'insert') {\n\t\t\t\t\tif (doc.fullDocument) {\n\t\t\t\t\t\tif (!this._jobs.some(a => a._id === <any>doc.documentKey['_id'])) {\n\t\t\t\t\t\t\tthis._jobs.push(doc.fullDocument);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (doc.operationType === 'replace' || doc.operationType === 'update') {\n\t\t\t\t\tif (doc.fullDocument) {\n\t\t\t\t\t\tif (this._jobs.some(a => a._id === <any>doc.documentKey['_id'])) {\n\t\t\t\t\t\t\tdoc.fullDocument.next_run = null;\n\t\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1, doc.fullDocument);\n\t\t\t\t\t\t\tthis.updateCronJob(doc.fullDocument);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._jobs.push(doc.fullDocument);\n\t\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (this._jobs.some(a => a._id === <any>doc.documentKey['_id'])) {\n\t\t\t\t\t\t\tlet job = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\t\tthis.removeCronJob(job.name);\n\t\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (doc.operationType === 'delete') {\n\t\t\t\t\tif (this._jobs.some(a => a._id === (<any>doc).documentKey['_id'])) {\n\t\t\t\t\t\tlet job = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\tthis.removeCronJob(job.name);\n\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('error', (err) => {\n\t\t\t\tthis._watchCrons$.close();\n\t\t\t})\n\t\t\t.on('end', () => {\n\t\t\t\tthis._watchCrons$.close();\n\t\t\t})\n\t\t\t.on('close', () => {\n\t\t\t\tthis._watchCrons$ = null;\n\t\t\t\tthis.watchCrons();\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tthis._watchCrons$.close();\n\t\t}\n\t}\n\n\tprivate doesCronJobExist(cron: CronJobModel) {\n\t\treturn this._cronManager.exists(cron.name);\n\t}\n\n\tprivate doesCronJobNameExist(cron_name: string) {\n\t\treturn this._cronManager.exists(cron_name);\n\t}\n\n\tprivate addCronJob(cron: CronJobModel) {\n\t\tif (cron.running) {\n\t\t\tCronJobs.updateOne({_id: cron._id}, {$set: {running: false, next_run: null}});\n\t\t}\n\t\telse if (cron.next_run) {\n\t\t\tCronJobs.updateOne({_id: cron._id}, {$set: {next_run: null}});\n\t\t}\n\t\t\n\t\tif (!this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.add(\n\t\t\t\tcron.name,\n\t\t\t\tcron.time_to_run,\n\t\t\t\t() => this.runCronJob(cron),\n\t\t\t\tnull,\n\t\t\t\ttrue,\n\t\t\t\tcron.timezone,\n\t\t\t\tnull, \n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate updateCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.update(cron.name, cron.time_to_run, () => this.runCronJob(cron));\n\t\t}\n\t}\n\n\tprivate removeCronJob(cron_name: string) {\n\t\tif (this.doesCronJobNameExist(cron_name)) {\n\t\t\tthis._cronManager.delete(cron_name);\n\t\t}\n\t}\n\n\tprivate startCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.start(cron.name);\n\t\t}\n\t}\n\n\tprivate stopCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.stop(cron.name);\n\t\t}\n\t}\n\n\tprivate stopAllCronJobs() {\n\t\tthis._cronManager.stopAll();\n\t}\n\n\tprivate runCronJob(cron: CronJobModel) {\n\t\tlet now = new Date();\n\n\t\tif (!cron.next_run || now.getTime() >= cron.next_run.getTime()) {\n\n\t\t\tCronJobs.findOneAndUpdate({\n\t\t\t\t$and: [\n\t\t\t\t\t{_id: cron._id},\n\t\t\t\t\t{running: false},\n\t\t\t\t\t{\n\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t{next_run: {$exists: false}},\n\t\t\t\t\t\t\t{next_run: null},\n\t\t\t\t\t\t\t{next_run: {$lte: now}}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}, {$set: {running: true}}).then(async res => {\n\t\t\t\tif (res) {\n\t\t\t\t\tlet cronHistory: CronJobHistoryModel = {\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\tname: res.name,\n\t\t\t\t\t\treoccuring: res.repeat,\n\t\t\t\t\t\ttime_to_run: res.time_to_run,\n\t\t\t\t\t\tmethod_name: res.method_run,\n\t\t\t\t\t\tserver_restart: true,\n\t\t\t\t\t\tpassed: true,\n\t\t\t\t\t\terror: '',\n\t\t\t\t\t\tdate_scheduled: cron.next_run,\n\t\t\t\t\t\tdate_start: new Date(),\n\t\t\t\t\t\tdate_end: null,\n\t\t\t\t\t\tdate_next: null\n\t\t\t\t\t};\n\t\t\t\t\t\n\t\t\t\t\tawait CronJobHistories.create(cronHistory);\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (res.method_run_data) {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run, res.method_run_data);\t\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (res.method_complete) {\n\t\t\t\t\t\t\tif (res.method_complete_data) {\n\t\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete, res.method_complete_data);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tconsole.log(new Date(), 'Cron Error', JSON.stringify(err, null, 2));\n\t\t\t\t\t\tcronHistory.error = JSON.stringify(err, null, 2);\n\t\t\t\t\t\tcronHistory.passed = false;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (res.repeat) {\n\t\t\t\t\t\tlet nextDate = new Date(this._cronManager.getJob(res.name).nextDate()['ts']);\n\t\t\t\t\t\tcronHistory.date_next = nextDate;\n\t\t\t\t\t\tCronJobs.updateOne({_id: res._id}, {$set: {running: false, next_run: nextDate}});\n\t\t\t\t\t} \n\t\t\t\t\telse {\n\t\t\t\t\t\tCronJobs.deleteOne({_id: res._id});\n\t\t\t\t\t}\n\n\t\t\t\t\tCronJobHistories.updateOne({_id: cronHistory._id}, {$set: {\n\t\t\t\t\t\tserver_restart: false,\n\t\t\t\t\t\tpassed: cronHistory.passed,\n\t\t\t\t\t\terror: cronHistory.error,\n\t\t\t\t\t\tdate_end: new Date(),\n\t\t\t\t\t\tdate_next: cronHistory.date_next\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}, () => {});\n\t\t}\n\t}\n}"]}
|
|
@@ -2,11 +2,13 @@ import { CollectionDocument } from './collection-document.model';
|
|
|
2
2
|
export interface CronJobHistoryModel extends CollectionDocument {
|
|
3
3
|
name: string;
|
|
4
4
|
reoccuring: boolean;
|
|
5
|
-
time_to_run: string;
|
|
5
|
+
time_to_run: string | Date;
|
|
6
6
|
method_name: string;
|
|
7
7
|
server_restart: boolean;
|
|
8
8
|
passed: boolean;
|
|
9
|
-
error:
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
error: string;
|
|
10
|
+
date_scheduled: Date;
|
|
11
|
+
date_start: Date;
|
|
12
|
+
date_end: Date;
|
|
13
|
+
date_next: Date;
|
|
12
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/models/cron-job-history.model.ts"],"names":[],"mappings":"","file":"cron-job-history.model.js","sourcesContent":["import { CollectionDocument } from './collection-document.model';\n\nexport interface CronJobHistoryModel extends CollectionDocument {\n\tname: string;\n\treoccuring: boolean;\n\ttime_to_run: string;\n\tmethod_name: string;\n\tserver_restart: boolean;\n\tpassed: boolean;\n\terror:
|
|
1
|
+
{"version":3,"sources":["../../src/models/cron-job-history.model.ts"],"names":[],"mappings":"","file":"cron-job-history.model.js","sourcesContent":["import { CollectionDocument } from './collection-document.model';\n\nexport interface CronJobHistoryModel extends CollectionDocument {\n\tname: string;\n\treoccuring: boolean;\n\ttime_to_run: string | Date;\n\tmethod_name: string;\n\tserver_restart: boolean;\n\tpassed: boolean;\n\terror: string;\n\tdate_scheduled: Date;\n\tdate_start: Date;\n\tdate_end: Date;\n\tdate_next: Date;\n}"]}
|
|
@@ -2,7 +2,7 @@ import { CollectionDocument } from './collection-document.model';
|
|
|
2
2
|
export interface CronJobModel extends CollectionDocument {
|
|
3
3
|
name: string;
|
|
4
4
|
repeat: boolean;
|
|
5
|
-
time_to_run: string;
|
|
5
|
+
time_to_run: string | Date;
|
|
6
6
|
method_run: string;
|
|
7
7
|
method_run_data?: Object;
|
|
8
8
|
method_complete?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/models/cron-job.model.ts"],"names":[],"mappings":"","file":"cron-job.model.js","sourcesContent":["import { CollectionDocument } from './collection-document.model';\n\nexport interface CronJobModel extends CollectionDocument {\n\tname: string;\n\trepeat: boolean;\n\ttime_to_run: string;\n\tmethod_run: string;\n\tmethod_run_data?: Object;\n\tmethod_complete?: string;\n\tmethod_complete_data?: Object;\n\trunning: boolean;\n\ttimezone: string;\n\tnext_run?: Date;\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/models/cron-job.model.ts"],"names":[],"mappings":"","file":"cron-job.model.js","sourcesContent":["import { CollectionDocument } from './collection-document.model';\n\nexport interface CronJobModel extends CollectionDocument {\n\tname: string;\n\trepeat: boolean;\n\ttime_to_run: string | Date;\n\tmethod_run: string;\n\tmethod_run_data?: Object;\n\tmethod_complete?: string;\n\tmethod_complete_data?: Object;\n\trunning: boolean;\n\ttimezone: string;\n\tnext_run?: Date;\n}"]}
|