@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.
Files changed (53) hide show
  1. package/README.md +61 -21
  2. package/db/migrations/postgresql/20220505053742-addMaterialViews.js +53 -0
  3. package/db/migrations/postgresql/sqls/20220505053742-addMaterialViews-down.sql +10 -0
  4. package/db/migrations/postgresql/sqls/20220505053742-addMaterialViews-up.sql +565 -0
  5. package/dist/integration-engine/AggregationWorker.d.ts +2 -0
  6. package/dist/integration-engine/AggregationWorker.js +14 -2
  7. package/dist/integration-engine/AggregationWorker.js.map +1 -1
  8. package/dist/integration-engine/dataAccess/AbstractEventsRepository.d.ts +9 -0
  9. package/dist/integration-engine/dataAccess/AbstractEventsRepository.js +35 -0
  10. package/dist/integration-engine/dataAccess/AbstractEventsRepository.js.map +1 -0
  11. package/dist/integration-engine/dataAccess/FcdEventsRepository.d.ts +4 -2
  12. package/dist/integration-engine/dataAccess/FcdEventsRepository.js +4 -2
  13. package/dist/integration-engine/dataAccess/FcdEventsRepository.js.map +1 -1
  14. package/dist/integration-engine/dataAccess/NdicEventRepository.d.ts +4 -2
  15. package/dist/integration-engine/dataAccess/NdicEventRepository.js +4 -2
  16. package/dist/integration-engine/dataAccess/NdicEventRepository.js.map +1 -1
  17. package/dist/integration-engine/dataAccess/TskEventsRepository.d.ts +4 -2
  18. package/dist/integration-engine/dataAccess/TskEventsRepository.js +4 -2
  19. package/dist/integration-engine/dataAccess/TskEventsRepository.js.map +1 -1
  20. package/dist/integration-engine/dataAccess/WazeJamsRepository.d.ts +4 -2
  21. package/dist/integration-engine/dataAccess/WazeJamsRepository.js +4 -2
  22. package/dist/integration-engine/dataAccess/WazeJamsRepository.js.map +1 -1
  23. package/dist/integration-engine/dataAccess/WazeReconstructionsRepository.d.ts +4 -2
  24. package/dist/integration-engine/dataAccess/WazeReconstructionsRepository.js +4 -2
  25. package/dist/integration-engine/dataAccess/WazeReconstructionsRepository.js.map +1 -1
  26. package/dist/integration-engine/queueDefinitions.js +10 -0
  27. package/dist/integration-engine/queueDefinitions.js.map +1 -1
  28. package/dist/integration-engine/service/AggregationFactory.d.ts +2 -2
  29. package/dist/integration-engine/service/AggregationFactory.js.map +1 -1
  30. package/dist/integration-engine/service/aggregators/AbstractAggregator.d.ts +7 -3
  31. package/dist/integration-engine/service/aggregators/AbstractAggregator.js +8 -0
  32. package/dist/integration-engine/service/aggregators/AbstractAggregator.js.map +1 -1
  33. package/dist/integration-engine/service/aggregators/FcdEventsAggregator.d.ts +3 -3
  34. package/dist/integration-engine/service/aggregators/FcdEventsAggregator.js +0 -4
  35. package/dist/integration-engine/service/aggregators/FcdEventsAggregator.js.map +1 -1
  36. package/dist/integration-engine/service/aggregators/NdicEventsAggregator.d.ts +3 -3
  37. package/dist/integration-engine/service/aggregators/NdicEventsAggregator.js +0 -4
  38. package/dist/integration-engine/service/aggregators/NdicEventsAggregator.js.map +1 -1
  39. package/dist/integration-engine/service/aggregators/TskEventsAggregator.d.ts +3 -3
  40. package/dist/integration-engine/service/aggregators/TskEventsAggregator.js +0 -4
  41. package/dist/integration-engine/service/aggregators/TskEventsAggregator.js.map +1 -1
  42. package/dist/integration-engine/service/aggregators/WazeJamsAggregator.d.ts +3 -3
  43. package/dist/integration-engine/service/aggregators/WazeJamsAggregator.js +0 -4
  44. package/dist/integration-engine/service/aggregators/WazeJamsAggregator.js.map +1 -1
  45. package/dist/integration-engine/service/aggregators/WazeReconstructionsAggregator.d.ts +3 -3
  46. package/dist/integration-engine/service/aggregators/WazeReconstructionsAggregator.js +0 -4
  47. package/dist/integration-engine/service/aggregators/WazeReconstructionsAggregator.js.map +1 -1
  48. package/dist/integration-engine/service/aggregators/interfaces/IAbstractAggregator.d.ts +6 -0
  49. package/dist/integration-engine/service/aggregators/interfaces/IAbstractAggregator.js +3 -0
  50. package/dist/integration-engine/service/aggregators/interfaces/IAbstractAggregator.js.map +1 -0
  51. package/package.json +3 -3
  52. package/templates/sqlQueries/FcdEvents.sql +1 -1
  53. 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 { IModel, PostgresModel } from "@golemio/core/dist/integration-engine";
