@golemio/rush-hour-aggregation 1.0.0-dev.522143437 → 1.0.1-dev.540776399
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/README.md +61 -21
- package/db/migrations/postgresql/20220505053742-addMaterialViews.js +53 -0
- package/db/migrations/postgresql/sqls/20220505053742-addMaterialViews-down.sql +10 -0
- package/db/migrations/postgresql/sqls/20220505053742-addMaterialViews-up.sql +565 -0
- package/dist/integration-engine/AggregationWorker.d.ts +2 -0
- package/dist/integration-engine/AggregationWorker.js +14 -2
- package/dist/integration-engine/AggregationWorker.js.map +1 -1
- package/dist/integration-engine/dataAccess/AbstractEventsRepository.d.ts +9 -0
- package/dist/integration-engine/dataAccess/AbstractEventsRepository.js +35 -0
- package/dist/integration-engine/dataAccess/AbstractEventsRepository.js.map +1 -0
- package/dist/integration-engine/dataAccess/FcdEventsRepository.d.ts +4 -2
- package/dist/integration-engine/dataAccess/FcdEventsRepository.js +4 -2
- package/dist/integration-engine/dataAccess/FcdEventsRepository.js.map +1 -1
- package/dist/integration-engine/dataAccess/NdicEventRepository.d.ts +4 -2
- package/dist/integration-engine/dataAccess/NdicEventRepository.js +4 -2
- package/dist/integration-engine/dataAccess/NdicEventRepository.js.map +1 -1
- package/dist/integration-engine/dataAccess/TskEventsRepository.d.ts +4 -2
- package/dist/integration-engine/dataAccess/TskEventsRepository.js +4 -2
- package/dist/integration-engine/dataAccess/TskEventsRepository.js.map +1 -1
- package/dist/integration-engine/dataAccess/WazeJamsRepository.d.ts +4 -2
- package/dist/integration-engine/dataAccess/WazeJamsRepository.js +4 -2
- package/dist/integration-engine/dataAccess/WazeJamsRepository.js.map +1 -1
- package/dist/integration-engine/dataAccess/WazeReconstructionsRepository.d.ts +4 -2
- package/dist/integration-engine/dataAccess/WazeReconstructionsRepository.js +4 -2
- package/dist/integration-engine/dataAccess/WazeReconstructionsRepository.js.map +1 -1
- package/dist/integration-engine/queueDefinitions.js +10 -0
- package/dist/integration-engine/queueDefinitions.js.map +1 -1
- package/dist/integration-engine/service/AggregationFactory.d.ts +2 -2
- package/dist/integration-engine/service/AggregationFactory.js.map +1 -1
- package/dist/integration-engine/service/aggregators/AbstractAggregator.d.ts +7 -3
- package/dist/integration-engine/service/aggregators/AbstractAggregator.js +8 -0
- package/dist/integration-engine/service/aggregators/AbstractAggregator.js.map +1 -1
- package/dist/integration-engine/service/aggregators/FcdEventsAggregator.d.ts +3 -3
- package/dist/integration-engine/service/aggregators/FcdEventsAggregator.js +0 -4
- package/dist/integration-engine/service/aggregators/FcdEventsAggregator.js.map +1 -1
- package/dist/integration-engine/service/aggregators/NdicEventsAggregator.d.ts +3 -3
- package/dist/integration-engine/service/aggregators/NdicEventsAggregator.js +0 -4
- package/dist/integration-engine/service/aggregators/NdicEventsAggregator.js.map +1 -1
- package/dist/integration-engine/service/aggregators/TskEventsAggregator.d.ts +3 -3
- package/dist/integration-engine/service/aggregators/TskEventsAggregator.js +0 -4
- package/dist/integration-engine/service/aggregators/TskEventsAggregator.js.map +1 -1
- package/dist/integration-engine/service/aggregators/WazeJamsAggregator.d.ts +3 -3
- package/dist/integration-engine/service/aggregators/WazeJamsAggregator.js +0 -4
- package/dist/integration-engine/service/aggregators/WazeJamsAggregator.js.map +1 -1
- package/dist/integration-engine/service/aggregators/WazeReconstructionsAggregator.d.ts +3 -3
- package/dist/integration-engine/service/aggregators/WazeReconstructionsAggregator.js +0 -4
- package/dist/integration-engine/service/aggregators/WazeReconstructionsAggregator.js.map +1 -1
- package/dist/integration-engine/service/aggregators/interfaces/IAbstractAggregator.d.ts +6 -0
- package/dist/integration-engine/service/aggregators/interfaces/IAbstractAggregator.js +3 -0
- package/dist/integration-engine/service/aggregators/interfaces/IAbstractAggregator.js.map +1 -0
- package/package.json +3 -3
- package/templates/sqlQueries/FcdEvents.sql +1 -1
- package/templates/sqlQueries/NdicEventsFull.sql +2 -2
|
@@ -0,0 +1,35 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const PrahaZasekanaInfo_1 = __importDefault(require("../../schema-definitions/sequelize-models/PrahaZasekanaInfo"));
|
|
16
|
+
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
|
|
17
|
+
const helpers_1 = require("@golemio/core/dist/integration-engine/helpers");
|
|
18
|
+
class EventsRepository extends integration_engine_1.PostgresModel {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
this.refreshLatestMaterializedView = () => __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
yield this.refreshMaterializedView(this.materializedViewNameLatest);
|
|
23
|
+
});
|
|
24
|
+
this.refreshHistoricMaterializedView = () => __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
yield this.refreshMaterializedView(this.materializedViewNameHistoric);
|
|
26
|
+
});
|
|
27
|
+
this.refreshMaterializedView = (viewName) => __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
helpers_1.log.debug(`Refreshing materialized view: ${viewName}`);
|
|
29
|
+
const sql = "REFRESH MATERIALIZED VIEW CONCURRENTLY ".concat(PrahaZasekanaInfo_1.default.SCHEMA, ".", viewName);
|
|
30
|
+
yield this.query(sql);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.default = EventsRepository;
|
|
35
|
+
//# sourceMappingURL=AbstractEventsRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractEventsRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/dataAccess/AbstractEventsRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oHAAwE;AACxE,8EAA8E;AAC9E,2EAAoE;AAEpE,MAA8B,gBAAoB,SAAQ,kCAAa;IAAvE;;QAMW,kCAA6B,GAAG,GAAwB,EAAE;YAC7D,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxE,CAAC,CAAA,CAAC;QAEK,oCAA+B,GAAG,GAAwB,EAAE;YAC/D,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC1E,CAAC,CAAA,CAAC;QAEM,4BAAuB,GAAG,CAAO,QAAgB,EAAiB,EAAE;YACxE,aAAG,CAAC,KAAK,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;YACvD,MAAM,GAAG,GAAG,yCAAyC,CAAC,MAAM,CAAC,2BAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;YAEtG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAA,CAAC;IACN,CAAC;CAAA;AApBD,mCAoBC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import FcdEvent from "../../schema-definitions/sequelize-models/FcdEvents";
|
|
2
|
-
import
|
|
3
|
-
export default class FcdEventsRepository extends
|
|
2
|
+
import EventsRepository from "./AbstractEventsRepository";
|
|
3
|
+
export default class FcdEventsRepository extends EventsRepository<FcdEvent> {
|
|
4
|
+
protected materializedViewNameLatest: string;
|
|
5
|
+
protected materializedViewNameHistoric: string;
|
|
4
6
|
constructor();
|
|
5
7
|
saveData: (data: FcdEvent[], updateOnDuplicate: boolean) => Promise<void>;
|
|
6
8
|
}
|
|
@@ -15,9 +15,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
const AggregationTaskType_1 = require("../../schema-definitions/helpers/AggregationTaskType");
|
|
16
16
|
const FcdEvents_1 = __importDefault(require("../../schema-definitions/sequelize-models/FcdEvents"));
|
|
17
17
|
const PrahaZasekanaInfo_1 = __importDefault(require("../../schema-definitions/sequelize-models/PrahaZasekanaInfo"));
|
|
18
|
-
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
|
|
19
18
|
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
20
|
-
|
|
19
|
+
const AbstractEventsRepository_1 = __importDefault(require("./AbstractEventsRepository"));
|
|
20
|
+
class FcdEventsRepository extends AbstractEventsRepository_1.default {
|
|
21
21
|
constructor() {
|
|
22
22
|
super("FcdEventsRepository", {
|
|
23
23
|
outputSequelizeAttributes: FcdEvents_1.default.attributeModel,
|
|
@@ -25,6 +25,8 @@ class FcdEventsRepository extends integration_engine_1.PostgresModel {
|
|
|
25
25
|
pgSchema: PrahaZasekanaInfo_1.default.SCHEMA,
|
|
26
26
|
savingType: "insertOnly",
|
|
27
27
|
}, new golemio_validator_1.JSONSchemaValidator("FcdEventsRepository", FcdEvents_1.default.arrayJsonSchema, true));
|
|
28
|
+
this.materializedViewNameLatest = "fcd_events_snapshots_latest";
|
|
29
|
+
this.materializedViewNameHistoric = "fcd_events_snapshots_history";
|
|
28
30
|
this.saveData = (data, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
|
|
29
31
|
yield this["sequelizeModel"].bulkCreate(data, {
|
|
30
32
|
ignoreDuplicates: !updateOnDuplicate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FcdEventsRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/dataAccess/FcdEventsRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8FAAuE;AACvE,oGAAuD;AACvD,oHAAwE;AACxE,
|
|
1
|
+
{"version":3,"file":"FcdEventsRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/dataAccess/FcdEventsRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8FAAuE;AACvE,oGAAuD;AACvD,oHAAwE;AACxE,mFAAkF;AAClF,0FAA0D;AAE1D,MAAqB,mBAAoB,SAAQ,kCAA0B;IAIvE;QACI,KAAK,CACD,qBAAqB,EACrB;YACI,yBAAyB,EAAE,mBAAQ,CAAC,cAAc;YAClD,WAAW,EAAE,2BAAiB,CAAC,WAAW,CAAC,yCAAmB,CAAC,GAAG,CAAC;YACnE,QAAQ,EAAE,2BAAiB,CAAC,MAAM;YAClC,UAAU,EAAE,YAAY;SAC3B,EACD,IAAI,uCAAmB,CAAC,qBAAqB,EAAE,mBAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CACjF,CAAC;QAbI,+BAA0B,GAAG,6BAA6B,CAAC;QAC3D,iCAA4B,GAAG,8BAA8B,CAAC;QAejE,aAAQ,GAAG,CAAO,IAAgB,EAAE,iBAA0B,EAAE,EAAE;YACrE,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAW,IAAI,EAAE;gBACpD,gBAAgB,EAAE,CAAC,iBAAiB;gBACpC,SAAS,EAAE,KAAK;gBAChB,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;aACvG,CAAC,CAAC;QACP,CAAC,CAAA,CAAC;IARF,CAAC;CASJ;AAxBD,sCAwBC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import NdicEvent from "../../schema-definitions/sequelize-models/NdicEvent";
|
|
2
|
-
import
|
|
3
|
-
export default class NdicEventsRepository extends
|
|
2
|
+
import EventsRepository from "./AbstractEventsRepository";
|
|
3
|
+
export default class NdicEventsRepository extends EventsRepository<NdicEvent> {
|
|
4
|
+
protected materializedViewNameLatest: string;
|
|
5
|
+
protected materializedViewNameHistoric: string;
|
|
4
6
|
constructor();
|
|
5
7
|
saveData: (data: NdicEvent[], updateOnDuplicate: boolean) => Promise<void>;
|
|
6
8
|
}
|
|
@@ -15,9 +15,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
const AggregationTaskType_1 = require("../../schema-definitions/helpers/AggregationTaskType");
|
|
16
16
|
const NdicEvent_1 = __importDefault(require("../../schema-definitions/sequelize-models/NdicEvent"));
|
|
17
17
|
const PrahaZasekanaInfo_1 = __importDefault(require("../../schema-definitions/sequelize-models/PrahaZasekanaInfo"));
|
|
18
|
-
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
|
|
19
18
|
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
20
|
-
|
|
19
|
+
const AbstractEventsRepository_1 = __importDefault(require("./AbstractEventsRepository"));
|
|
20
|
+
class NdicEventsRepository extends AbstractEventsRepository_1.default {
|
|
21
21
|
constructor() {
|
|
22
22
|
super("NdicEventsRepository", {
|
|
23
23
|
outputSequelizeAttributes: NdicEvent_1.default.attributeModel,
|
|
@@ -25,6 +25,8 @@ class NdicEventsRepository extends integration_engine_1.PostgresModel {
|
|
|
25
25
|
pgSchema: PrahaZasekanaInfo_1.default.SCHEMA,
|
|
26
26
|
savingType: "insertOnly",
|
|
27
27
|
}, new golemio_validator_1.JSONSchemaValidator("NdicEventsRepository", NdicEvent_1.default.arrayJsonSchema, true));
|
|
28
|
+
this.materializedViewNameLatest = "ndic_events_full_snapshots_latest";
|
|
29
|
+
this.materializedViewNameHistoric = "ndic_events_full_snapshots_history";
|
|
28
30
|
this.saveData = (data, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
|
|
29
31
|
yield this["sequelizeModel"].bulkCreate(data, {
|
|
30
32
|
ignoreDuplicates: !updateOnDuplicate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NdicEventRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/dataAccess/NdicEventRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8FAAuE;AACvE,oGAAwD;AACxD,oHAAwE;AACxE,
|
|
1
|
+
{"version":3,"file":"NdicEventRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/dataAccess/NdicEventRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8FAAuE;AACvE,oGAAwD;AACxD,oHAAwE;AACxE,mFAAkF;AAClF,0FAA0D;AAE1D,MAAqB,oBAAqB,SAAQ,kCAA2B;IAIzE;QACI,KAAK,CACD,sBAAsB,EACtB;YACI,yBAAyB,EAAE,mBAAS,CAAC,cAAc;YACnD,WAAW,EAAE,2BAAiB,CAAC,WAAW,CAAC,yCAAmB,CAAC,IAAI,CAAC;YACpE,QAAQ,EAAE,2BAAiB,CAAC,MAAM;YAClC,UAAU,EAAE,YAAY;SAC3B,EACD,IAAI,uCAAmB,CAAC,sBAAsB,EAAE,mBAAS,CAAC,eAAe,EAAE,IAAI,CAAC,CACnF,CAAC;QAbI,+BAA0B,GAAG,mCAAmC,CAAC;QACjE,iCAA4B,GAAG,oCAAoC,CAAC;QAevE,aAAQ,GAAG,CAAO,IAAiB,EAAE,iBAA0B,EAAE,EAAE;YACtE,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAY,IAAI,EAAE;gBACrD,gBAAgB,EAAE,CAAC,iBAAiB;gBACpC,SAAS,EAAE,KAAK;gBAChB,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;aACpE,CAAC,CAAC;QACP,CAAC,CAAA,CAAC;IARF,CAAC;CASJ;AAxBD,uCAwBC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import TskEvent from "../../schema-definitions/sequelize-models/TskEvent";
|
|
2
|
-
import
|
|
3
|
-
export default class TskEventsRepository extends
|
|
2
|
+
import EventsRepository from "./AbstractEventsRepository";
|
|
3
|
+
export default class TskEventsRepository extends EventsRepository<TskEvent> {
|
|
4
|
+
protected materializedViewNameLatest: string;
|
|
5
|
+
protected materializedViewNameHistoric: string;
|
|
4
6
|
constructor();
|
|
5
7
|
saveData: (data: TskEvent[], updateOnDuplicate: boolean) => Promise<void>;
|
|
6
8
|
}
|
|
@@ -15,9 +15,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
const AggregationTaskType_1 = require("../../schema-definitions/helpers/AggregationTaskType");
|
|
16
16
|
const PrahaZasekanaInfo_1 = __importDefault(require("../../schema-definitions/sequelize-models/PrahaZasekanaInfo"));
|
|
17
17
|
const TskEvent_1 = __importDefault(require("../../schema-definitions/sequelize-models/TskEvent"));
|
|
18
|
-
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
|
|
19
18
|
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
20
|
-
|
|
19
|
+
const AbstractEventsRepository_1 = __importDefault(require("./AbstractEventsRepository"));
|
|
20
|
+
class TskEventsRepository extends AbstractEventsRepository_1.default {
|
|
21
21
|
constructor() {
|
|
22
22
|
super("TskEventsRepository", {
|
|
23
23
|
outputSequelizeAttributes: TskEvent_1.default.attributeModel,
|
|
@@ -25,6 +25,8 @@ class TskEventsRepository extends integration_engine_1.PostgresModel {
|
|
|
25
25
|
pgSchema: PrahaZasekanaInfo_1.default.SCHEMA,
|
|
26
26
|
savingType: "insertOnly",
|
|
27
27
|
}, new golemio_validator_1.JSONSchemaValidator("TskEventsRepository", TskEvent_1.default.arrayJsonSchema, true));
|
|
28
|
+
this.materializedViewNameLatest = "tsk_std_last_30min_snapshots_latest";
|
|
29
|
+
this.materializedViewNameHistoric = "tsk_std_last_30min_snapshots_history";
|
|
28
30
|
this.saveData = (data, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
|
|
29
31
|
yield this["sequelizeModel"].bulkCreate(data, {
|
|
30
32
|
ignoreDuplicates: !updateOnDuplicate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TskEventsRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/dataAccess/TskEventsRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8FAAuE;AACvE,oHAAwE;AACxE,kGAAsD;AACtD,
|
|
1
|
+
{"version":3,"file":"TskEventsRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/dataAccess/TskEventsRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8FAAuE;AACvE,oHAAwE;AACxE,kGAAsD;AACtD,mFAAkF;AAClF,0FAA0D;AAE1D,MAAqB,mBAAoB,SAAQ,kCAA0B;IAIvE;QACI,KAAK,CACD,qBAAqB,EACrB;YACI,yBAAyB,EAAE,kBAAQ,CAAC,cAAc;YAClD,WAAW,EAAE,2BAAiB,CAAC,WAAW,CAAC,yCAAmB,CAAC,IAAI,CAAC;YACpE,QAAQ,EAAE,2BAAiB,CAAC,MAAM;YAClC,UAAU,EAAE,YAAY;SAC3B,EACD,IAAI,uCAAmB,CAAC,qBAAqB,EAAE,kBAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CACjF,CAAC;QAbI,+BAA0B,GAAG,qCAAqC,CAAC;QACnE,iCAA4B,GAAG,sCAAsC,CAAC;QAezE,aAAQ,GAAG,CAAO,IAAgB,EAAE,iBAA0B,EAAE,EAAE;YACrE,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAW,IAAI,EAAE;gBACpD,gBAAgB,EAAE,CAAC,iBAAiB;gBACpC,SAAS,EAAE,KAAK;gBAChB,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;aAC3E,CAAC,CAAC;QACP,CAAC,CAAA,CAAC;IARF,CAAC;CASJ;AAxBD,sCAwBC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import WazeJams from "../../schema-definitions/sequelize-models/WazeJams";
|
|
2
|
-
import
|
|
3
|
-
export default class WazeJamsRepository extends
|
|
2
|
+
import EventsRepository from "./AbstractEventsRepository";
|
|
3
|
+
export default class WazeJamsRepository extends EventsRepository<WazeJams> {
|
|
4
|
+
protected materializedViewNameLatest: string;
|
|
5
|
+
protected materializedViewNameHistoric: string;
|
|
4
6
|
constructor();
|
|
5
7
|
saveData: (data: WazeJams[], updateOnDuplicate: boolean) => Promise<void>;
|
|
6
8
|
}
|
|
@@ -15,9 +15,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
const AggregationTaskType_1 = require("../../schema-definitions/helpers/AggregationTaskType");
|
|
16
16
|
const PrahaZasekanaInfo_1 = __importDefault(require("../../schema-definitions/sequelize-models/PrahaZasekanaInfo"));
|
|
17
17
|
const WazeJams_1 = __importDefault(require("../../schema-definitions/sequelize-models/WazeJams"));
|
|
18
|
-
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
|
|
19
18
|
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
20
|
-
|
|
19
|
+
const AbstractEventsRepository_1 = __importDefault(require("./AbstractEventsRepository"));
|
|
20
|
+
class WazeJamsRepository extends AbstractEventsRepository_1.default {
|
|
21
21
|
constructor() {
|
|
22
22
|
super("WazeJams", {
|
|
23
23
|
outputSequelizeAttributes: WazeJams_1.default.attributeModel,
|
|
@@ -25,6 +25,8 @@ class WazeJamsRepository extends integration_engine_1.PostgresModel {
|
|
|
25
25
|
pgSchema: PrahaZasekanaInfo_1.default.SCHEMA,
|
|
26
26
|
savingType: "insertOnly",
|
|
27
27
|
}, new golemio_validator_1.JSONSchemaValidator("WazeJams", WazeJams_1.default.arrayJsonSchema, true));
|
|
28
|
+
this.materializedViewNameLatest = "waze_jams_snapshots_latest";
|
|
29
|
+
this.materializedViewNameHistoric = "waze_jams_snapshots_history";
|
|
28
30
|
this.saveData = (data, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
|
|
29
31
|
yield this["sequelizeModel"].bulkCreate(data, {
|
|
30
32
|
ignoreDuplicates: !updateOnDuplicate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WazeJamsRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/dataAccess/WazeJamsRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8FAAuE;AACvE,oHAAwE;AACxE,kGAAsD;AACtD,
|
|
1
|
+
{"version":3,"file":"WazeJamsRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/dataAccess/WazeJamsRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8FAAuE;AACvE,oHAAwE;AACxE,kGAAsD;AACtD,mFAAkF;AAClF,0FAA0D;AAE1D,MAAqB,kBAAmB,SAAQ,kCAA0B;IAItE;QACI,KAAK,CACD,UAAU,EACV;YACI,yBAAyB,EAAE,kBAAQ,CAAC,cAAc;YAClD,WAAW,EAAE,2BAAiB,CAAC,WAAW,CAAC,yCAAmB,CAAC,KAAK,CAAC;YACrE,QAAQ,EAAE,2BAAiB,CAAC,MAAM;YAClC,UAAU,EAAE,YAAY;SAC3B,EACD,IAAI,uCAAmB,CAAC,UAAU,EAAE,kBAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CACtE,CAAC;QAbI,+BAA0B,GAAG,4BAA4B,CAAC;QAC1D,iCAA4B,GAAG,6BAA6B,CAAC;QAehE,aAAQ,GAAG,CAAO,IAAgB,EAAE,iBAA0B,EAAE,EAAE;YACrE,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAW,IAAI,EAAE;gBACpD,gBAAgB,EAAE,CAAC,iBAAiB;gBACpC,SAAS,EAAE,KAAK;gBAChB,iBAAiB,EAAE,iBAAiB;oBAChC,CAAC,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,CAAC;oBAClF,CAAC,CAAC,SAAS;aAClB,CAAC,CAAC;QACP,CAAC,CAAA,CAAC;IAVF,CAAC;CAWJ;AA1BD,qCA0BC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import WazeReconstructions from "../../schema-definitions/sequelize-models/WazeReconstructions";
|
|
2
|
-
import
|
|
3
|
-
export default class WazeReconstructionsRepository extends
|
|
2
|
+
import EventsRepository from "./AbstractEventsRepository";
|
|
3
|
+
export default class WazeReconstructionsRepository extends EventsRepository<WazeReconstructions> {
|
|
4
|
+
protected materializedViewNameLatest: string;
|
|
5
|
+
protected materializedViewNameHistoric: string;
|
|
4
6
|
constructor();
|
|
5
7
|
saveData: (data: WazeReconstructions[], updateOnDuplicate: boolean) => Promise<void>;
|
|
6
8
|
}
|
|
@@ -15,9 +15,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
const AggregationTaskType_1 = require("../../schema-definitions/helpers/AggregationTaskType");
|
|
16
16
|
const PrahaZasekanaInfo_1 = __importDefault(require("../../schema-definitions/sequelize-models/PrahaZasekanaInfo"));
|
|
17
17
|
const WazeReconstructions_1 = __importDefault(require("../../schema-definitions/sequelize-models/WazeReconstructions"));
|
|
18
|
-
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
|
|
19
18
|
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
20
|
-
|
|
19
|
+
const AbstractEventsRepository_1 = __importDefault(require("./AbstractEventsRepository"));
|
|
20
|
+
class WazeReconstructionsRepository extends AbstractEventsRepository_1.default {
|
|
21
21
|
constructor() {
|
|
22
22
|
super("WazeReconstructions", {
|
|
23
23
|
outputSequelizeAttributes: WazeReconstructions_1.default.attributeModel,
|
|
@@ -25,6 +25,8 @@ class WazeReconstructionsRepository extends integration_engine_1.PostgresModel {
|
|
|
25
25
|
pgSchema: PrahaZasekanaInfo_1.default.SCHEMA,
|
|
26
26
|
savingType: "insertOnly",
|
|
27
27
|
}, new golemio_validator_1.JSONSchemaValidator("WazeReconstructions", WazeReconstructions_1.default.arrayJsonSchema, true));
|
|
28
|
+
this.materializedViewNameLatest = "waze_reconstructions_snapshots_latest";
|
|
29
|
+
this.materializedViewNameHistoric = "waze_reconstructions_snapshots_history";
|
|
28
30
|
this.saveData = (data, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
|
|
29
31
|
yield this["sequelizeModel"].bulkCreate(data, {
|
|
30
32
|
ignoreDuplicates: !updateOnDuplicate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WazeReconstructionsRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/dataAccess/WazeReconstructionsRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8FAAuE;AACvE,oHAAwE;AACxE,wHAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"WazeReconstructionsRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/dataAccess/WazeReconstructionsRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8FAAuE;AACvE,oHAAwE;AACxE,wHAA4E;AAC5E,mFAAkF;AAClF,0FAA0D;AAE1D,MAAqB,6BAA8B,SAAQ,kCAAqC;IAI5F;QACI,KAAK,CACD,qBAAqB,EACrB;YACI,yBAAyB,EAAE,6BAAmB,CAAC,cAAc;YAC7D,WAAW,EAAE,2BAAiB,CAAC,WAAW,CAAC,yCAAmB,CAAC,KAAK,CAAC;YACrE,QAAQ,EAAE,2BAAiB,CAAC,MAAM;YAClC,UAAU,EAAE,YAAY;SAC3B,EACD,IAAI,uCAAmB,CAAC,qBAAqB,EAAE,6BAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,CAC5F,CAAC;QAbI,+BAA0B,GAAG,uCAAuC,CAAC;QACrE,iCAA4B,GAAG,wCAAwC,CAAC;QAe3E,aAAQ,GAAG,CAAO,IAA2B,EAAE,iBAA0B,EAAE,EAAE;YAChF,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAsB,IAAI,EAAE;gBAC/D,gBAAgB,EAAE,CAAC,iBAAiB;gBACpC,SAAS,EAAE,KAAK;gBAChB,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;aACrH,CAAC,CAAC;QACP,CAAC,CAAA,CAAC;IARF,CAAC;CASJ;AAxBD,gDAwBC"}
|
|
@@ -19,6 +19,16 @@ const queueDefinitions = [
|
|
|
19
19
|
worker: AggregationWorker_1.AggregationWorker,
|
|
20
20
|
workerMethod: AggregationWorker_1.AggregationWorker.aggregationMethodName,
|
|
21
21
|
},
|
|
22
|
+
{
|
|
23
|
+
name: AggregationWorker_1.AggregationWorker.refreshHistoricViewsMethodName,
|
|
24
|
+
options: {
|
|
25
|
+
deadLetterExchange: config_1.config.RABBIT_EXCHANGE_NAME,
|
|
26
|
+
deadLetterRoutingKey: "dead",
|
|
27
|
+
messageTtl: 23 * 60 * 60 * 1000, // 23 hours
|
|
28
|
+
},
|
|
29
|
+
worker: AggregationWorker_1.AggregationWorker,
|
|
30
|
+
workerMethod: AggregationWorker_1.AggregationWorker.refreshHistoricViewsMethodName,
|
|
31
|
+
},
|
|
22
32
|
],
|
|
23
33
|
},
|
|
24
34
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queueDefinitions.js","sourceRoot":"","sources":["../../src/integration-engine/queueDefinitions.ts"],"names":[],"mappings":";;;AAAA,yEAAsE;AAEtE,2DAAwD;AAExD,MAAM,gBAAgB,GAAuB;IACzC;QACI,IAAI,EAAE,qCAAiB,CAAC,IAAI;QAC5B,WAAW,EAAE,qCAAiB,CAAC,WAAW;QAC1C,MAAM,EAAE;YACJ;gBACI,IAAI,EAAE,qCAAiB,CAAC,qBAAqB;gBAC7C,OAAO,EAAE;oBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;oBAC/C,oBAAoB,EAAE,MAAM;oBAC5B,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;oBAC/B,WAAW,EAAE,CAAC;iBACjB;gBACD,MAAM,EAAE,qCAAiB;gBACzB,YAAY,EAAE,qCAAiB,CAAC,qBAAqB;aACxD;SACJ;KACJ;CACJ,CAAC;AAEO,4CAAgB"}
|
|
1
|
+
{"version":3,"file":"queueDefinitions.js","sourceRoot":"","sources":["../../src/integration-engine/queueDefinitions.ts"],"names":[],"mappings":";;;AAAA,yEAAsE;AAEtE,2DAAwD;AAExD,MAAM,gBAAgB,GAAuB;IACzC;QACI,IAAI,EAAE,qCAAiB,CAAC,IAAI;QAC5B,WAAW,EAAE,qCAAiB,CAAC,WAAW;QAC1C,MAAM,EAAE;YACJ;gBACI,IAAI,EAAE,qCAAiB,CAAC,qBAAqB;gBAC7C,OAAO,EAAE;oBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;oBAC/C,oBAAoB,EAAE,MAAM;oBAC5B,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;oBAC/B,WAAW,EAAE,CAAC;iBACjB;gBACD,MAAM,EAAE,qCAAiB;gBACzB,YAAY,EAAE,qCAAiB,CAAC,qBAAqB;aACxD;YACD;gBACI,IAAI,EAAE,qCAAiB,CAAC,8BAA8B;gBACtD,OAAO,EAAE;oBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;oBAC/C,oBAAoB,EAAE,MAAM;oBAC5B,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW;iBAC/C;gBACD,MAAM,EAAE,qCAAiB;gBACzB,YAAY,EAAE,qCAAiB,CAAC,8BAA8B;aACjE;SACJ;KACJ;CACJ,CAAC;AAEO,4CAAgB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AggregationTaskType } from "../../schema-definitions/helpers/AggregationTaskType";
|
|
2
|
-
import
|
|
2
|
+
import IAbstractAggregator from "./aggregators/interfaces/IAbstractAggregator";
|
|
3
3
|
export default class AggregationFactory {
|
|
4
4
|
private products;
|
|
5
5
|
constructor();
|
|
6
|
-
get(type: AggregationTaskType):
|
|
6
|
+
get(type: AggregationTaskType): IAbstractAggregator;
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AggregationFactory.js","sourceRoot":"","sources":["../../../src/integration-engine/service/AggregationFactory.ts"],"names":[],"mappings":";;;;;AAAA,8FAAuE;AACvE,4CAA8C;
|
|
1
|
+
{"version":3,"file":"AggregationFactory.js","sourceRoot":"","sources":["../../../src/integration-engine/service/AggregationFactory.ts"],"names":[],"mappings":";;;;;AAAA,8FAAuE;AACvE,4CAA8C;AAC9C,4FAAoE;AAEpE,8FAAsE;AACtE,4FAAoE;AACpE,0FAAkE;AAClE,gHAAwF;AAExF,MAAqB,kBAAkB;IAGnC;QACI,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAA2C;YAC9D,CAAC,yCAAmB,CAAC,GAAG,EAAE,IAAI,6BAAmB,EAAE,CAAC;YACpD,CAAC,yCAAmB,CAAC,IAAI,EAAE,IAAI,8BAAoB,EAAE,CAAC;YACtD,CAAC,yCAAmB,CAAC,IAAI,EAAE,IAAI,6BAAmB,EAAE,CAAC;YACrD,CAAC,yCAAmB,CAAC,KAAK,EAAE,IAAI,4BAAkB,EAAE,CAAC;YACrD,CAAC,yCAAmB,CAAC,KAAK,EAAE,IAAI,uCAA6B,EAAE,CAAC;SACnE,CAAC,CAAC;IACP,CAAC;IAEM,GAAG,CAAC,IAAyB;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACxB,MAAM,IAAI,oBAAW,CAAC,kCAAkC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjG,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;IACpC,CAAC;CACJ;AAnBD,qCAmBC"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
import AbstractEventsRepository from "../../dataAccess/AbstractEventsRepository";
|
|
1
2
|
import { DurationLike } from "@golemio/core/dist/shared/luxon";
|
|
2
|
-
|
|
3
|
+
import IAbstractAggregator from "./interfaces/IAbstractAggregator";
|
|
4
|
+
export default abstract class AbstractAggregator<T> implements IAbstractAggregator {
|
|
3
5
|
protected maxAggregationDuration: DurationLike;
|
|
6
|
+
protected abstract repository: AbstractEventsRepository<T>;
|
|
4
7
|
aggregateAndSave: (from: Date, to: Date, updateOnDuplicate: boolean) => Promise<void>;
|
|
5
8
|
getMaxDuration(): DurationLike;
|
|
6
|
-
|
|
7
|
-
protected abstract
|
|
9
|
+
refreshHistoricMaterialView: () => Promise<void>;
|
|
10
|
+
protected abstract aggregate(from: Date, to: Date): Promise<T[]>;
|
|
11
|
+
protected save: (data: T[], updateOnDuplicate: boolean) => Promise<void>;
|
|
8
12
|
}
|
|
@@ -18,6 +18,14 @@ class AbstractAggregator {
|
|
|
18
18
|
helpers_1.log.debug(`Saving aggregate ${this.constructor.name} from: ${from.toISOString()} to: ${to.toISOString()} count: ${aggregationResult.length}`);
|
|
19
19
|
yield this.save(aggregationResult, updateOnDuplicate);
|
|
20
20
|
});
|
|
21
|
+
this.refreshHistoricMaterialView = () => __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
yield this.repository.refreshHistoricMaterializedView();
|
|
23
|
+
});
|
|
24
|
+
this.save = (data, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
yield this.repository.validate(data);
|
|
26
|
+
yield this.repository.saveData(data, updateOnDuplicate);
|
|
27
|
+
yield this.repository.refreshLatestMaterializedView();
|
|
28
|
+
});
|
|
21
29
|
}
|
|
22
30
|
getMaxDuration() {
|
|
23
31
|
return this.maxAggregationDuration;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractAggregator.js","sourceRoot":"","sources":["../../../../src/integration-engine/service/aggregators/AbstractAggregator.ts"],"names":[],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"AbstractAggregator.js","sourceRoot":"","sources":["../../../../src/integration-engine/service/aggregators/AbstractAggregator.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,2EAAoE;AAIpE,MAA8B,kBAAkB;IAAhD;QACc,2BAAsB,GAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAGvD,qBAAgB,GAAG,CAAO,IAAU,EAAE,EAAQ,EAAE,iBAA0B,EAAiB,EAAE;YAChG,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzD,aAAG,CAAC,KAAK,CACL,oBAAoB,IAAI,CAAC,WAAW,CAAC,IAAI,UAAU,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,WACzF,iBAAiB,CAAC,MACtB,EAAE,CACL,CAAC;YACF,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QAC1D,CAAC,CAAA,CAAC;QAMK,gCAA2B,GAAG,GAAS,EAAE;YAC5C,MAAM,IAAI,CAAC,UAAU,CAAC,+BAA+B,EAAE,CAAC;QAC5D,CAAC,CAAA,CAAC;QAIQ,SAAI,GAAG,CAAO,IAAS,EAAE,iBAA0B,EAAiB,EAAE;YAC5E,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;YACxD,MAAM,IAAI,CAAC,UAAU,CAAC,6BAA6B,EAAE,CAAC;QAC1D,CAAC,CAAA,CAAC;IACN,CAAC;IAfU,cAAc;QACjB,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACvC,CAAC;CAaJ;AA7BD,qCA6BC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import FcdEventsRepository from "../../dataAccess/FcdEventsRepository";
|
|
1
2
|
import FcdEvent from "../../../schema-definitions/sequelize-models/FcdEvents";
|
|
2
3
|
import AbstractAggregator from "./AbstractAggregator";
|
|
3
|
-
export default class FcdEventsAggregator extends AbstractAggregator {
|
|
4
|
+
export default class FcdEventsAggregator extends AbstractAggregator<FcdEvent> {
|
|
4
5
|
protected maxAggregationDuration: {
|
|
5
6
|
minutes: number;
|
|
6
7
|
};
|
|
7
|
-
|
|
8
|
+
protected repository: FcdEventsRepository;
|
|
8
9
|
constructor();
|
|
9
10
|
protected aggregate: (from: Date, to: Date) => Promise<FcdEvent[]>;
|
|
10
|
-
protected save: (data: FcdEvent[], updateOnDuplicate: boolean) => Promise<void>;
|
|
11
11
|
protected mapToDto(data: any[]): FcdEvent[];
|
|
12
12
|
}
|
|
@@ -28,10 +28,6 @@ class FcdEventsAggregator extends AbstractAggregator_1.default {
|
|
|
28
28
|
});
|
|
29
29
|
return this.mapToDto(result);
|
|
30
30
|
});
|
|
31
|
-
this.save = (data, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
|
|
32
|
-
yield this.repository.validate(data);
|
|
33
|
-
yield this.repository.saveData(data, updateOnDuplicate);
|
|
34
|
-
});
|
|
35
31
|
this.repository = new FcdEventsRepository_1.default();
|
|
36
32
|
}
|
|
37
33
|
mapToDto(data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FcdEventsAggregator.js","sourceRoot":"","sources":["../../../../src/integration-engine/service/aggregators/FcdEventsAggregator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,mGAAyE;AACzE,+FAAqE;AACrE,iGAAuE;AAGvE,2DAA2D;AAC3D,8EAAsD;AAEtD,MAAqB,mBAAoB,SAAQ,
|
|
1
|
+
{"version":3,"file":"FcdEventsAggregator.js","sourceRoot":"","sources":["../../../../src/integration-engine/service/aggregators/FcdEventsAggregator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,mGAAyE;AACzE,+FAAqE;AACrE,iGAAuE;AAGvE,2DAA2D;AAC3D,8EAAsD;AAEtD,MAAqB,mBAAoB,SAAQ,4BAA4B;IAIzE;QACI,KAAK,EAAE,CAAC;QAJO,2BAAsB,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAQlD,cAAS,GAAG,CAAO,IAAU,EAAE,EAAQ,EAAuB,EAAE;YACtE,MAAM,MAAM,GAAG,MAAM,+BAAqB,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAY,yCAAmB,CAAC,GAAG,EAAE;gBAC1G,IAAI,EAAE,gBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;gBACvC,EAAE,EAAE,gBAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;aACtC,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAA,CAAC;QAVE,IAAI,CAAC,UAAU,GAAG,IAAI,6BAAmB,EAAE,CAAC;IAChD,CAAC;IAWS,QAAQ,CAAC,IAAW;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACxB,OAAO;gBACH,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;gBACpD,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;gBACjD,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,UAAU,EAAE,OAAO,CAAC,UAAU;aACrB,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA7BD,sCA6BC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import NdicEventsRepository from "../../dataAccess/NdicEventRepository";
|
|
1
2
|
import NdicEvent from "../../../schema-definitions/sequelize-models/NdicEvent";
|
|
2
3
|
import { DurationLike } from "@golemio/core/dist/shared/luxon";
|
|
3
4
|
import AbstractAggregator from "./AbstractAggregator";
|
|
4
|
-
export default class NdicEventsAggregator extends AbstractAggregator {
|
|
5
|
+
export default class NdicEventsAggregator extends AbstractAggregator<NdicEvent> {
|
|
5
6
|
protected maxAggregationDuration: DurationLike;
|
|
6
|
-
|
|
7
|
+
protected repository: NdicEventsRepository;
|
|
7
8
|
constructor();
|
|
8
9
|
protected aggregate: (from: Date, to: Date) => Promise<NdicEvent[]>;
|
|
9
|
-
protected save: (data: NdicEvent[], updateOnDuplicate: boolean) => Promise<void>;
|
|
10
10
|
protected mapToDto(data: any[]): NdicEvent[];
|
|
11
11
|
}
|
|
@@ -28,10 +28,6 @@ class NdicEventsAggregator extends AbstractAggregator_1.default {
|
|
|
28
28
|
});
|
|
29
29
|
return this.mapToDto(result);
|
|
30
30
|
});
|
|
31
|
-
this.save = (data, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
|
|
32
|
-
yield this.repository.validate(data);
|
|
33
|
-
yield this.repository.saveData(data, updateOnDuplicate);
|
|
34
|
-
});
|
|
35
31
|
this.repository = new NdicEventRepository_1.default();
|
|
36
32
|
}
|
|
37
33
|
mapToDto(data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NdicEventsAggregator.js","sourceRoot":"","sources":["../../../../src/integration-engine/service/aggregators/NdicEventsAggregator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,mGAAyE;AACzE,+FAAsE;AACtE,iGAAuE;AAGvE,2DAAyE;AACzE,8EAAsD;AAEtD,MAAqB,oBAAqB,SAAQ,
|
|
1
|
+
{"version":3,"file":"NdicEventsAggregator.js","sourceRoot":"","sources":["../../../../src/integration-engine/service/aggregators/NdicEventsAggregator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,mGAAyE;AACzE,+FAAsE;AACtE,iGAAuE;AAGvE,2DAAyE;AACzE,8EAAsD;AAEtD,MAAqB,oBAAqB,SAAQ,4BAA6B;IAI3E;QACI,KAAK,EAAE,CAAC;QAJO,2BAAsB,GAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAQ7D,cAAS,GAAG,CAAO,IAAU,EAAE,EAAQ,EAAwB,EAAE;YACvE,MAAM,MAAM,GAAG,MAAM,+BAAqB,CAAC,WAAW,EAAE,CAAC,gBAAgB,CACrE,yCAAmB,CAAC,IAAI,EACxB,SAAS,EACT;gBACI,IAAI,EAAE,gBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;gBACvC,EAAE,EAAE,gBAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;aACtC,CACJ,CAAC;YAEF,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAA,CAAC;QAdE,IAAI,CAAC,UAAU,GAAG,IAAI,6BAAoB,EAAE,CAAC;IACjD,CAAC;IAeS,QAAQ,CAAC,IAAW;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACxB,OAAO;gBACH,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;gBACpD,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;gBACtD,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;gBACjD,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;gBACpD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,UAAU,EAAE,OAAO,CAAC,UAAU;aACpB,CAAC;QACnB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAxCD,uCAwCC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import TskEventsRepository from "../../dataAccess/TskEventsRepository";
|
|
1
2
|
import TskEvent from "../../../schema-definitions/sequelize-models/TskEvent";
|
|
2
3
|
import { DurationLike } from "@golemio/core/dist/shared/luxon";
|
|
3
4
|
import AbstractAggregator from "./AbstractAggregator";
|
|
4
|
-
export default class TskEventsAggregator extends AbstractAggregator {
|
|
5
|
+
export default class TskEventsAggregator extends AbstractAggregator<TskEvent> {
|
|
5
6
|
protected maxAggregationDuration: DurationLike;
|
|
6
|
-
|
|
7
|
+
protected repository: TskEventsRepository;
|
|
7
8
|
constructor();
|
|
8
9
|
protected aggregate: (from: Date, to: Date) => Promise<TskEvent[]>;
|
|
9
|
-
protected save: (data: TskEvent[], updateOnDuplicate: boolean) => Promise<void>;
|
|
10
10
|
protected mapToDto(data: any[]): TskEvent[];
|
|
11
11
|
}
|
|
@@ -28,10 +28,6 @@ class TskEventsAggregator extends AbstractAggregator_1.default {
|
|
|
28
28
|
});
|
|
29
29
|
return this.mapToDto(result);
|
|
30
30
|
});
|
|
31
|
-
this.save = (data, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
|
|
32
|
-
yield this.repository.validate(data);
|
|
33
|
-
yield this.repository.saveData(data, updateOnDuplicate);
|
|
34
|
-
});
|
|
35
31
|
this.repository = new TskEventsRepository_1.default();
|
|
36
32
|
}
|
|
37
33
|
mapToDto(data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TskEventsAggregator.js","sourceRoot":"","sources":["../../../../src/integration-engine/service/aggregators/TskEventsAggregator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,mGAAyE;AACzE,+FAAqE;AACrE,iGAAuE;AAGvE,2DAAyE;AACzE,8EAAsD;AAEtD,MAAqB,mBAAoB,SAAQ,
|
|
1
|
+
{"version":3,"file":"TskEventsAggregator.js","sourceRoot":"","sources":["../../../../src/integration-engine/service/aggregators/TskEventsAggregator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,mGAAyE;AACzE,+FAAqE;AACrE,iGAAuE;AAGvE,2DAAyE;AACzE,8EAAsD;AAEtD,MAAqB,mBAAoB,SAAQ,4BAA4B;IAIzE;QACI,KAAK,EAAE,CAAC;QAJO,2BAAsB,GAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAQ7D,cAAS,GAAG,CAAO,IAAU,EAAE,EAAQ,EAAuB,EAAE;YACtE,MAAM,MAAM,GAAG,MAAM,+BAAqB,CAAC,WAAW,EAAE,CAAC,gBAAgB,CACrE,yCAAmB,CAAC,IAAI,EACxB,SAAS,EACT;gBACI,IAAI,EAAE,gBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;gBACvC,EAAE,EAAE,gBAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;aACtC,CACJ,CAAC;YAEF,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAA,CAAC;QAdE,IAAI,CAAC,UAAU,GAAG,IAAI,6BAAmB,EAAE,CAAC;IAChD,CAAC;IAeS,QAAQ,CAAC,IAAW;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACxB,OAAO;gBACH,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;gBACjD,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;gBACvF,UAAU,EAAE,OAAO,CAAC,UAAU;aACrB,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAhCD,sCAgCC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import WazeJamsRepository from "../../dataAccess/WazeJamsRepository";
|
|
1
2
|
import WazeJams from "../../../schema-definitions/sequelize-models/WazeJams";
|
|
2
3
|
import AbstractAggregator from "./AbstractAggregator";
|
|
3
|
-
export default class WazeAggregator extends AbstractAggregator {
|
|
4
|
+
export default class WazeAggregator extends AbstractAggregator<WazeJams> {
|
|
4
5
|
protected sqlQueryScriptName: string;
|
|
5
|
-
|
|
6
|
+
protected repository: WazeJamsRepository;
|
|
6
7
|
constructor();
|
|
7
8
|
protected aggregate: (from: Date, to: Date) => Promise<WazeJams[]>;
|
|
8
|
-
protected save: (data: WazeJams[], updateOnDuplicate: boolean) => Promise<void>;
|
|
9
9
|
protected mapToDto(data: any[]): WazeJams[];
|
|
10
10
|
}
|
|
@@ -27,10 +27,6 @@ class WazeAggregator extends AbstractAggregator_1.default {
|
|
|
27
27
|
});
|
|
28
28
|
return this.mapToDto(result);
|
|
29
29
|
});
|
|
30
|
-
this.save = (data, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
|
|
31
|
-
yield this.repository.validate(data);
|
|
32
|
-
yield this.repository.saveData(data, updateOnDuplicate);
|
|
33
|
-
});
|
|
34
30
|
this.repository = new WazeJamsRepository_1.default();
|
|
35
31
|
}
|
|
36
32
|
mapToDto(data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WazeJamsAggregator.js","sourceRoot":"","sources":["../../../../src/integration-engine/service/aggregators/WazeJamsAggregator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,mGAAyE;AACzE,6FAAmE;AACnE,iGAAuE;AAGvE,8EAAsD;AAEtD,MAAqB,cAAe,SAAQ,
|
|
1
|
+
{"version":3,"file":"WazeJamsAggregator.js","sourceRoot":"","sources":["../../../../src/integration-engine/service/aggregators/WazeJamsAggregator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,mGAAyE;AACzE,6FAAmE;AACnE,iGAAuE;AAGvE,8EAAsD;AAEtD,MAAqB,cAAe,SAAQ,4BAA4B;IAIpE;QACI,KAAK,EAAE,CAAC;QAJF,uBAAkB,GAAW,yBAAyB,CAAC;QAQvD,cAAS,GAAG,CAAO,IAAU,EAAE,EAAQ,EAAuB,EAAE;YACtE,MAAM,MAAM,GAAG,MAAM,+BAAqB,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAY,yCAAmB,CAAC,KAAK,EAAE;gBAC5G,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;gBACpB,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE;aACnB,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAA,CAAC;QAVE,IAAI,CAAC,UAAU,GAAG,IAAI,4BAAkB,EAAE,CAAC;IAC/C,CAAC;IAWS,QAAQ,CAAC,IAAW;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACxB,OAAO;gBACH,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;gBACjD,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,UAAU,EAAE,OAAO,CAAC,UAAU;aACrB,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA9BD,iCA8BC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import WazeReconstructionsRepository from "../../dataAccess/WazeReconstructionsRepository";
|
|
1
2
|
import WazeReconstructions from "../../../schema-definitions/sequelize-models/WazeReconstructions";
|
|
2
3
|
import AbstractAggregator from "./AbstractAggregator";
|
|
3
|
-
export default class WazeReconstructionsAggregator extends AbstractAggregator {
|
|
4
|
+
export default class WazeReconstructionsAggregator extends AbstractAggregator<WazeReconstructions> {
|
|
4
5
|
protected sqlQueryScriptName: string;
|
|
5
|
-
|
|
6
|
+
protected repository: WazeReconstructionsRepository;
|
|
6
7
|
constructor();
|
|
7
8
|
protected aggregate: (from: Date, to: Date) => Promise<WazeReconstructions[]>;
|
|
8
|
-
protected save: (data: WazeReconstructions[], updateOnDuplicate: boolean) => Promise<void>;
|
|
9
9
|
protected mapToDto(data: any[]): WazeReconstructions[];
|
|
10
10
|
}
|
|
@@ -27,10 +27,6 @@ class WazeReconstructionsAggregator extends AbstractAggregator_1.default {
|
|
|
27
27
|
});
|
|
28
28
|
return this.mapToDto(result);
|
|
29
29
|
});
|
|
30
|
-
this.save = (data, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
|
|
31
|
-
yield this.repository.validate(data);
|
|
32
|
-
yield this.repository.saveData(data, updateOnDuplicate);
|
|
33
|
-
});
|
|
34
30
|
this.repository = new WazeReconstructionsRepository_1.default();
|
|
35
31
|
}
|
|
36
32
|
mapToDto(data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WazeReconstructionsAggregator.js","sourceRoot":"","sources":["../../../../src/integration-engine/service/aggregators/WazeReconstructionsAggregator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,mGAAyE;AACzE,mHAAyF;AACzF,iGAAuE;AAGvE,8EAAsD;AAEtD,MAAqB,6BAA8B,SAAQ,
|
|
1
|
+
{"version":3,"file":"WazeReconstructionsAggregator.js","sourceRoot":"","sources":["../../../../src/integration-engine/service/aggregators/WazeReconstructionsAggregator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,mGAAyE;AACzE,mHAAyF;AACzF,iGAAuE;AAGvE,8EAAsD;AAEtD,MAAqB,6BAA8B,SAAQ,4BAAuC;IAI9F;QACI,KAAK,EAAE,CAAC;QAJF,uBAAkB,GAAW,oCAAoC,CAAC;QAQlE,cAAS,GAAG,CAAO,IAAU,EAAE,EAAQ,EAAkC,EAAE;YACjF,MAAM,MAAM,GAAG,MAAM,+BAAqB,CAAC,WAAW,EAAE,CAAC,gBAAgB,CACrE,yCAAmB,CAAC,KAAK,EACzB;gBACI,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;gBACpB,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE;aACnB,CACJ,CAAC;YAEF,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAA,CAAC;QAbE,IAAI,CAAC,UAAU,GAAG,IAAI,uCAA6B,EAAE,CAAC;IAC1D,CAAC;IAcS,QAAQ,CAAC,IAAW;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACxB,OAAO;gBACH,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;gBACjD,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,UAAU,EAAE,OAAO,CAAC,UAAU;aACV,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAhCD,gDAgCC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DurationLike } from "@golemio/core/dist/shared/luxon";
|
|
2
|
+
export default interface IAbstractAggregator {
|
|
3
|
+
aggregateAndSave(from: Date, to: Date, updateOnDuplicate: boolean): Promise<void>;
|
|
4
|
+
getMaxDuration(): DurationLike;
|
|
5
|
+
refreshHistoricMaterialView(): Promise<void>;
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IAbstractAggregator.js","sourceRoot":"","sources":["../../../../../src/integration-engine/service/aggregators/interfaces/IAbstractAggregator.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golemio/rush-hour-aggregation",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1-dev.540776399",
|
|
4
4
|
"description": "Rush hour data agregation for Praha Zasekana project",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@commitlint/cli": "^11.0.0",
|
|
28
28
|
"@commitlint/config-conventional": "^11.0.0",
|
|
29
|
-
"@golemio/cli": "1.2.
|
|
30
|
-
"@golemio/core": "1.2.7
|
|
29
|
+
"@golemio/cli": "1.2.2",
|
|
30
|
+
"@golemio/core": "1.2.7",
|
|
31
31
|
"@golemio/eslint-config": "^1.1.0",
|
|
32
32
|
"@types/amqplib": "^0.5.17",
|
|
33
33
|
"@types/chai": "4.2.3",
|
|
@@ -69,14 +69,14 @@ from
|
|
|
69
69
|
to_timestamp(((date_part('epoch'::text, (timestamp with time zone :to)) / (60 * 30)::double precision)::bigint * 60 * 30)::double precision),
|
|
70
70
|
'00:30:00'::interval) gs_1(gs)
|
|
71
71
|
) gs
|
|
72
|
-
join ndic_traffic_info nti on
|
|
72
|
+
join ndic.ndic_traffic_info nti on
|
|
73
73
|
gs.gs >= nti.validity_overall_start_time
|
|
74
74
|
and gs.gs <= nti.validity_overall_end_time
|
|
75
75
|
and nti.situation_version::text = ((
|
|
76
76
|
select
|
|
77
77
|
max(nti2.situation_version::text) as max
|
|
78
78
|
from
|
|
79
|
-
ndic_traffic_info nti2
|
|
79
|
+
ndic.ndic_traffic_info nti2
|
|
80
80
|
where
|
|
81
81
|
nti2.situation_id::text = nti.situation_id::text
|
|
82
82
|
and nti2.situation_record_type::text = nti.situation_record_type::text
|