@golemio/rush-hour-aggregation 1.0.0-dev.520603218

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 (110) hide show
  1. package/LICENSE +11 -0
  2. package/README.md +47 -0
  3. package/db/migrations/postgresql/.config.json +3 -0
  4. package/db/migrations/postgresql/20220405102916-prahaZasekanaAggregation.js +53 -0
  5. package/db/migrations/postgresql/package.json +3 -0
  6. package/db/migrations/postgresql/sqls/20220405102916-prahaZasekanaAggregation-down.sql +6 -0
  7. package/db/migrations/postgresql/sqls/20220405102916-prahaZasekanaAggregation-up.sql +64 -0
  8. package/db/migrations/postgresql/sqls/package.json +3 -0
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.js +25 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/integration-engine/AggregationWorker.d.ts +16 -0
  13. package/dist/integration-engine/AggregationWorker.js +83 -0
  14. package/dist/integration-engine/AggregationWorker.js.map +1 -0
  15. package/dist/integration-engine/WorkerHelper.d.ts +9 -0
  16. package/dist/integration-engine/WorkerHelper.js +52 -0
  17. package/dist/integration-engine/WorkerHelper.js.map +1 -0
  18. package/dist/integration-engine/business/AggregationTask.d.ts +11 -0
  19. package/dist/integration-engine/business/AggregationTask.js +18 -0
  20. package/dist/integration-engine/business/AggregationTask.js.map +1 -0
  21. package/dist/integration-engine/business/interfaces/IAggregationTask.d.ts +6 -0
  22. package/dist/integration-engine/business/interfaces/IAggregationTask.js +3 -0
  23. package/dist/integration-engine/business/interfaces/IAggregationTask.js.map +1 -0
  24. package/dist/integration-engine/dataAccess/AggregationRepository.d.ts +13 -0
  25. package/dist/integration-engine/dataAccess/AggregationRepository.js +60 -0
  26. package/dist/integration-engine/dataAccess/AggregationRepository.js.map +1 -0
  27. package/dist/integration-engine/dataAccess/FcdEventsRepository.d.ts +6 -0
  28. package/dist/integration-engine/dataAccess/FcdEventsRepository.js +38 -0
  29. package/dist/integration-engine/dataAccess/FcdEventsRepository.js.map +1 -0
  30. package/dist/integration-engine/dataAccess/NdicEventRepository.d.ts +6 -0
  31. package/dist/integration-engine/dataAccess/NdicEventRepository.js +38 -0
  32. package/dist/integration-engine/dataAccess/NdicEventRepository.js.map +1 -0
  33. package/dist/integration-engine/dataAccess/TskEventsRepository.d.ts +6 -0
  34. package/dist/integration-engine/dataAccess/TskEventsRepository.js +38 -0
  35. package/dist/integration-engine/dataAccess/TskEventsRepository.js.map +1 -0
  36. package/dist/integration-engine/dataAccess/WazeJamsRepository.d.ts +6 -0
  37. package/dist/integration-engine/dataAccess/WazeJamsRepository.js +40 -0
  38. package/dist/integration-engine/dataAccess/WazeJamsRepository.js.map +1 -0
  39. package/dist/integration-engine/dataAccess/WazeReconstructionsRepository.d.ts +6 -0
  40. package/dist/integration-engine/dataAccess/WazeReconstructionsRepository.js +38 -0
  41. package/dist/integration-engine/dataAccess/WazeReconstructionsRepository.js.map +1 -0
  42. package/dist/integration-engine/index.d.ts +2 -0
  43. package/dist/integration-engine/index.js +16 -0
  44. package/dist/integration-engine/index.js.map +1 -0
  45. package/dist/integration-engine/queueDefinitions.d.ts +3 -0
  46. package/dist/integration-engine/queueDefinitions.js +25 -0
  47. package/dist/integration-engine/queueDefinitions.js.map +1 -0
  48. package/dist/integration-engine/service/AggregationFactory.d.ts +7 -0
  49. package/dist/integration-engine/service/AggregationFactory.js +30 -0
  50. package/dist/integration-engine/service/AggregationFactory.js.map +1 -0
  51. package/dist/integration-engine/service/aggregators/AbstractAggregator.d.ts +8 -0
  52. package/dist/integration-engine/service/aggregators/AbstractAggregator.js +27 -0
  53. package/dist/integration-engine/service/aggregators/AbstractAggregator.js.map +1 -0
  54. package/dist/integration-engine/service/aggregators/FcdEventsAggregator.d.ts +12 -0
  55. package/dist/integration-engine/service/aggregators/FcdEventsAggregator.js +50 -0
  56. package/dist/integration-engine/service/aggregators/FcdEventsAggregator.js.map +1 -0
  57. package/dist/integration-engine/service/aggregators/NdicEventsAggregator.d.ts +11 -0
  58. package/dist/integration-engine/service/aggregators/NdicEventsAggregator.js +57 -0
  59. package/dist/integration-engine/service/aggregators/NdicEventsAggregator.js.map +1 -0
  60. package/dist/integration-engine/service/aggregators/TskEventsAggregator.d.ts +11 -0
  61. package/dist/integration-engine/service/aggregators/TskEventsAggregator.js +49 -0
  62. package/dist/integration-engine/service/aggregators/TskEventsAggregator.js.map +1 -0
  63. package/dist/integration-engine/service/aggregators/WazeJamsAggregator.d.ts +10 -0
  64. package/dist/integration-engine/service/aggregators/WazeJamsAggregator.js +50 -0
  65. package/dist/integration-engine/service/aggregators/WazeJamsAggregator.js.map +1 -0
  66. package/dist/integration-engine/service/aggregators/WazeReconstructionsAggregator.d.ts +10 -0
  67. package/dist/integration-engine/service/aggregators/WazeReconstructionsAggregator.js +49 -0
  68. package/dist/integration-engine/service/aggregators/WazeReconstructionsAggregator.js.map +1 -0
  69. package/dist/schema-definitions/helpers/AggregationTaskType.d.ts +7 -0
  70. package/dist/schema-definitions/helpers/AggregationTaskType.js +12 -0
  71. package/dist/schema-definitions/helpers/AggregationTaskType.js.map +1 -0
  72. package/dist/schema-definitions/sequelize-models/FcdEvents.d.ts +14 -0
  73. package/dist/schema-definitions/sequelize-models/FcdEvents.js +33 -0
  74. package/dist/schema-definitions/sequelize-models/FcdEvents.js.map +1 -0
  75. package/dist/schema-definitions/sequelize-models/NdicEvent.d.ts +20 -0
  76. package/dist/schema-definitions/sequelize-models/NdicEvent.js +44 -0
  77. package/dist/schema-definitions/sequelize-models/NdicEvent.js.map +1 -0
  78. package/dist/schema-definitions/sequelize-models/PrahaZasekanaInfo.d.ts +10 -0
  79. package/dist/schema-definitions/sequelize-models/PrahaZasekanaInfo.js +15 -0
  80. package/dist/schema-definitions/sequelize-models/PrahaZasekanaInfo.js.map +1 -0
  81. package/dist/schema-definitions/sequelize-models/TskEvent.d.ts +12 -0
  82. package/dist/schema-definitions/sequelize-models/TskEvent.js +31 -0
  83. package/dist/schema-definitions/sequelize-models/TskEvent.js.map +1 -0
  84. package/dist/schema-definitions/sequelize-models/WazeJams.d.ts +14 -0
  85. package/dist/schema-definitions/sequelize-models/WazeJams.js +35 -0
  86. package/dist/schema-definitions/sequelize-models/WazeJams.js.map +1 -0
  87. package/dist/schema-definitions/sequelize-models/WazeReconstructions.d.ts +13 -0
  88. package/dist/schema-definitions/sequelize-models/WazeReconstructions.js +33 -0
  89. package/dist/schema-definitions/sequelize-models/WazeReconstructions.js.map +1 -0
  90. package/dist/schema-definitions/sequelize-models/interfaces/IFcdEvent.d.ts +8 -0
  91. package/dist/schema-definitions/sequelize-models/interfaces/IFcdEvent.js +3 -0
  92. package/dist/schema-definitions/sequelize-models/interfaces/IFcdEvent.js.map +1 -0
  93. package/dist/schema-definitions/sequelize-models/interfaces/INdicEvent.d.ts +15 -0
  94. package/dist/schema-definitions/sequelize-models/interfaces/INdicEvent.js +3 -0
  95. package/dist/schema-definitions/sequelize-models/interfaces/INdicEvent.js.map +1 -0
  96. package/dist/schema-definitions/sequelize-models/interfaces/ITskEvent.d.ts +7 -0
  97. package/dist/schema-definitions/sequelize-models/interfaces/ITskEvent.js +3 -0
  98. package/dist/schema-definitions/sequelize-models/interfaces/ITskEvent.js.map +1 -0
  99. package/dist/schema-definitions/sequelize-models/interfaces/IWazeJams.d.ts +9 -0
  100. package/dist/schema-definitions/sequelize-models/interfaces/IWazeJams.js +3 -0
  101. package/dist/schema-definitions/sequelize-models/interfaces/IWazeJams.js.map +1 -0
  102. package/dist/schema-definitions/sequelize-models/interfaces/IWazeReconstructions.d.ts +8 -0
  103. package/dist/schema-definitions/sequelize-models/interfaces/IWazeReconstructions.js +3 -0
  104. package/dist/schema-definitions/sequelize-models/interfaces/IWazeReconstructions.js.map +1 -0
  105. package/package.json +63 -0
  106. package/templates/sqlQueries/FcdEvents.sql +19 -0
  107. package/templates/sqlQueries/NdicEventsFull.sql +85 -0
  108. package/templates/sqlQueries/TskEvents.sql +98 -0
  109. package/templates/sqlQueries/WazeJamsAggregation.sql +27 -0
  110. package/templates/sqlQueries/WazeReconstructionsAggregation.sql +27 -0