3
- export default class FcdEventsRepository extends PostgresModel implements IModel {
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
- class FcdEventsRepository extends integration_engine_1.PostgresModel {
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,8EAA8E;AAC9E,mFAAkF;AAElF,MAAqB,mBAAoB,SAAQ,kCAAa;IAC1D;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;QAGC,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;AArBD,sCAqBC"}
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 { IModel, PostgresModel } from "@golemio/core/dist/integration-engine";
3
- export default class NdicEventsRepository extends PostgresModel implements IModel {
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
- class NdicEventsRepository extends integration_engine_1.PostgresModel {
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,8EAA8E;AAC9E,mFAAkF;AAElF,MAAqB,oBAAqB,SAAQ,kCAAa;IAC3D;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;QAGC,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;AArBD,uCAqBC"}
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 { IModel, PostgresModel } from "@golemio/core/dist/integration-engine";
3
- export default class TskEventsRepository extends PostgresModel implements IModel {
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
- class TskEventsRepository extends integration_engine_1.PostgresModel {
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,8EAA8E;AAC9E,mFAAkF;AAElF,MAAqB,mBAAoB,SAAQ,kCAAa;IAC1D;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;QAGC,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;AArBD,sCAqBC"}
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 { IModel, PostgresModel } from "@golemio/core/dist/integration-engine";
3
- export default class WazeJamsRepository extends PostgresModel implements IModel {
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
- class WazeJamsRepository extends integration_engine_1.PostgresModel {
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,8EAA8E;AAC9E,mFAAkF;AAElF,MAAqB,kBAAmB,SAAQ,kCAAa;IACzD;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;QAGC,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;AAvBD,qCAuBC"}
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 { IModel, PostgresModel } from "@golemio/core/dist/integration-engine";
3
- export default class WazeReconstructionsRepository extends PostgresModel implements IModel {
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
- class WazeReconstructionsRepository extends integration_engine_1.PostgresModel {
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,8EAA8E;AAC9E,mFAAkF;AAElF,MAAqB,6BAA8B,SAAQ,kCAAa;IACpE;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;QAGC,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;AArBD,gDAqBC"}
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 AbstractAggregator from "./aggregators/AbstractAggregator";
2
+ import IAbstractAggregator from "./aggregators/interfaces/IAbstractAggregator";
3
3
  export default class AggregationFactory {
4
4
  private products;
5
5
  constructor();
6
- get(type: AggregationTaskType): AbstractAggregator;
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;AAE9C,4FAAoE;AACpE,8FAAsE;AACtE,4FAAoE;AACpE,0FAAkE;AAClE,gHAAwF;AAExF,MAAqB,kBAAkB;IAGnC;QACI,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAA0C;YAC7D,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
+ {"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
- export default abstract class AbstractAggregator {
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
- protected abstract aggregate(from: Date, to: Date): Promise<any[]>;
7
- protected abstract save(data: any[], updateOnDuplicate: boolean): Promise<void>;
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":";;;;;;;;;;;AAAA,2EAAoE;AAGpE,MAA8B,kBAAkB;IAAhD;QACc,2BAAsB,GAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAEvD,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;IAQN,CAAC;IANU,cAAc;QACjB,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACvC,CAAC;CAIJ;AAnBD,qCAmBC"}
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
- private repository;
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,4BAAkB;IAI/D;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;QAEQ,SAAI,GAAG,CAAO,IAAgB,EAAE,iBAA0B,EAAiB,EAAE;YACnF,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC5D,CAAC,CAAA,CAAC;QAfE,IAAI,CAAC,UAAU,GAAG,IAAI,6BAAmB,EAAE,CAAC;IAChD,CAAC;IAgBS,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;AAlCD,sCAkCC"}
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
- private repository;
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,4BAAkB;IAIhE;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;QAEQ,SAAI,GAAG,CAAO,IAAiB,EAAE,iBAA0B,EAAiB,EAAE;YACpF,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC5D,CAAC,CAAA,CAAC;QAnBE,IAAI,CAAC,UAAU,GAAG,IAAI,6BAAoB,EAAE,CAAC;IACjD,CAAC;IAoBS,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;AA7CD,uCA6CC"}
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
- private repository;
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,4BAAkB;IAI/D;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;QAEQ,SAAI,GAAG,CAAO,IAAgB,EAAE,iBAA0B,EAAiB,EAAE;YACnF,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC5D,CAAC,CAAA,CAAC;QAnBE,IAAI,CAAC,UAAU,GAAG,IAAI,6BAAmB,EAAE,CAAC;IAChD,CAAC;IAoBS,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;AArCD,sCAqCC"}
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
- private repository;
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,4BAAkB;IAI1D;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;QAEQ,SAAI,GAAG,CAAO,IAAgB,EAAE,iBAA0B,EAAiB,EAAE;YACnF,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC5D,CAAC,CAAA,CAAC;QAfE,IAAI,CAAC,UAAU,GAAG,IAAI,4BAAkB,EAAE,CAAC;IAC/C,CAAC;IAgBS,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;AAnCD,iCAmCC"}
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
- private repository;
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,4BAAkB;IAIzE;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;QAEQ,SAAI,GAAG,CAAO,IAA2B,EAAE,iBAA0B,EAAiB,EAAE;YAC9F,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC5D,CAAC,CAAA,CAAC;QAlBE,IAAI,CAAC,UAAU,GAAG,IAAI,uCAA6B,EAAE,CAAC;IAC1D,CAAC;IAmBS,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;AArCD,gDAqCC"}
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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IAbstractAggregator.js.map
@@ -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.0-dev.522143437",
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.1",
30
- "@golemio/core": "1.2.7-dev.520392044",
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",
@@ -12,7 +12,7 @@ select
12
12
  'free_flow_speed', a.free_flow_speed
13
13
  ) as properties
14
14
  from
15
- fcd_traff_params_part a
15
+ fcd.fcd_traff_params_part a
16
16
  join praha_zasekana.fcd_geos_90 g on
17
17
  a.source_identification::text = g.source_identification::text
18
18
  where
@@ -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