@golemio/waze-tt 1.2.6 → 1.2.7-dev.1678685370
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/dist/integration-engine/datasources/WazeTTDataSourceFactory.d.ts +11 -0
- package/dist/integration-engine/datasources/WazeTTDataSourceFactory.js +49 -0
- package/dist/integration-engine/datasources/WazeTTDataSourceFactory.js.map +1 -0
- package/dist/integration-engine/index.d.ts +1 -2
- package/dist/integration-engine/index.js +1 -2
- package/dist/integration-engine/index.js.map +1 -1
- package/dist/integration-engine/ioc/Di.d.ts +3 -0
- package/dist/integration-engine/ioc/Di.js +44 -0
- package/dist/integration-engine/ioc/Di.js.map +1 -0
- package/dist/integration-engine/ioc/ModuleContainer.d.ts +18 -0
- package/dist/integration-engine/ioc/ModuleContainer.js +27 -0
- package/dist/integration-engine/ioc/ModuleContainer.js.map +1 -0
- package/dist/integration-engine/repositories/FeedsRepository.d.ts +6 -0
- package/dist/integration-engine/repositories/FeedsRepository.js +37 -0
- package/dist/integration-engine/repositories/FeedsRepository.js.map +1 -0
- package/dist/integration-engine/repositories/JamsStatsRepository.d.ts +6 -0
- package/dist/integration-engine/repositories/JamsStatsRepository.js +37 -0
- package/dist/integration-engine/repositories/JamsStatsRepository.js.map +1 -0
- package/dist/integration-engine/repositories/RouteLivesRepository.d.ts +6 -0
- package/dist/integration-engine/repositories/RouteLivesRepository.js +37 -0
- package/dist/integration-engine/repositories/RouteLivesRepository.js.map +1 -0
- package/dist/integration-engine/repositories/RoutesRepository.d.ts +6 -0
- package/dist/integration-engine/repositories/RoutesRepository.js +37 -0
- package/dist/integration-engine/repositories/RoutesRepository.js.map +1 -0
- package/dist/integration-engine/repositories/SubRouteLivesRepository.d.ts +6 -0
- package/dist/integration-engine/repositories/SubRouteLivesRepository.js +37 -0
- package/dist/integration-engine/repositories/SubRouteLivesRepository.js.map +1 -0
- package/dist/integration-engine/repositories/SubRoutesRepository.d.ts +6 -0
- package/dist/integration-engine/repositories/SubRoutesRepository.js +37 -0
- package/dist/integration-engine/repositories/SubRoutesRepository.js.map +1 -0
- package/dist/integration-engine/services/WazeTTDataService.d.ts +41 -0
- package/dist/integration-engine/services/WazeTTDataService.js +187 -0
- package/dist/integration-engine/services/WazeTTDataService.js.map +1 -0
- package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsFeed.d.ts +3 -5
- package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsFeed.js +0 -3
- package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsFeed.js.map +1 -1
- package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsRouteLives.d.ts +3 -5
- package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsRouteLives.js +0 -3
- package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsRouteLives.js.map +1 -1
- package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsRoutes.d.ts +3 -5
- package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsRoutes.js +16 -6
- package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsRoutes.js.map +1 -1
- package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsSubRouteLives.d.ts +3 -5
- package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsSubRouteLives.js +0 -3
- package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsSubRouteLives.js.map +1 -1
- package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsSubRoutes.d.ts +3 -5
- package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsSubRoutes.js +1 -4
- package/dist/integration-engine/wazeTTTransformations/WazeTTTransformationsSubRoutes.js.map +1 -1
- package/dist/integration-engine/workers/WazeTTWorker.d.ts +7 -0
- package/dist/integration-engine/workers/WazeTTWorker.js +21 -0
- package/dist/integration-engine/workers/WazeTTWorker.js.map +1 -0
- package/dist/integration-engine/workers/index.d.ts +2 -0
- package/dist/integration-engine/workers/index.js +6 -0
- package/dist/integration-engine/workers/index.js.map +1 -0
- package/dist/integration-engine/workers/tasks/FetchAndSaveDataToDBTask.d.ts +12 -0
- package/dist/integration-engine/workers/tasks/FetchAndSaveDataToDBTask.js +64 -0
- package/dist/integration-engine/workers/tasks/FetchAndSaveDataToDBTask.js.map +1 -0
- package/dist/integration-engine/workers/tasks/SaveS3DataToDBTask.d.ts +12 -0
- package/dist/integration-engine/workers/tasks/SaveS3DataToDBTask.js +64 -0
- package/dist/integration-engine/workers/tasks/SaveS3DataToDBTask.js.map +1 -0
- package/dist/integration-engine/workers/tasks/index.d.ts +2 -0
- package/dist/integration-engine/workers/tasks/index.js +19 -0
- package/dist/integration-engine/workers/tasks/index.js.map +1 -0
- package/dist/schema-definitions/index.d.ts +15 -1
- package/dist/schema-definitions/index.js +14 -2
- package/dist/schema-definitions/index.js.map +1 -1
- package/dist/schema-definitions/interfaces/WazeTTData.d.ts +55 -0
- package/dist/schema-definitions/interfaces/WazeTTData.js +3 -0
- package/dist/schema-definitions/interfaces/WazeTTData.js.map +1 -0
- package/docs/implementation_documentation.md +65 -1
- package/package.json +1 -1
- package/dist/integration-engine/WazeTTWorker.d.ts +0 -39
- package/dist/integration-engine/WazeTTWorker.js +0 -217
- package/dist/integration-engine/WazeTTWorker.js.map +0 -1
- package/dist/integration-engine/queueDefinitions.d.ts +0 -3
- package/dist/integration-engine/queueDefinitions.js +0 -36
- package/dist/integration-engine/queueDefinitions.js.map +0 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.SaveS3DataToDBTask = void 0;
|
|
25
|
+
const ModuleContainer_1 = require("../../ioc/ModuleContainer");
|
|
26
|
+
const WazeTTDataService_1 = require("../../services/WazeTTDataService");
|
|
27
|
+
const _sch_1 = require("../../../schema-definitions");
|
|
28
|
+
const AbstractTaskJsonSchema_1 = require("@golemio/core/dist/integration-engine/workers/AbstractTaskJsonSchema");
|
|
29
|
+
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
30
|
+
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
31
|
+
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
32
|
+
let SaveS3DataToDBTask = exports.SaveS3DataToDBTask = class SaveS3DataToDBTask extends AbstractTaskJsonSchema_1.AbstractTaskJsonSchema {
|
|
33
|
+
constructor(wazeTTDataService) {
|
|
34
|
+
super(_sch_1.WazeTT.name.toLowerCase());
|
|
35
|
+
this.wazeTTDataService = wazeTTDataService;
|
|
36
|
+
this.queueName = "saveS3DataToDB";
|
|
37
|
+
this.queueTtl = 4 * 60 * 1000;
|
|
38
|
+
this.schema = new golemio_validator_1.JSONSchemaValidator("datasourceWazeTTJsonSchema", _sch_1.WazeTT.datasourceWazeTTJsonSchema);
|
|
39
|
+
}
|
|
40
|
+
execute(msg) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
try {
|
|
43
|
+
if (!msg.sourceId) {
|
|
44
|
+
throw new golemio_errors_1.GeneralError("Missing sourceId in WazeTT data", this.constructor.name);
|
|
45
|
+
}
|
|
46
|
+
yield this.wazeTTDataService.saveFromSingleResource(msg);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (error instanceof golemio_errors_1.AbstractGolemioError) {
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
throw new golemio_errors_1.GeneralError("Error while processing WazeTT data ", this.constructor.name, error);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
exports.SaveS3DataToDBTask = SaveS3DataToDBTask = __decorate([
|
|
60
|
+
(0, tsyringe_1.injectable)(),
|
|
61
|
+
__param(0, (0, tsyringe_1.inject)(ModuleContainer_1.ModuleContainerToken.WazeTTDataService)),
|
|
62
|
+
__metadata("design:paramtypes", [WazeTTDataService_1.WazeTTDataService])
|
|
63
|
+
], SaveS3DataToDBTask);
|
|
64
|
+
//# sourceMappingURL=SaveS3DataToDBTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SaveS3DataToDBTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/SaveS3DataToDBTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAA+D;AAC/D,wEAAmE;AACnE,sDAA8B;AAC9B,iHAA8G;AAC9G,iEAAwE;AACxE,mFAAkF;AAClF,6EAA8F;AAIvF,IAAM,kBAAkB,gCAAxB,MAAM,kBAAmB,SAAQ,+CAAmC;IAIvE,YAEI,iBAA4C;QAE5C,KAAK,CAAC,aAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAFzB,sBAAiB,GAAjB,iBAAiB,CAAmB;QALhC,cAAS,GAAG,gBAAgB,CAAC;QAC7B,aAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAOrC,IAAI,CAAC,MAAM,GAAG,IAAI,uCAAmB,CAAC,4BAA4B,EAAE,aAAM,CAAC,0BAA0B,CAAC,CAAC;IAC3G,CAAC;IAEe,OAAO,CAAC,GAAgB;;YACpC,IAAI;gBACA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;oBACf,MAAM,IAAI,6BAAY,CAAC,iCAAiC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBACpF;gBACD,MAAM,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;aAC5D;YAAC,OAAO,KAAK,EAAE;gBACZ,IAAI,KAAK,YAAY,qCAAoB,EAAE;oBACvC,MAAM,KAAK,CAAC;iBACf;qBAAM;oBACH,MAAM,IAAI,6BAAY,CAAC,qCAAqC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iBAC/F;aACJ;QACL,CAAC;KAAA;CACJ,CAAA;6BA1BY,kBAAkB;IAD9B,IAAA,qBAAU,GAAE;IAMJ,WAAA,IAAA,iBAAM,EAAC,sCAAoB,CAAC,iBAAiB,CAAC,CAAA;qCACpB,qCAAiB;GANvC,kBAAkB,CA0B9B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./FetchAndSaveDataToDBTask"), exports);
|
|
18
|
+
__exportStar(require("./SaveS3DataToDBTask"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,uDAAqC"}
|
|
@@ -55,7 +55,7 @@ declare const forExport: {
|
|
|
55
55
|
pattern: string;
|
|
56
56
|
};
|
|
57
57
|
time: {
|
|
58
|
-
type: string
|
|
58
|
+
type: string;
|
|
59
59
|
};
|
|
60
60
|
type: {
|
|
61
61
|
type: string[];
|
|
@@ -64,6 +64,7 @@ declare const forExport: {
|
|
|
64
64
|
type: string;
|
|
65
65
|
};
|
|
66
66
|
};
|
|
67
|
+
required: string[];
|
|
67
68
|
};
|
|
68
69
|
};
|
|
69
70
|
irregularities: {
|
|
@@ -89,11 +90,24 @@ declare const forExport: {
|
|
|
89
90
|
};
|
|
90
91
|
lengthOfJams: {
|
|
91
92
|
type: string;
|
|
93
|
+
items: {
|
|
94
|
+
type: string;
|
|
95
|
+
properties: {
|
|
96
|
+
jamLevel: {
|
|
97
|
+
type: string;
|
|
98
|
+
};
|
|
99
|
+
jamLength: {
|
|
100
|
+
type: string;
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
required: string[];
|
|
104
|
+
};
|
|
92
105
|
};
|
|
93
106
|
updateTime: {
|
|
94
107
|
type: string;
|
|
95
108
|
};
|
|
96
109
|
};
|
|
110
|
+
required: string[];
|
|
97
111
|
};
|
|
98
112
|
feeds: {
|
|
99
113
|
name: string;
|
|
@@ -41,10 +41,11 @@ const datasourceWazeTTJsonSchema = {
|
|
|
41
41
|
length: { type: "number" },
|
|
42
42
|
jamLevel: { type: "number" },
|
|
43
43
|
id: { type: "string", pattern: "^[0-9]+$" },
|
|
44
|
-
time: { type:
|
|
44
|
+
time: { type: "integer" },
|
|
45
45
|
type: { type: ["integer", "string"] },
|
|
46
46
|
jams: { type: "array" },
|
|
47
47
|
},
|
|
48
|
+
required: ["id"],
|
|
48
49
|
},
|
|
49
50
|
},
|
|
50
51
|
irregularities: { type: "array" },
|
|
@@ -56,9 +57,20 @@ const datasourceWazeTTJsonSchema = {
|
|
|
56
57
|
name: { type: "string" },
|
|
57
58
|
isMetric: { type: "boolean" },
|
|
58
59
|
restrictions: { type: "object" },
|
|
59
|
-
lengthOfJams: {
|
|
60
|
+
lengthOfJams: {
|
|
61
|
+
type: "array",
|
|
62
|
+
items: {
|
|
63
|
+
type: "object",
|
|
64
|
+
properties: {
|
|
65
|
+
jamLevel: { type: "integer" },
|
|
66
|
+
jamLength: { type: "integer" },
|
|
67
|
+
},
|
|
68
|
+
required: ["jamLevel", "jamLength"],
|
|
69
|
+
},
|
|
70
|
+
},
|
|
60
71
|
updateTime: { type: "number" },
|
|
61
72
|
},
|
|
73
|
+
required: ["usersOnJams", "broadcasterId", "areaName", "bbox", "name", "isMetric"],
|
|
62
74
|
};
|
|
63
75
|
const outputFeedsJsonSchema = {
|
|
64
76
|
type: "object",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema-definitions/index.ts"],"names":[],"mappings":";;;;;;AAAA,oFAA4D;AAC5D,yDAAsD;AACtD,yCAAyC;AAEzC,MAAM,0BAA0B,GAAG;IAC/B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,WAAW,EAAE;YACT,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACR,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;oBAC3C,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;iBAC5C;aACJ;SACJ;QACD,MAAM,EAAE;YACJ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACR,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;oBAC7C,IAAI,EAAE;wBACF,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACH,IAAI,EAAE,QAAQ;yBACjB;qBACJ;oBACD,IAAI,EAAE;wBACF,IAAI,EAAE,QAAQ;qBACjB;oBACD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC5B,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE;oBAC3C,IAAI,EAAE,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema-definitions/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export interface IWazeTTFeed {
|
|
2
|
+
id: string;
|
|
3
|
+
sourceId: number;
|
|
4
|
+
broadcasterId: string;
|
|
5
|
+
areaName: string;
|
|
6
|
+
bbox: Record<string, unknown>;
|
|
7
|
+
name: string;
|
|
8
|
+
isMetric: boolean;
|
|
9
|
+
updateTime?: number;
|
|
10
|
+
usersOnJams: IWazerJam[];
|
|
11
|
+
routes: IWazeTTRoute[];
|
|
12
|
+
lengthOfJams: IJamLength[];
|
|
13
|
+
}
|
|
14
|
+
interface IWazerJam {
|
|
15
|
+
wazersCount: number | string;
|
|
16
|
+
jamLevel: number | string;
|
|
17
|
+
}
|
|
18
|
+
interface IJamLength {
|
|
19
|
+
jamLevel: number;
|
|
20
|
+
jamLength: number;
|
|
21
|
+
}
|
|
22
|
+
export interface IWazeTTRoute {
|
|
23
|
+
toName: string;
|
|
24
|
+
historicTime?: number | string;
|
|
25
|
+
line?: IGeoPoint[];
|
|
26
|
+
bbox: Record<string, unknown>;
|
|
27
|
+
name: string;
|
|
28
|
+
fromName: string;
|
|
29
|
+
id: string;
|
|
30
|
+
length: number;
|
|
31
|
+
jamLevel: number;
|
|
32
|
+
time: number;
|
|
33
|
+
type: string;
|
|
34
|
+
jams?: unknown[];
|
|
35
|
+
subRoutes: IWazeTTSubRoute[];
|
|
36
|
+
}
|
|
37
|
+
export interface IGeoPoint {
|
|
38
|
+
x: number;
|
|
39
|
+
y: number;
|
|
40
|
+
}
|
|
41
|
+
export interface IWazeTTSubRoute {
|
|
42
|
+
toName: string;
|
|
43
|
+
historicTime: number;
|
|
44
|
+
line?: IGeoPoint[];
|
|
45
|
+
bbox: Record<string, unknown>;
|
|
46
|
+
fromName: string;
|
|
47
|
+
length: number;
|
|
48
|
+
jamLevel: number;
|
|
49
|
+
time: number;
|
|
50
|
+
jams?: unknown[];
|
|
51
|
+
name: string;
|
|
52
|
+
id: string;
|
|
53
|
+
type: string;
|
|
54
|
+
}
|
|
55
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WazeTTData.js","sourceRoot":"","sources":["../../../src/schema-definitions/interfaces/WazeTTData.ts"],"names":[],"mappings":""}
|
|
@@ -1,5 +1,69 @@
|
|
|
1
|
-
# Implementační dokumentace modulu
|
|
1
|
+
# Implementační dokumentace modulu _WazeTT_
|
|
2
|
+
|
|
3
|
+
## Záměr
|
|
4
|
+
|
|
5
|
+
Modul slouží k ukladání WazeTT dat
|
|
6
|
+
|
|
7
|
+
## Vstupní data
|
|
2
8
|
|
|
3
9
|
## Zpracování dat / transformace
|
|
4
10
|
|
|
5
11
|
Interní RabbitMQ fronty jsou popsány v [AsyncAPI](./asyncapi.yaml).
|
|
12
|
+
|
|
13
|
+
Všechny tabulky jsou ve schématu `wazett`
|
|
14
|
+
|
|
15
|
+
### _WazeTTWorker_
|
|
16
|
+
|
|
17
|
+
WazeTT modul má jednoho workera, který se stará o ukládání dat
|
|
18
|
+
|
|
19
|
+
#### _task: FetchAndSaveDataToDBTask_
|
|
20
|
+
|
|
21
|
+
Fetchuje data z pole datových zdrojů a ukládá data do tabulek `wazett_feeds`, `wazett_jams_stats`, `wazett_route_lives`, `wazett_routes`,`wazett_subroute_lives`, `wazett_subroutes`
|
|
22
|
+
|
|
23
|
+
- vstupní rabbitmq fronta
|
|
24
|
+
- nazev: dataplatform.wazett.fetchAndSaveDataToDB
|
|
25
|
+
- [parametry]
|
|
26
|
+
- žádné
|
|
27
|
+
- datové zdroje
|
|
28
|
+
- [WazettDataSourceFactory](../src/integration-engine/datasources/WazeTTDataSourceFactory.ts)
|
|
29
|
+
- transformace
|
|
30
|
+
- [Feed Transformation](../src/integration-engine/wazeTTTransformations/WazeTTTransformationsFeed.ts)
|
|
31
|
+
- [Routes Transformation](../src/integration-engine/wazeTTTransformations/WazeTTTransformationsRoutes.ts)
|
|
32
|
+
- [SubRoutes Transformation](../src/integration-engine/wazeTTTransformations/WazeTTTransformationsSubroutes.ts)
|
|
33
|
+
- [Route Lives Transformation](../src/integration-engine/wazeTTTransformations/WazeTTTransformationsRouteLives.ts)
|
|
34
|
+
- [Subroute Lives Transformation](../src/integration-engine/wazeTTTransformations/WazeTTTransformationsSubRouteLives.ts)
|
|
35
|
+
- data modely
|
|
36
|
+
- [FeedsRepository](../src/integration-engine/repositories/FeedsRepository.ts)
|
|
37
|
+
- [JamsStatsRepository](../src/integration-engine/repositories/JamsStatsRepository.ts)
|
|
38
|
+
- [RouteLivesRepository](../src/integration-engine/repositories/RouteLivesRepository.ts)
|
|
39
|
+
- [RoutesRepository](../src/integration-engine/repositories/RoutesRepository.ts)
|
|
40
|
+
- [SubRouteLivesRepository](../src/integration-engine/repositories/SubRouteLivesRepository.ts)
|
|
41
|
+
- [SubRoutesRepository](../src/integration-engine/repositories/SubRoutesRepository.ts)
|
|
42
|
+
|
|
43
|
+
#### _task: SaveS3DataToDBTask_
|
|
44
|
+
|
|
45
|
+
ukládá data z S3 do tabulek `wazett_feeds`, `wazett_jams_stats`, `wazett_route_lives`, `wazett_routes`,`wazett_subroute_lives`, `wazett_subroutes`
|
|
46
|
+
|
|
47
|
+
- vstupní rabbitmq fronta
|
|
48
|
+
- název: dataplatform.wazett.saveS3DataToDB
|
|
49
|
+
- [parametry]
|
|
50
|
+
- žádné
|
|
51
|
+
- datové zdroje
|
|
52
|
+
- žádne
|
|
53
|
+
- transformace
|
|
54
|
+
- [Feed Transformation](../src/integration-engine/wazeTTTransformations/WazeTTTransformationsFeed.ts)
|
|
55
|
+
- [Routes Transformation](../src/integration-engine/wazeTTTransformations/WazeTTTransformationsRoutes.ts)
|
|
56
|
+
- [SubRoutes Transformation](../src/integration-engine/wazeTTTransformations/WazeTTTransformationsSubroutes.ts)
|
|
57
|
+
- [Route Lives Transformation](../src/integration-engine/wazeTTTransformations/WazeTTTransformationsRouteLives.ts)
|
|
58
|
+
- [Subroute Lives Transformation](../src/integration-engine/wazeTTTransformations/WazeTTTransformationsSubRouteLives.ts)
|
|
59
|
+
- data modely
|
|
60
|
+
- [FeedsRepository](../src/integration-engine/repositories/FeedsRepository.ts)
|
|
61
|
+
- [JamsStatsRepository](../src/integration-engine/repositories/JamsStatsRepository.ts)
|
|
62
|
+
- [RouteLivesRepository](../src/integration-engine/repositories/RouteLivesRepository.ts)
|
|
63
|
+
- [RoutesRepository](../src/integration-engine/repositories/RoutesRepository.ts)
|
|
64
|
+
- [SubRouteLivesRepository](../src/integration-engine/repositories/SubRouteLivesRepository.ts)
|
|
65
|
+
- [SubRoutesRepository](../src/integration-engine/repositories/SubRoutesRepository.ts)
|
|
66
|
+
|
|
67
|
+
## Output API
|
|
68
|
+
|
|
69
|
+
### Obecné
|
package/package.json
CHANGED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { DataSource } from "@golemio/core/dist/integration-engine/datasources";
|
|
2
|
-
import { BaseWorker } from "@golemio/core/dist/integration-engine/workers";
|
|
3
|
-
export declare class WazeTTWorker extends BaseWorker {
|
|
4
|
-
private dataSourcesWazeTTArr;
|
|
5
|
-
private transformationFeeds;
|
|
6
|
-
private transformationRoutes;
|
|
7
|
-
private transformationRouteLives;
|
|
8
|
-
private transformationSubRoutes;
|
|
9
|
-
private transformationSubRouteLives;
|
|
10
|
-
private modelFeeds;
|
|
11
|
-
private modelJamsStats;
|
|
12
|
-
private modelRouteLives;
|
|
13
|
-
private modelRoutes;
|
|
14
|
-
private modelSubRouteLives;
|
|
15
|
-
private modelSubRoutes;
|
|
16
|
-
constructor();
|
|
17
|
-
saveS3DataToDB: (msg: any) => Promise<void>;
|
|
18
|
-
fetchAndSaveDataToDB: (msg: any) => Promise<void>;
|
|
19
|
-
/**
|
|
20
|
-
* This method downloads a data object from a single source
|
|
21
|
-
* @param {DataSource} singleDataSourceWazeTT object of one DataSource
|
|
22
|
-
* @param {number} sourceId source ID is the sequence number
|
|
23
|
-
* of the source address in the array in the source configuration file
|
|
24
|
-
*/
|
|
25
|
-
fetchFromSingleResource: (singleDataSourceWazeTT: DataSource, sourceId: number) => Promise<void>;
|
|
26
|
-
/**
|
|
27
|
-
* This method splits the object into individual table records and saves them to the database
|
|
28
|
-
* @param {object} data object of one feed, where data.sourceId - is the sequence number
|
|
29
|
-
* of the source address in the array in the source configuration file
|
|
30
|
-
*/
|
|
31
|
-
saveFromSingleResource: (data: any) => Promise<void>;
|
|
32
|
-
private isJSONParseAble;
|
|
33
|
-
private saveFeeds;
|
|
34
|
-
private saveSubRoute;
|
|
35
|
-
private saveSubRouteLives;
|
|
36
|
-
private saveJams;
|
|
37
|
-
private saveRouteLives;
|
|
38
|
-
private saveRoute;
|
|
39
|
-
}
|
|
@@ -1,217 +0,0 @@
|
|
|
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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.WazeTTWorker = void 0;
|
|
13
|
-
const index_1 = require("../schema-definitions/index");
|
|
14
|
-
const config_1 = require("@golemio/core/dist/integration-engine/config");
|
|
15
|
-
const datasources_1 = require("@golemio/core/dist/integration-engine/datasources");
|
|
16
|
-
const HTTPFetchProtocolStrategy_1 = require("@golemio/core/dist/integration-engine/datasources/protocol-strategy/HTTPFetchProtocolStrategy");
|
|
17
|
-
const helpers_1 = require("@golemio/core/dist/integration-engine/helpers");
|
|
18
|
-
const models_1 = require("@golemio/core/dist/integration-engine/models");
|
|
19
|
-
const workers_1 = require("@golemio/core/dist/integration-engine/workers");
|
|
20
|
-
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
21
|
-
const wazeTTTransformations_1 = require("./wazeTTTransformations");
|
|
22
|
-
class WazeTTWorker extends workers_1.BaseWorker {
|
|
23
|
-
constructor() {
|
|
24
|
-
super();
|
|
25
|
-
this.saveS3DataToDB = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
const msgContentStr = msg.content.toString();
|
|
27
|
-
if (this.isJSONParseAble(msgContentStr)) {
|
|
28
|
-
let msgContent;
|
|
29
|
-
msgContent = JSON.parse(msgContentStr);
|
|
30
|
-
// msgContent - object of one feed,
|
|
31
|
-
// where msgContent.sourceId - is the sequence number of the source address in the array
|
|
32
|
-
// in the source configuration file
|
|
33
|
-
this.saveFromSingleResource(msgContent);
|
|
34
|
-
}
|
|
35
|
-
else
|
|
36
|
-
helpers_1.log.warn(`${index_1.WazeTT.name}: For saveS3DataToDB method the message must contain a feed object (as a data source).`);
|
|
37
|
-
});
|
|
38
|
-
this.fetchAndSaveDataToDB = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
39
|
-
let fetchTasksArr = [];
|
|
40
|
-
this.dataSourcesWazeTTArr.forEach((singleDataSourceWazeTT, index) => {
|
|
41
|
-
fetchTasksArr.push(this.fetchFromSingleResource(singleDataSourceWazeTT, index + 1));
|
|
42
|
-
});
|
|
43
|
-
yield Promise.all(fetchTasksArr);
|
|
44
|
-
});
|
|
45
|
-
/**
|
|
46
|
-
* This method downloads a data object from a single source
|
|
47
|
-
* @param {DataSource} singleDataSourceWazeTT object of one DataSource
|
|
48
|
-
* @param {number} sourceId source ID is the sequence number
|
|
49
|
-
* of the source address in the array in the source configuration file
|
|
50
|
-
*/
|
|
51
|
-
this.fetchFromSingleResource = (singleDataSourceWazeTT, sourceId) => __awaiter(this, void 0, void 0, function* () {
|
|
52
|
-
let data;
|
|
53
|
-
let tryCount = 0;
|
|
54
|
-
yield tryGetData();
|
|
55
|
-
function tryGetData() {
|
|
56
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
-
try {
|
|
58
|
-
data = yield singleDataSourceWazeTT.getAll();
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
tryCount++;
|
|
63
|
-
if (tryCount == 9)
|
|
64
|
-
return null;
|
|
65
|
-
helpers_1.log.warn(`${index_1.WazeTT.name}: Error while getting data. Next try #${tryCount + 1} in 5 sec...`);
|
|
66
|
-
setTimeout(tryGetData, 5000);
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
if (data) {
|
|
71
|
-
data.sourceId = sourceId;
|
|
72
|
-
yield this.saveFromSingleResource(data);
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
/**
|
|
76
|
-
* This method splits the object into individual table records and saves them to the database
|
|
77
|
-
* @param {object} data object of one feed, where data.sourceId - is the sequence number
|
|
78
|
-
* of the source address in the array in the source configuration file
|
|
79
|
-
*/
|
|
80
|
-
this.saveFromSingleResource = (data) => __awaiter(this, void 0, void 0, function* () {
|
|
81
|
-
yield this.saveFeeds(data);
|
|
82
|
-
const feedId = data.sourceId;
|
|
83
|
-
// updateTime for route, jams_stats, route_lives, subroute_lives tables
|
|
84
|
-
const updateTime = new Date(typeof data.updateTime === "number" ? data.updateTime : Number(data.updateTime));
|
|
85
|
-
for (const route of data.routes) {
|
|
86
|
-
yield this.saveRoute(route, feedId, updateTime);
|
|
87
|
-
yield this.saveRouteLives(route, route.id, updateTime);
|
|
88
|
-
if (route.hasOwnProperty("subRoutes")) {
|
|
89
|
-
for (const subroute of route.subRoutes) {
|
|
90
|
-
yield this.saveSubRoute(subroute, route.id, updateTime);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
yield this.saveJams(data, feedId, updateTime);
|
|
95
|
-
});
|
|
96
|
-
this.isJSONParseAble = (str) => {
|
|
97
|
-
try {
|
|
98
|
-
JSON.parse(str);
|
|
99
|
-
}
|
|
100
|
-
catch (e) {
|
|
101
|
-
return false;
|
|
102
|
-
}
|
|
103
|
-
return true;
|
|
104
|
-
};
|
|
105
|
-
this.dataSourcesWazeTTArr = config_1.config.datasources.WazeTT.map((sourceUrl) => {
|
|
106
|
-
return new datasources_1.DataSource(index_1.WazeTT.name + "DataSource", new HTTPFetchProtocolStrategy_1.HTTPFetchProtocolStrategy({
|
|
107
|
-
headers: {},
|
|
108
|
-
method: "GET",
|
|
109
|
-
url: sourceUrl,
|
|
110
|
-
}), new datasources_1.JSONDataTypeStrategy({ resultsPath: "" }), new golemio_validator_1.JSONSchemaValidator(index_1.WazeTT.name + "DataSource", index_1.WazeTT.datasourceWazeTTJsonSchema));
|
|
111
|
-
});
|
|
112
|
-
this.transformationFeeds = new wazeTTTransformations_1.WazeTTTransformationsFeed();
|
|
113
|
-
this.transformationRoutes = new wazeTTTransformations_1.WazeTTTransformationsRoutes();
|
|
114
|
-
this.transformationRouteLives = new wazeTTTransformations_1.WazeTTTransformationsRouteLives();
|
|
115
|
-
this.transformationSubRoutes = new wazeTTTransformations_1.WazeTTTransformationsSubRoutes();
|
|
116
|
-
this.transformationSubRouteLives = new wazeTTTransformations_1.WazeTTTransformationsSubRouteLives();
|
|
117
|
-
this.modelFeeds = new models_1.PostgresModel(index_1.WazeTT.feeds.name + "Model", {
|
|
118
|
-
outputSequelizeAttributes: index_1.WazeTT.feeds.outputSequelizeAttributes,
|
|
119
|
-
pgSchema: index_1.WazeTT.pgSchema,
|
|
120
|
-
pgTableName: index_1.WazeTT.feeds.pgTableName,
|
|
121
|
-
savingType: "insertOrUpdate",
|
|
122
|
-
}, new golemio_validator_1.JSONSchemaValidator(index_1.WazeTT.feeds.name + "ModelJSONSchemaValidator", index_1.WazeTT.feeds.outputJsonSchemaDefinition));
|
|
123
|
-
this.modelJamsStats = new models_1.PostgresModel(index_1.WazeTT.jamsStats.name + "Model", {
|
|
124
|
-
outputSequelizeAttributes: index_1.WazeTT.jamsStats.outputSequelizeAttributes,
|
|
125
|
-
pgSchema: index_1.WazeTT.pgSchema,
|
|
126
|
-
pgTableName: index_1.WazeTT.jamsStats.pgTableName,
|
|
127
|
-
savingType: "insertOrUpdate",
|
|
128
|
-
}, new golemio_validator_1.JSONSchemaValidator(index_1.WazeTT.jamsStats.name + "ModelJSONSchemaValidator", index_1.WazeTT.jamsStats.outputJsonSchemaDefinition));
|
|
129
|
-
this.modelRouteLives = new models_1.PostgresModel(index_1.WazeTT.routeLives.name + "Model", {
|
|
130
|
-
outputSequelizeAttributes: index_1.WazeTT.routeLives.outputSequelizeAttributes,
|
|
131
|
-
pgSchema: index_1.WazeTT.pgSchema,
|
|
132
|
-
pgTableName: index_1.WazeTT.routeLives.pgTableName,
|
|
133
|
-
savingType: "insertOrUpdate",
|
|
134
|
-
}, new golemio_validator_1.JSONSchemaValidator(index_1.WazeTT.routeLives.name + "ModelJSONSchemaValidator", index_1.WazeTT.routeLives.outputJsonSchemaDefinition));
|
|
135
|
-
this.modelRoutes = new models_1.PostgresModel(index_1.WazeTT.routes.name + "Model", {
|
|
136
|
-
outputSequelizeAttributes: index_1.WazeTT.routes.outputSequelizeAttributes,
|
|
137
|
-
pgSchema: index_1.WazeTT.pgSchema,
|
|
138
|
-
pgTableName: index_1.WazeTT.routes.pgTableName,
|
|
139
|
-
savingType: "insertOrUpdate",
|
|
140
|
-
}, new golemio_validator_1.JSONSchemaValidator(index_1.WazeTT.routes.name + "ModelJSONSchemaValidator", index_1.WazeTT.routes.outputJsonSchemaDefinition));
|
|
141
|
-
this.modelSubRouteLives = new models_1.PostgresModel(index_1.WazeTT.subRouteLives.name + "Model", {
|
|
142
|
-
outputSequelizeAttributes: index_1.WazeTT.subRouteLives.outputSequelizeAttributes,
|
|
143
|
-
pgSchema: index_1.WazeTT.pgSchema,
|
|
144
|
-
pgTableName: index_1.WazeTT.subRouteLives.pgTableName,
|
|
145
|
-
savingType: "insertOnly",
|
|
146
|
-
}, new golemio_validator_1.JSONSchemaValidator(index_1.WazeTT.subRouteLives.name + "ModelJSONSchemaValidator", index_1.WazeTT.subRouteLives.outputJsonSchemaDefinition));
|
|
147
|
-
this.modelSubRoutes = new models_1.PostgresModel(index_1.WazeTT.subRoutes.name + "Model", {
|
|
148
|
-
outputSequelizeAttributes: index_1.WazeTT.subRoutes.outputSequelizeAttributes,
|
|
149
|
-
pgSchema: index_1.WazeTT.pgSchema,
|
|
150
|
-
pgTableName: index_1.WazeTT.subRoutes.pgTableName,
|
|
151
|
-
savingType: "insertOrUpdate",
|
|
152
|
-
}, new golemio_validator_1.JSONSchemaValidator(index_1.WazeTT.subRoutes.name + "ModelJSONSchemaValidator", index_1.WazeTT.subRoutes.outputJsonSchemaDefinition));
|
|
153
|
-
}
|
|
154
|
-
saveFeeds(data) {
|
|
155
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
156
|
-
const transformedFeed = yield this.transformationFeeds.transform(data);
|
|
157
|
-
yield this.modelFeeds.save(transformedFeed);
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
saveSubRoute(subroute, routeId, updateTime) {
|
|
161
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
162
|
-
const transformedSubRoute = yield this.transformationSubRoutes.transform(subroute);
|
|
163
|
-
if (transformedSubRoute) {
|
|
164
|
-
transformedSubRoute.route_id = routeId;
|
|
165
|
-
yield this.modelSubRoutes.save(transformedSubRoute);
|
|
166
|
-
yield this.saveSubRouteLives(subroute, updateTime, routeId, transformedSubRoute);
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
saveSubRouteLives(subroute, updateTime, routeId, transformedSubRoute) {
|
|
171
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
172
|
-
const transformedSubRouteLive = yield this.transformationSubRouteLives.transform(subroute);
|
|
173
|
-
transformedSubRouteLive.update_time = updateTime;
|
|
174
|
-
transformedSubRouteLive.route_id = routeId;
|
|
175
|
-
transformedSubRouteLive.subroute_line_md5 = transformedSubRoute.line_md5;
|
|
176
|
-
yield this.modelSubRouteLives.save(transformedSubRouteLive);
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
saveJams(data, feedId, updateTime) {
|
|
180
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
181
|
-
const jamsStatsArr = data.usersOnJams.map((element) => {
|
|
182
|
-
const lengthOfJams = data.lengthOfJams.filter((item) => {
|
|
183
|
-
return item.jamLevel - 1 === element.jamLevel;
|
|
184
|
-
})[0].jamLength;
|
|
185
|
-
return {
|
|
186
|
-
jam_level: +element.jamLevel,
|
|
187
|
-
length_of_jams: lengthOfJams,
|
|
188
|
-
wazers_count: +element.wazersCount,
|
|
189
|
-
};
|
|
190
|
-
});
|
|
191
|
-
let jamsStatsSet;
|
|
192
|
-
for (jamsStatsSet of jamsStatsArr) {
|
|
193
|
-
jamsStatsSet.feed_id = feedId;
|
|
194
|
-
jamsStatsSet.update_time = updateTime;
|
|
195
|
-
yield this.modelJamsStats.save(jamsStatsSet);
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
saveRouteLives(route, routeId, updateTime) {
|
|
200
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
201
|
-
const transformedRouteLive = yield this.transformationRouteLives.transform(route);
|
|
202
|
-
transformedRouteLive.route_id = routeId;
|
|
203
|
-
transformedRouteLive.update_time = updateTime;
|
|
204
|
-
yield this.modelRouteLives.save(transformedRouteLive);
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
saveRoute(route, feedId, updateTime) {
|
|
208
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
209
|
-
const transformedRoute = yield this.transformationRoutes.transform(route);
|
|
210
|
-
transformedRoute.feed_id = feedId;
|
|
211
|
-
transformedRoute.last_update = updateTime;
|
|
212
|
-
yield this.modelRoutes.save(transformedRoute);
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
exports.WazeTTWorker = WazeTTWorker;
|
|
217
|
-
//# sourceMappingURL=WazeTTWorker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WazeTTWorker.js","sourceRoot":"","sources":["../../src/integration-engine/WazeTTWorker.ts"],"names":[],"mappings":"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"}
|