@@ -0,0 +1,38 @@
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 AggregationTaskType_1 = require("../../schema-definitions/helpers/AggregationTaskType");
16
+ const NdicEvent_1 = __importDefault(require("../../schema-definitions/sequelize-models/NdicEvent"));
17
+ const PrahaZasekanaInfo_1 = __importDefault(require("../../schema-definitions/sequelize-models/PrahaZasekanaInfo"));
18
+ const integration_engine_1 = require("@golemio/core/dist/integration-engine");
19
+ const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
20
+ class NdicEventsRepository extends integration_engine_1.PostgresModel {
21
+ constructor() {
22
+ super("NdicEventsRepository", {
23
+ outputSequelizeAttributes: NdicEvent_1.default.attributeModel,
24
+ pgTableName: PrahaZasekanaInfo_1.default.TABLE_NAMES[AggregationTaskType_1.AggregationTaskType.NDIC],
25
+ pgSchema: PrahaZasekanaInfo_1.default.SCHEMA,
26
+ savingType: "insertOnly",
27
+ }, new golemio_validator_1.JSONSchemaValidator("NdicEventsRepository", NdicEvent_1.default.arrayJsonSchema, true));
28
+ this.saveData = (data, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
29
+ yield this["sequelizeModel"].bulkCreate(data, {
30
+ ignoreDuplicates: !updateOnDuplicate,
31
+ returning: false,
32
+ updateOnDuplicate: updateOnDuplicate ? ["properties"] : undefined,
33
+ });
34
+ });
35
+ }
36
+ }
37
+ exports.default = NdicEventsRepository;
38
+ //# sourceMappingURL=NdicEventRepository.js.map
@@ -0,0 +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"}
@@ -0,0 +1,6 @@
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 {
4
+ constructor();
5
+ saveData: (data: TskEvent[], updateOnDuplicate: boolean) => Promise<void>;
6
+ }
@@ -0,0 +1,38 @@
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 AggregationTaskType_1 = require("../../schema-definitions/helpers/AggregationTaskType");
16
+ const PrahaZasekanaInfo_1 = __importDefault(require("../../schema-definitions/sequelize-models/PrahaZasekanaInfo"));
17
+ const TskEvent_1 = __importDefault(require("../../schema-definitions/sequelize-models/TskEvent"));
18
+ const integration_engine_1 = require("@golemio/core/dist/integration-engine");
19
+ const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
20
+ class TskEventsRepository extends integration_engine_1.PostgresModel {
21
+ constructor() {
22
+ super("TskEventsRepository", {
23
+ outputSequelizeAttributes: TskEvent_1.default.attributeModel,
24
+ pgTableName: PrahaZasekanaInfo_1.default.TABLE_NAMES[AggregationTaskType_1.AggregationTaskType.SDDR],
25
+ pgSchema: PrahaZasekanaInfo_1.default.SCHEMA,
26
+ savingType: "insertOnly",
27
+ }, new golemio_validator_1.JSONSchemaValidator("TskEventsRepository", TskEvent_1.default.arrayJsonSchema, true));
28
+ this.saveData = (data, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
29
+ yield this["sequelizeModel"].bulkCreate(data, {
30
+ ignoreDuplicates: !updateOnDuplicate,
31
+ returning: false,
32
+ updateOnDuplicate: updateOnDuplicate ? ["sum", "properties"] : undefined,
33
+ });
34
+ });
35
+ }
36
+ }
37
+ exports.default = TskEventsRepository;
38
+ //# sourceMappingURL=TskEventsRepository.js.map
@@ -0,0 +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"}
@@ -0,0 +1,6 @@
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 {
4
+ constructor();
5
+ saveData: (data: WazeJams[], updateOnDuplicate: boolean) => Promise<void>;
6
+ }
@@ -0,0 +1,40 @@
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 AggregationTaskType_1 = require("../../schema-definitions/helpers/AggregationTaskType");
16
+ const PrahaZasekanaInfo_1 = __importDefault(require("../../schema-definitions/sequelize-models/PrahaZasekanaInfo"));
17
+ const WazeJams_1 = __importDefault(require("../../schema-definitions/sequelize-models/WazeJams"));
18
+ const integration_engine_1 = require("@golemio/core/dist/integration-engine");
19
+ const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
20
+ class WazeJamsRepository extends integration_engine_1.PostgresModel {
21
+ constructor() {
22
+ super("WazeJams", {
23
+ outputSequelizeAttributes: WazeJams_1.default.attributeModel,
24
+ pgTableName: PrahaZasekanaInfo_1.default.TABLE_NAMES[AggregationTaskType_1.AggregationTaskType.WAZEJ],
25
+ pgSchema: PrahaZasekanaInfo_1.default.SCHEMA,
26
+ savingType: "insertOnly",
27
+ }, new golemio_validator_1.JSONSchemaValidator("WazeJams", WazeJams_1.default.arrayJsonSchema, true));
28
+ this.saveData = (data, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
29
+ yield this["sequelizeModel"].bulkCreate(data, {
30
+ ignoreDuplicates: !updateOnDuplicate,
31
+ returning: false,
32
+ updateOnDuplicate: updateOnDuplicate
33
+ ? ["measured_at", "geom_origin", "geom_startpoint", "traffic_level", "properties"]
34
+ : undefined,
35
+ });
36
+ });
37
+ }
38
+ }
39
+ exports.default = WazeJamsRepository;
40
+ //# sourceMappingURL=WazeJamsRepository.js.map
@@ -0,0 +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"}
@@ -0,0 +1,6 @@
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 {
4
+ constructor();
5
+ saveData: (data: WazeReconstructions[], updateOnDuplicate: boolean) => Promise<void>;
6
+ }
@@ -0,0 +1,38 @@
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 AggregationTaskType_1 = require("../../schema-definitions/helpers/AggregationTaskType");
16
+ const PrahaZasekanaInfo_1 = __importDefault(require("../../schema-definitions/sequelize-models/PrahaZasekanaInfo"));
17
+ const WazeReconstructions_1 = __importDefault(require("../../schema-definitions/sequelize-models/WazeReconstructions"));
18
+ const integration_engine_1 = require("@golemio/core/dist/integration-engine");
19
+ const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
20
+ class WazeReconstructionsRepository extends integration_engine_1.PostgresModel {
21
+ constructor() {
22
+ super("WazeReconstructions", {
23
+ outputSequelizeAttributes: WazeReconstructions_1.default.attributeModel,
24
+ pgTableName: PrahaZasekanaInfo_1.default.TABLE_NAMES[AggregationTaskType_1.AggregationTaskType.WAZER],
25
+ pgSchema: PrahaZasekanaInfo_1.default.SCHEMA,
26
+ savingType: "insertOnly",
27
+ }, new golemio_validator_1.JSONSchemaValidator("WazeReconstructions", WazeReconstructions_1.default.arrayJsonSchema, true));
28
+ this.saveData = (data, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
29
+ yield this["sequelizeModel"].bulkCreate(data, {
30
+ ignoreDuplicates: !updateOnDuplicate,
31
+ returning: false,
32
+ updateOnDuplicate: updateOnDuplicate ? ["measured_at", "geom_origin", "geom_startpoint", "properties"] : undefined,
33
+ });
34
+ });
35
+ }
36
+ }
37
+ exports.default = WazeReconstructionsRepository;
38
+ //# sourceMappingURL=WazeReconstructionsRepository.js.map
@@ -0,0 +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"}
@@ -0,0 +1,2 @@
1
+ export * from "./AggregationWorker";
2
+ export * from "./queueDefinitions";
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ /* ie/index.ts */
14
+ __exportStar(require("./AggregationWorker"), exports);
15
+ __exportStar(require("./queueDefinitions"), exports);
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integration-engine/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iBAAiB;AACjB,sDAAoC;AACpC,qDAAmC"}
@@ -0,0 +1,3 @@
1
+ import { IQueueDefinition } from "@golemio/core/dist/integration-engine/queueprocessors";
2
+ declare const queueDefinitions: IQueueDefinition[];
3
+ export { queueDefinitions };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.queueDefinitions = void 0;
4
+ const config_1 = require("@golemio/core/dist/integration-engine/config");
5
+ const AggregationWorker_1 = require("./AggregationWorker");
6
+ const queueDefinitions = [
7
+ {
8
+ name: AggregationWorker_1.AggregationWorker.name,
9
+ queuePrefix: AggregationWorker_1.AggregationWorker.queuePrefix,
10
+ queues: [
11
+ {
12
+ name: AggregationWorker_1.AggregationWorker.aggregationMethodName,
13
+ options: {
14
+ deadLetterExchange: config_1.config.RABBIT_EXCHANGE_NAME,
15
+ deadLetterRoutingKey: "dead",
16
+ messageTtl: 23 * 60 * 60 * 1000, // 23 hours
17
+ },
18
+ worker: AggregationWorker_1.AggregationWorker,
19
+ workerMethod: AggregationWorker_1.AggregationWorker.aggregationMethodName,
20
+ },
21
+ ],
22
+ },
23
+ ];
24
+ exports.queueDefinitions = queueDefinitions;
25
+ //# sourceMappingURL=queueDefinitions.js.map
@@ -0,0 +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,EAAE,WAAW;iBAC/C;gBACD,MAAM,EAAE,qCAAiB;gBACzB,YAAY,EAAE,qCAAiB,CAAC,qBAAqB;aACxD;SACJ;KACJ;CACJ,CAAC;AAEO,4CAAgB"}
@@ -0,0 +1,7 @@
1
+ import { AggregationTaskType } from "../../schema-definitions/helpers/AggregationTaskType";
2
+ import AbstractAggregator from "./aggregators/AbstractAggregator";
3
+ export default class AggregationFactory {
4
+ private products;
5
+ constructor();
6
+ get(type: AggregationTaskType): AbstractAggregator;
7
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const AggregationTaskType_1 = require("../../schema-definitions/helpers/AggregationTaskType");
7
+ const errors_1 = require("@golemio/errors");
8
+ const FcdEventsAggregator_1 = __importDefault(require("./aggregators/FcdEventsAggregator"));
9
+ const NdicEventsAggregator_1 = __importDefault(require("./aggregators/NdicEventsAggregator"));
10
+ const TskEventsAggregator_1 = __importDefault(require("./aggregators/TskEventsAggregator"));
11
+ const WazeJamsAggregator_1 = __importDefault(require("./aggregators/WazeJamsAggregator"));
12
+ const WazeReconstructionsAggregator_1 = __importDefault(require("./aggregators/WazeReconstructionsAggregator"));
13
+ class AggregationFactory {
14
+ constructor() {
15
+ this.products = new Map([
16
+ [AggregationTaskType_1.AggregationTaskType.FCD, new FcdEventsAggregator_1.default()],
17
+ [AggregationTaskType_1.AggregationTaskType.NDIC, new NdicEventsAggregator_1.default()],
18
+ [AggregationTaskType_1.AggregationTaskType.SDDR, new TskEventsAggregator_1.default()],
19
+ [AggregationTaskType_1.AggregationTaskType.WAZEJ, new WazeJamsAggregator_1.default()],
20
+ [AggregationTaskType_1.AggregationTaskType.WAZER, new WazeReconstructionsAggregator_1.default()],
21
+ ]);
22
+ }
23
+ get(type) {
24
+ if (!this.products.has(type))
25
+ throw new errors_1.CustomError(`Unknown aggregation task type: ${type}`, true, this.constructor.name);
26
+ return this.products.get(type);
27
+ }
28
+ }
29
+ exports.default = AggregationFactory;
30
+ //# sourceMappingURL=AggregationFactory.js.map
@@ -0,0 +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"}
@@ -0,0 +1,8 @@
1
+ import { DurationLike } from "@golemio/core/dist/shared/luxon";
2
+ export default abstract class AbstractAggregator {
3
+ protected maxAggregationDuration: DurationLike;
4
+ aggregateAndSave: (from: Date, to: Date, updateOnDuplicate: boolean) => Promise<void>;
5
+ getMaxDuration(): DurationLike;
6
+ protected abstract aggregate(from: Date, to: Date): Promise<any[]>;
7
+ protected abstract save(data: any[], updateOnDuplicate: boolean): Promise<void>;
8
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const helpers_1 = require("@golemio/core/dist/integration-engine/helpers");
13
+ class AbstractAggregator {
14
+ constructor() {
15
+ this.maxAggregationDuration = { hours: 6 };
16
+ this.aggregateAndSave = (from, to, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
17
+ const aggregationResult = yield this.aggregate(from, to);
18
+ helpers_1.log.debug(`Saving aggregate ${this.constructor.name} from: ${from.toISOString()} to: ${to.toISOString()} count: ${aggregationResult.length}`);
19
+ yield this.save(aggregationResult, updateOnDuplicate);
20
+ });
21
+ }
22
+ getMaxDuration() {
23
+ return this.maxAggregationDuration;
24
+ }
25
+ }
26
+ exports.default = AbstractAggregator;
27
+ //# sourceMappingURL=AbstractAggregator.js.map
@@ -0,0 +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"}
@@ -0,0 +1,12 @@
1
+ import FcdEvent from "../../../schema-definitions/sequelize-models/FcdEvents";
2
+ import AbstractAggregator from "./AbstractAggregator";
3
+ export default class FcdEventsAggregator extends AbstractAggregator {
4
+ protected maxAggregationDuration: {
5
+ minutes: number;
6
+ };
7
+ private repository;
8
+ constructor();
9
+ protected aggregate: (from: Date, to: Date) => Promise<FcdEvent[]>;
10
+ protected save: (data: FcdEvent[], updateOnDuplicate: boolean) => Promise<void>;
11
+ protected mapToDto(data: any[]): FcdEvent[];
12
+ }
@@ -0,0 +1,50 @@
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 AggregationRepository_1 = __importDefault(require("../../dataAccess/AggregationRepository"));
16
+ const FcdEventsRepository_1 = __importDefault(require("../../dataAccess/FcdEventsRepository"));
17
+ const AggregationTaskType_1 = require("../../../schema-definitions/helpers/AggregationTaskType");
18
+ const luxon_1 = require("@golemio/core/dist/shared/luxon");
19
+ const AbstractAggregator_1 = __importDefault(require("./AbstractAggregator"));
20
+ class FcdEventsAggregator extends AbstractAggregator_1.default {
21
+ constructor() {
22
+ super();
23
+ this.maxAggregationDuration = { minutes: 30 };
24
+ this.aggregate = (from, to) => __awaiter(this, void 0, void 0, function* () {
25
+ const result = yield AggregationRepository_1.default.getInstance().aggregationQuery(AggregationTaskType_1.AggregationTaskType.FCD, {
26
+ from: luxon_1.DateTime.fromJSDate(from).toISO(),
27
+ to: luxon_1.DateTime.fromJSDate(to).toISO(),
28
+ });
29
+ return this.mapToDto(result);
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
+ this.repository = new FcdEventsRepository_1.default();
36
+ }
37
+ mapToDto(data) {
38
+ return data.map((element) => {
39
+ return {
40
+ source_identification: element.source_identification,
41
+ measured_at: Number.parseInt(element.measured_at),
42
+ oriented_route: element.oriented_route,
43
+ traffic_level: element.traffic_level,
44
+ properties: element.properties,
45
+ };
46
+ });
47
+ }
48
+ }
49
+ exports.default = FcdEventsAggregator;
50
+ //# sourceMappingURL=FcdEventsAggregator.js.map
@@ -0,0 +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"}
@@ -0,0 +1,11 @@
1
+ import NdicEvent from "../../../schema-definitions/sequelize-models/NdicEvent";
2
+ import { DurationLike } from "@golemio/core/dist/shared/luxon";
3
+ import AbstractAggregator from "./AbstractAggregator";
4
+ export default class NdicEventsAggregator extends AbstractAggregator {
5
+ protected maxAggregationDuration: DurationLike;
6
+ private repository;
7
+ constructor();
8
+ protected aggregate: (from: Date, to: Date) => Promise<NdicEvent[]>;
9
+ protected save: (data: NdicEvent[], updateOnDuplicate: boolean) => Promise<void>;
10
+ protected mapToDto(data: any[]): NdicEvent[];
11
+ }
@@ -0,0 +1,57 @@
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 AggregationRepository_1 = __importDefault(require("../../dataAccess/AggregationRepository"));
16
+ const NdicEventRepository_1 = __importDefault(require("../../dataAccess/NdicEventRepository"));
17
+ const AggregationTaskType_1 = require("../../../schema-definitions/helpers/AggregationTaskType");
18
+ const luxon_1 = require("@golemio/core/dist/shared/luxon");
19
+ const AbstractAggregator_1 = __importDefault(require("./AbstractAggregator"));
20
+ class NdicEventsAggregator extends AbstractAggregator_1.default {
21
+ constructor() {
22
+ super();
23
+ this.maxAggregationDuration = { hours: 2 };
24
+ this.aggregate = (from, to) => __awaiter(this, void 0, void 0, function* () {
25
+ const result = yield AggregationRepository_1.default.getInstance().aggregationQuery(AggregationTaskType_1.AggregationTaskType.NDIC, undefined, {
26
+ from: luxon_1.DateTime.fromJSDate(from).toISO(),
27
+ to: luxon_1.DateTime.fromJSDate(to).toISO(),
28
+ });
29
+ return this.mapToDto(result);
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
+ this.repository = new NdicEventRepository_1.default();
36
+ }
37
+ mapToDto(data) {
38
+ return data.map((element) => {
39
+ return {
40
+ situation_id: element.situation_id,
41
+ situation_record_type: element.situation_record_type,
42
+ situation_version_time: element.situation_version_time,
43
+ measured_at: Number.parseInt(element.measured_at),
44
+ geom_origin: element.geom_origin,
45
+ geom_centroid: element.geom_centroid,
46
+ geom_startpoint: element.geom_startpoint,
47
+ geom_endpoint: element.geom_endpoint,
48
+ situation_urgency: element.situation_urgency,
49
+ geom_symbol_iconimage: element.geom_symbol_iconimage,
50
+ geom_line_pattern: element.geom_line_pattern,
51
+ properties: element.properties,
52
+ };
53
+ });
54
+ }
55
+ }
56
+ exports.default = NdicEventsAggregator;
57
+ //# sourceMappingURL=NdicEventsAggregator.js.map
@@ -0,0 +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"}
@@ -0,0 +1,11 @@
1
+ import TskEvent from "../../../schema-definitions/sequelize-models/TskEvent";
2
+ import { DurationLike } from "@golemio/core/dist/shared/luxon";
3
+ import AbstractAggregator from "./AbstractAggregator";
4
+ export default class TskEventsAggregator extends AbstractAggregator {
5
+ protected maxAggregationDuration: DurationLike;
6
+ private repository;
7
+ constructor();
8
+ protected aggregate: (from: Date, to: Date) => Promise<TskEvent[]>;
9
+ protected save: (data: TskEvent[], updateOnDuplicate: boolean) => Promise<void>;
10
+ protected mapToDto(data: any[]): TskEvent[];
11
+ }
@@ -0,0 +1,49 @@
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 AggregationRepository_1 = __importDefault(require("../../dataAccess/AggregationRepository"));
16
+ const TskEventsRepository_1 = __importDefault(require("../../dataAccess/TskEventsRepository"));
17
+ const AggregationTaskType_1 = require("../../../schema-definitions/helpers/AggregationTaskType");
18
+ const luxon_1 = require("@golemio/core/dist/shared/luxon");
19
+ const AbstractAggregator_1 = __importDefault(require("./AbstractAggregator"));
20
+ class TskEventsAggregator extends AbstractAggregator_1.default {
21
+ constructor() {
22
+ super();
23
+ this.maxAggregationDuration = { hours: 2 };
24
+ this.aggregate = (from, to) => __awaiter(this, void 0, void 0, function* () {
25
+ const result = yield AggregationRepository_1.default.getInstance().aggregationQuery(AggregationTaskType_1.AggregationTaskType.SDDR, undefined, {
26
+ from: luxon_1.DateTime.fromJSDate(from).toISO(),
27
+ to: luxon_1.DateTime.fromJSDate(to).toISO(),
28
+ });
29
+ return this.mapToDto(result);
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
+ this.repository = new TskEventsRepository_1.default();
36
+ }
37
+ mapToDto(data) {
38
+ return data.map((element) => {
39
+ return {
40
+ measured_at: Number.parseInt(element.measured_at),
41
+ geom: element.geom,
42
+ sum: element.sum && Number.isInteger(element.sum) ? Number.parseInt(element.sum) : null,
43
+ properties: element.properties,
44
+ };
45
+ });
46
+ }
47
+ }
48
+ exports.default = TskEventsAggregator;
49
+ //# sourceMappingURL=TskEventsAggregator.js.map
@@ -0,0 +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"}
@@ -0,0 +1,10 @@
1
+ import WazeJams from "../../../schema-definitions/sequelize-models/WazeJams";
2
+ import AbstractAggregator from "./AbstractAggregator";
3
+ export default class WazeAggregator extends AbstractAggregator {
4
+ protected sqlQueryScriptName: string;
5
+ private repository;
6
+ constructor();
7
+ protected aggregate: (from: Date, to: Date) => Promise<WazeJams[]>;
8
+ protected save: (data: WazeJams[], updateOnDuplicate: boolean) => Promise<void>;
9
+ protected mapToDto(data: any[]): WazeJams[];
10
+ }