@golemio/pid 2.2.12-dev.640043504 → 2.2.12-dev.641997994

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 (84) hide show
  1. package/db/example/99_precomputed_tables.sql +6 -2
  2. package/db/migrations/postgresql/20220915123941-partitioned-departures.js +53 -0
  3. package/db/migrations/postgresql/sqls/20220915123941-partitioned-departures-down.sql +39 -0
  4. package/db/migrations/postgresql/sqls/20220915123941-partitioned-departures-up.sql +63 -0
  5. package/dist/integration-engine/index.js +2 -1
  6. package/dist/integration-engine/index.js.map +1 -1
  7. package/dist/integration-engine/queueDefinitions.js +3 -32
  8. package/dist/integration-engine/queueDefinitions.js.map +1 -1
  9. package/dist/integration-engine/ropid-gtfs/RopidGTFSMetadataModel.d.ts +1 -1
  10. package/dist/integration-engine/ropid-gtfs/RopidGTFSMetadataModel.js +3 -3
  11. package/dist/integration-engine/ropid-gtfs/RopidGTFSMetadataModel.js.map +1 -1
  12. package/dist/integration-engine/ropid-gtfs/RopidGTFSWorker.d.ts +2 -4
  13. package/dist/integration-engine/ropid-gtfs/RopidGTFSWorker.js +5 -15
  14. package/dist/integration-engine/ropid-gtfs/RopidGTFSWorker.js.map +1 -1
  15. package/dist/integration-engine/ropid-gtfs/data-access/DeparturesRepository.d.ts +8 -0
  16. package/dist/integration-engine/ropid-gtfs/{RopidGTFSDeparturesModel.js → data-access/DeparturesRepository.js} +36 -32
  17. package/dist/integration-engine/ropid-gtfs/data-access/DeparturesRepository.js.map +1 -0
  18. package/dist/integration-engine/ropid-gtfs/data-access/index.d.ts +1 -0
  19. package/dist/integration-engine/ropid-gtfs/data-access/index.js +18 -0
  20. package/dist/integration-engine/ropid-gtfs/data-access/index.js.map +1 -0
  21. package/dist/integration-engine/ropid-gtfs/index.d.ts +0 -1
  22. package/dist/integration-engine/ropid-gtfs/index.js +0 -1
  23. package/dist/integration-engine/ropid-gtfs/index.js.map +1 -1
  24. package/dist/integration-engine/ropid-vymi/index.d.ts +0 -1
  25. package/dist/integration-engine/ropid-vymi/index.js +0 -1
  26. package/dist/integration-engine/ropid-vymi/index.js.map +1 -1
  27. package/dist/integration-engine/ropid-vymi/workers/RopidVYMIWorker.d.ts +5 -0
  28. package/dist/integration-engine/ropid-vymi/workers/RopidVYMIWorker.js +18 -0
  29. package/dist/integration-engine/ropid-vymi/workers/RopidVYMIWorker.js.map +1 -0
  30. package/dist/integration-engine/ropid-vymi/workers/tasks/CheckForNewEventsTask.d.ts +8 -0
  31. package/dist/integration-engine/ropid-vymi/workers/tasks/CheckForNewEventsTask.js +37 -0
  32. package/dist/integration-engine/ropid-vymi/workers/tasks/CheckForNewEventsTask.js.map +1 -0
  33. package/dist/integration-engine/ropid-vymi/workers/tasks/FetchAndProcessEventsTask.d.ts +17 -0
  34. package/dist/integration-engine/ropid-vymi/workers/tasks/FetchAndProcessEventsTask.js +95 -0
  35. package/dist/integration-engine/ropid-vymi/workers/tasks/FetchAndProcessEventsTask.js.map +1 -0
  36. package/dist/integration-engine/ropid-vymi/workers/tasks/helpers/RopidVYMIApiHelper.d.ts +10 -0
  37. package/dist/integration-engine/ropid-vymi/workers/tasks/helpers/RopidVYMIApiHelper.js +68 -0
  38. package/dist/integration-engine/ropid-vymi/workers/tasks/helpers/RopidVYMIApiHelper.js.map +1 -0
  39. package/dist/integration-engine/ropid-vymi/workers/tasks/helpers/RopidVYMIApiOutputLevel.d.ts +5 -0
  40. package/dist/integration-engine/ropid-vymi/workers/tasks/helpers/RopidVYMIApiOutputLevel.js +10 -0
  41. package/dist/integration-engine/ropid-vymi/workers/tasks/helpers/RopidVYMIApiOutputLevel.js.map +1 -0
  42. package/dist/integration-engine/ropid-vymi/workers/tasks/interfaces/IEventFetchOutput.d.ts +5 -0
  43. package/dist/integration-engine/ropid-vymi/workers/tasks/interfaces/IEventFetchOutput.js +3 -0
  44. package/dist/integration-engine/ropid-vymi/workers/tasks/interfaces/IEventFetchOutput.js.map +1 -0
  45. package/dist/integration-engine/ropid-vymi/workers/tasks/schema/EventFetchOutputValidationSchema.d.ts +6 -0
  46. package/dist/integration-engine/ropid-vymi/workers/tasks/schema/EventFetchOutputValidationSchema.js +29 -0
  47. package/dist/integration-engine/ropid-vymi/workers/tasks/schema/EventFetchOutputValidationSchema.js.map +1 -0
  48. package/dist/integration-engine/ropid-vymi/workers/tasks/schema/RopidVYMIEventValidationSchema.d.ts +47 -0
  49. package/dist/integration-engine/ropid-vymi/workers/tasks/schema/RopidVYMIEventValidationSchema.js +202 -0
  50. package/dist/integration-engine/ropid-vymi/workers/tasks/schema/RopidVYMIEventValidationSchema.js.map +1 -0
  51. package/dist/output-gateway/pid/{models/RopidDeparturesModel.d.ts → data-access/DeparturesRepository.d.ts} +1 -4
  52. package/dist/output-gateway/pid/{models/RopidDeparturesModel.js → data-access/DeparturesRepository.js} +15 -9
  53. package/dist/output-gateway/pid/data-access/DeparturesRepository.js.map +1 -0
  54. package/dist/output-gateway/pid/data-access/index.d.ts +1 -0
  55. package/dist/output-gateway/pid/data-access/index.js +18 -0
  56. package/dist/output-gateway/pid/data-access/index.js.map +1 -0
  57. package/dist/output-gateway/pid/helpers/DepartureBoardMapper.js +1 -1
  58. package/dist/output-gateway/pid/helpers/DepartureBoardMapper.js.map +1 -1
  59. package/dist/output-gateway/pid/index.d.ts +5 -31
  60. package/dist/output-gateway/pid/index.js.map +1 -1
  61. package/dist/output-gateway/pid/models/PIDDepartureBoardsModel.d.ts +1 -1
  62. package/dist/output-gateway/pid/models/PIDDepartureBoardsModel.js +3 -3
  63. package/dist/output-gateway/pid/models/PIDDepartureBoardsModel.js.map +1 -1
  64. package/dist/output-gateway/pid/models/helpers/PIDDepartureModel.js +2 -1
  65. package/dist/output-gateway/pid/models/helpers/PIDDepartureModel.js.map +1 -1
  66. package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.d.ts +0 -102
  67. package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.js +1 -150
  68. package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.js.map +1 -1
  69. package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.d.ts +40 -0
  70. package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.js +176 -0
  71. package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.js.map +1 -0
  72. package/dist/schema-definitions/ropid-gtfs/models/precomputed/index.d.ts +1 -0
  73. package/dist/schema-definitions/ropid-gtfs/models/precomputed/index.js +18 -0
  74. package/dist/schema-definitions/ropid-gtfs/models/precomputed/index.js.map +1 -0
  75. package/dist/schema-definitions/ropid-gtfs/models/precomputed/interfaces/IDeparturesModel.d.ts +33 -0
  76. package/dist/schema-definitions/ropid-gtfs/models/precomputed/interfaces/IDeparturesModel.js +3 -0
  77. package/dist/schema-definitions/ropid-gtfs/models/precomputed/interfaces/IDeparturesModel.js.map +1 -0
  78. package/package.json +2 -2
  79. package/dist/integration-engine/ropid-gtfs/RopidGTFSDeparturesModel.d.ts +0 -19
  80. package/dist/integration-engine/ropid-gtfs/RopidGTFSDeparturesModel.js.map +0 -1
  81. package/dist/integration-engine/ropid-vymi/RopidVYMIWorker.d.ts +0 -27
  82. package/dist/integration-engine/ropid-vymi/RopidVYMIWorker.js +0 -165
  83. package/dist/integration-engine/ropid-vymi/RopidVYMIWorker.js.map +0 -1
  84. package/dist/output-gateway/pid/models/RopidDeparturesModel.js.map +0 -1
@@ -9,21 +9,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.RopidGTFSDeparturesModel = void 0;
12
+ exports.DeparturesRepository = void 0;
13
13
  const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
14
14
  const helpers_1 = require("@golemio/core/dist/integration-engine/helpers");
15
15
  const models_1 = require("@golemio/core/dist/integration-engine/models");
16
- const ropid_gtfs_1 = require("../../schema-definitions/ropid-gtfs");
17
- const utils_1 = require("./utils");
18
- class RopidGTFSDeparturesModel extends models_1.PostgresModel {
16
+ const ropid_gtfs_1 = require("../../../schema-definitions/ropid-gtfs");
17
+ const precomputed_1 = require("../../../schema-definitions/ropid-gtfs/models/precomputed");
18
+ const utils_1 = require("../utils");
19
+ class DeparturesRepository extends models_1.PostgresModel {
19
20
  constructor() {
20
- super(ropid_gtfs_1.RopidGTFS.departures.name + "Model", {
21
- outputSequelizeAttributes: ropid_gtfs_1.RopidGTFS.departures.outputSequelizeAttributes,
22
- pgTableName: ropid_gtfs_1.RopidGTFS.departures.pgTableName,
21
+ super("DeparturesRepository", {
22
+ pgTableName: precomputed_1.DeparturesModel.TABLE_NAME,
23
23
  pgSchema: ropid_gtfs_1.RopidGTFS.pgSchema,
24
- savingType: "insertOnly",
24
+ outputSequelizeAttributes: precomputed_1.DeparturesModel.attributeModel,
25
25
  attributesToRemove: ["id", "created_at", "updated_at"],
26
- }, new golemio_validator_1.JSONSchemaValidator(ropid_gtfs_1.RopidGTFS.departures.name + "ModelValidator", ropid_gtfs_1.RopidGTFS.departures.outputJsonSchema));
26
+ savingType: "insertOnly",
27
+ }, new golemio_validator_1.JSONSchemaValidator("DeparturesRepository", precomputed_1.DeparturesModel.jsonSchema));
27
28
  this.createAndPopulateFromTmp = () => __awaiter(this, void 0, void 0, function* () {
28
29
  /* eslint-disable max-len */
29
30
  const sql = `
@@ -85,7 +86,8 @@ class RopidGTFSDeparturesModel extends models_1.PostgresModel {
85
86
  t6.stop_sequence AS next_stop_sequence,
86
87
  t6.stop_id AS next_stop_id,
87
88
  t7.stop_sequence AS last_stop_sequence,
88
- t7.stop_id AS last_stop_id
89
+ t7.stop_id AS last_stop_id,
90
+ left(t0.stop_id, 4) AS part_index
89
91
  FROM (((((((("${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_stop_times_tmp t
90
92
  LEFT JOIN "${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_stops_tmp t0 ON (((t.stop_id)::text = (t0.stop_id)::text)))
91
93
  LEFT JOIN "${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_trips_tmp t2 ON (((t.trip_id)::text = (t2.trip_id)::text)))
@@ -97,15 +99,18 @@ class RopidGTFSDeparturesModel extends models_1.PostgresModel {
97
99
  (((t.trip_id)::text = (t6.trip_id)::text) AND (t6.stop_sequence = (t.stop_sequence + 1)))))
98
100
  LEFT JOIN "${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_stop_times_tmp t7 ON (
99
101
  (((t.trip_id)::text = (t7.trip_id)::text) AND (t7.stop_sequence = (t.stop_sequence - 1)))))
100
- `;
102
+ WHERE t0.stop_id IS NOT NULL`;
101
103
  /* eslint-enable max-len */
102
104
  try {
103
- const tmpTable = ropid_gtfs_1.RopidGTFS.departures.pgTableName + "_tmp";
104
- yield this.sequelizeModel.sequelize.query(`DROP TABLE IF EXISTS "${ropid_gtfs_1.RopidGTFS.pgSchema}".${tmpTable};
105
- CREATE TABLE "${ropid_gtfs_1.RopidGTFS.pgSchema}".${tmpTable} (
106
- LIKE "${ropid_gtfs_1.RopidGTFS.pgSchema}".${ropid_gtfs_1.RopidGTFS.departures.pgTableName}
107
- );
108
- INSERT INTO "${ropid_gtfs_1.RopidGTFS.pgSchema}".${tmpTable} ${sql};`);
105
+ const tableName = precomputed_1.DeparturesModel.TABLE_NAME;
106
+ const tmpTableName = tableName + "_tmp";
107
+ yield this.sequelizeModel.sequelize.query(`
108
+ SET search_path TO ${ropid_gtfs_1.RopidGTFS.pgSchema};
109
+ DROP TABLE IF EXISTS ${tmpTableName};
110
+ CREATE TABLE ${tmpTableName} (LIKE ${tableName}) PARTITION BY list(part_index);
111
+ SELECT departure_part(part_index, split_part(current_setting('search_path'), ',', 1), true)
112
+ FROM (SELECT DISTINCT left(stop_id, 4) part_index FROM ropidgtfs_stops_tmp) as parts;
113
+ INSERT INTO ${tmpTableName} ${sql};`);
109
114
  }
110
115
  catch (err) {
111
116
  helpers_1.log.error(err);
@@ -114,18 +119,17 @@ class RopidGTFSDeparturesModel extends models_1.PostgresModel {
114
119
  });
115
120
  this.replaceByTmp = (transaction) => __awaiter(this, void 0, void 0, function* () {
116
121
  try {
117
- const pgTableName = ropid_gtfs_1.RopidGTFS.departures.pgTableName;
118
- const tableNameActual = pgTableName + "_actual";
119
- const tableNameTmp = pgTableName + "_tmp";
120
- const indexQuery = (0, utils_1.buildAlterIndexQuery)(ropid_gtfs_1.RopidGTFS.departures.modelIndexOptions);
122
+ const tableName = precomputed_1.DeparturesModel.TABLE_NAME;
123
+ const tmpTableName = tableName + "_tmp";
124
+ const dropTableName = tableName + "_drop";
125
+ const indexQuery = (0, utils_1.buildAlterIndexQuery)(precomputed_1.DeparturesModel.indexesOptions);
121
126
  yield this.sequelizeModel.sequelize.query(`
122
- LOCK "${ropid_gtfs_1.RopidGTFS.pgSchema}".${pgTableName} IN EXCLUSIVE MODE;
123
- ALTER TABLE "${ropid_gtfs_1.RopidGTFS.pgSchema}".${tableNameActual} NO INHERIT "${ropid_gtfs_1.RopidGTFS.pgSchema}".${pgTableName};
124
- DROP TABLE IF EXISTS "${ropid_gtfs_1.RopidGTFS.pgSchema}".${tableNameActual};
125
- ${indexQuery}
126
- ALTER TABLE "${ropid_gtfs_1.RopidGTFS.pgSchema}".${tableNameTmp} RENAME TO ${tableNameActual};
127
- ALTER TABLE "${ropid_gtfs_1.RopidGTFS.pgSchema}".${tableNameActual} INHERIT "${ropid_gtfs_1.RopidGTFS.pgSchema}".${pgTableName};
128
- `, { transaction });
127
+ SET search_path TO ${ropid_gtfs_1.RopidGTFS.pgSchema};
128
+ LOCK ${tableName} IN EXCLUSIVE MODE;
129
+ ALTER TABLE ${tableName} RENAME TO ${dropTableName};
130
+ ALTER TABLE ${tmpTableName} RENAME TO ${tableName};
131
+ DROP TABLE ${dropTableName} CASCADE;
132
+ ${indexQuery}`, { transaction });
129
133
  }
130
134
  catch (err) {
131
135
  helpers_1.log.error(err);
@@ -134,8 +138,8 @@ class RopidGTFSDeparturesModel extends models_1.PostgresModel {
134
138
  });
135
139
  this.createIndexes = () => __awaiter(this, void 0, void 0, function* () {
136
140
  try {
137
- const indexes = ropid_gtfs_1.RopidGTFS.departures.modelIndexOptions;
138
- const indexQuery = (0, utils_1.buildCreateIndexQuery)(ropid_gtfs_1.RopidGTFS.departures.pgTableName, indexes);
141
+ const indexes = precomputed_1.DeparturesModel.indexesOptions;
142
+ const indexQuery = (0, utils_1.buildCreateIndexQuery)(precomputed_1.DeparturesModel.TABLE_NAME, indexes);
139
143
  yield this.sequelizeModel.sequelize.query(indexQuery);
140
144
  }
141
145
  catch (err) {
@@ -145,5 +149,5 @@ class RopidGTFSDeparturesModel extends models_1.PostgresModel {
145
149
  });
146
150
  }
147
151
  }
148
- exports.RopidGTFSDeparturesModel = RopidGTFSDeparturesModel;
149
- //# sourceMappingURL=RopidGTFSDeparturesModel.js.map
152
+ exports.DeparturesRepository = DeparturesRepository;
153
+ //# sourceMappingURL=DeparturesRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeparturesRepository.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/data-access/DeparturesRepository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./DeparturesRepository";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./DeparturesRepository"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/data-access/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC"}
@@ -5,7 +5,6 @@ export * from "./transformations/RopidGTFSTransformation";
5
5
  export * from "./RopidGTFSServicesFirst14daysModel";
6
6
  export * from "./RopidGTFSMinMaxSequencesModel";
7
7
  export * from "./RopidGTFSScheduledTripsModel";
8
- export * from "./RopidGTFSDeparturesModel";
9
8
  export * from "./RopidGTFSTripsModel";
10
9
  export * from "./RopidGTFSMetadataModel";
11
10
  export * from "./RopidGTFSWorker";
@@ -21,7 +21,6 @@ __exportStar(require("./transformations/RopidGTFSTransformation"), exports);
21
21
  __exportStar(require("./RopidGTFSServicesFirst14daysModel"), exports);
22
22
  __exportStar(require("./RopidGTFSMinMaxSequencesModel"), exports);
23
23
  __exportStar(require("./RopidGTFSScheduledTripsModel"), exports);
24
- __exportStar(require("./RopidGTFSDeparturesModel"), exports);
25
24
  __exportStar(require("./RopidGTFSTripsModel"), exports);
26
25
  __exportStar(require("./RopidGTFSMetadataModel"), exports);
27
26
  __exportStar(require("./RopidGTFSWorker"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-gtfs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yFAAuE;AACvE,oFAAkE;AAClE,sFAAoE;AACpE,4EAA0D;AAC1D,sEAAoD;AACpD,kEAAgD;AAChD,iEAA+C;AAC/C,6DAA2C;AAC3C,wDAAsC;AACtC,2DAAyC;AACzC,oDAAkC;AAClC,4DAA0C;AAC1C,wDAAsC;AACtC,yDAAuC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-gtfs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yFAAuE;AACvE,oFAAkE;AAClE,sFAAoE;AACpE,4EAA0D;AAC1D,sEAAoD;AACpD,kEAAgD;AAChD,iEAA+C;AAC/C,wDAAsC;AACtC,2DAAyC;AACzC,oDAAkC;AAClC,4DAA0C;AAC1C,wDAAsC;AACtC,yDAAuC"}
@@ -1,3 +1,2 @@
1
1
  export * from "./models";
2
2
  export * from "./RopidVYMIEventsTransformation";
3
- export * from "./RopidVYMIWorker";
@@ -16,5 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./models"), exports);
18
18
  __exportStar(require("./RopidVYMIEventsTransformation"), exports);
19
- __exportStar(require("./RopidVYMIWorker"), exports);
20
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-vymi/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,kEAAgD;AAChD,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-vymi/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,kEAAgD"}
@@ -0,0 +1,5 @@
1
+ import { AbstractWorker } from "@golemio/core/dist/integration-engine/workers";
2
+ export declare class RopidVYMIWorker extends AbstractWorker {
3
+ protected name: string;
4
+ constructor();
5
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RopidVYMIWorker = void 0;
4
+ const ropid_vymi_1 = require("../../../schema-definitions/ropid-vymi");
5
+ const workers_1 = require("@golemio/core/dist/integration-engine/workers");
6
+ const CheckForNewEventsTask_1 = require("./tasks/CheckForNewEventsTask");
7
+ const FetchAndProcessEventsTask_1 = require("./tasks/FetchAndProcessEventsTask");
8
+ class RopidVYMIWorker extends workers_1.AbstractWorker {
9
+ constructor() {
10
+ super();
11
+ this.name = ropid_vymi_1.RopidVYMI.name.toLowerCase();
12
+ // Register tasks
13
+ this.registerTask(new CheckForNewEventsTask_1.CheckForNewEventsTask(this.getQueuePrefix()));
14
+ this.registerTask(new FetchAndProcessEventsTask_1.FetchAndProcessEventsTask(this.getQueuePrefix()));
15
+ }
16
+ }
17
+ exports.RopidVYMIWorker = RopidVYMIWorker;
18
+ //# sourceMappingURL=RopidVYMIWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RopidVYMIWorker.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-vymi/workers/RopidVYMIWorker.ts"],"names":[],"mappings":";;;AAAA,uEAA4C;AAC5C,2EAA+E;AAC/E,yEAAsE;AACtE,iFAA8E;AAE9E,MAAa,eAAgB,SAAQ,wBAAc;IAG/C;QACI,KAAK,EAAE,CAAC;QAHF,SAAI,GAAG,sBAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAK1C,iBAAiB;QACjB,IAAI,CAAC,YAAY,CAAC,IAAI,6CAAqB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,CAAC,IAAI,qDAAyB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;CACJ;AAVD,0CAUC"}
@@ -0,0 +1,8 @@
1
+ import { AbstractEmptyTask } from "@golemio/core/dist/integration-engine";
2
+ export declare class CheckForNewEventsTask extends AbstractEmptyTask {
3
+ readonly queueName = "checkForNewEvents";
4
+ readonly queueTtl: number;
5
+ private readonly modelVYMIMeta;
6
+ constructor(queuePrefix: string);
7
+ protected execute(): Promise<void>;
8
+ }
@@ -0,0 +1,37 @@
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
+ exports.CheckForNewEventsTask = void 0;
16
+ const models_1 = require("../../models");
17
+ const integration_engine_1 = require("@golemio/core/dist/integration-engine");
18
+ const RopidVYMIApiHelper_1 = __importDefault(require("./helpers/RopidVYMIApiHelper"));
19
+ class CheckForNewEventsTask extends integration_engine_1.AbstractEmptyTask {
20
+ constructor(queuePrefix) {
21
+ super(queuePrefix);
22
+ this.queueName = "checkForNewEvents";
23
+ this.queueTtl = 1 * 60 * 1000; // 1 minute;
24
+ this.modelVYMIMeta = new models_1.RopidVYMIMetadataModel();
25
+ }
26
+ execute() {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ const lastDigest = yield this.modelVYMIMeta.getDigest(models_1.DatasetEnum.EVENTS);
29
+ const { digest, data } = yield RopidVYMIApiHelper_1.default.getInstance().getAllEvents();
30
+ if (digest !== lastDigest) {
31
+ yield integration_engine_1.QueueManager.sendMessageToExchange(this.queuePrefix, "fetchAndProcessEvents", { digest, data });
32
+ }
33
+ });
34
+ }
35
+ }
36
+ exports.CheckForNewEventsTask = CheckForNewEventsTask;
37
+ //# sourceMappingURL=CheckForNewEventsTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckForNewEventsTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-vymi/workers/tasks/CheckForNewEventsTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAA4E;AAC5E,8EAAwF;AACxF,sFAA8D;AAE9D,MAAa,qBAAsB,SAAQ,sCAAiB;IAKxD,YAAY,WAAmB;QAC3B,KAAK,CAAC,WAAW,CAAC,CAAC;QALP,cAAS,GAAG,mBAAmB,CAAC;QAChC,aAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;QAKlD,IAAI,CAAC,aAAa,GAAG,IAAI,+BAAsB,EAAE,CAAC;IACtD,CAAC;IAEe,OAAO;;YACnB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,oBAAW,CAAC,MAAM,CAAC,CAAC;YAC1E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,4BAAkB,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;YAE/E,IAAI,MAAM,KAAK,UAAU,EAAE;gBACvB,MAAM,iCAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACzG;QACL,CAAC;KAAA;CACJ;AAlBD,sDAkBC"}
@@ -0,0 +1,17 @@
1
+ import { AbstractTask } from "@golemio/core/dist/integration-engine";
2
+ import { IEventFetchOutput } from "./interfaces/IEventFetchOutput";
3
+ import { EventFetchOutputValidationSchema } from "./schema/EventFetchOutputValidationSchema";
4
+ export declare class FetchAndProcessEventsTask extends AbstractTask<IEventFetchOutput> {
5
+ readonly queueName = "fetchAndProcessEventsTask";
6
+ readonly queueTtl: number;
7
+ protected readonly schema: typeof EventFetchOutputValidationSchema;
8
+ private readonly modelVYMIEvents;
9
+ private readonly modelVYMIEventsRoutes;
10
+ private readonly modelVYMIEventsStops;
11
+ private readonly transformation;
12
+ private readonly modelVYMIMeta;
13
+ constructor(queueprefix: string);
14
+ protected execute: (content: IEventFetchOutput) => Promise<void>;
15
+ private prepareAndTransformEvents;
16
+ private prepareAndSaveEvents;
17
+ }
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.FetchAndProcessEventsTask = void 0;
13
+ const models_1 = require("../../models");
14
+ const RopidVYMIEventsTransformation_1 = require("../../RopidVYMIEventsTransformation");
15
+ const shared_1 = require("../../../shared");
16
+ const integration_engine_1 = require("@golemio/core/dist/integration-engine");
17
+ const helpers_1 = require("@golemio/core/dist/integration-engine/helpers");
18
+ const EventFetchOutputValidationSchema_1 = require("./schema/EventFetchOutputValidationSchema");
19
+ class FetchAndProcessEventsTask extends integration_engine_1.AbstractTask {
20
+ constructor(queueprefix) {
21
+ super(queueprefix);
22
+ this.queueName = "fetchAndProcessEventsTask";
23
+ this.queueTtl = 1 * 60 * 1000; // 1 minute;
24
+ this.schema = EventFetchOutputValidationSchema_1.EventFetchOutputValidationSchema;
25
+ this.execute = (content) => __awaiter(this, void 0, void 0, function* () {
26
+ const dbLastModified = yield this.modelVYMIMeta.getLastModified(models_1.DatasetEnum.EVENTS);
27
+ const version = dbLastModified.version + 1;
28
+ yield this.modelVYMIMeta.save({
29
+ dataset: models_1.DatasetEnum.EVENTS,
30
+ key: shared_1.MetaDatasetInfoKeyEnum.LAST_MODIFIED,
31
+ type: shared_1.MetaTypeEnum.DATASET_INFO,
32
+ value: new Date().toISOString(),
33
+ version,
34
+ });
35
+ try {
36
+ const { events, routes, stops } = yield this.prepareAndTransformEvents(content.data, version);
37
+ yield Promise.all([
38
+ this.prepareAndSaveEvents("events", this.modelVYMIEvents, events, version),
39
+ this.prepareAndSaveEvents("eventsRoutes", this.modelVYMIEventsRoutes, routes, version),
40
+ this.prepareAndSaveEvents("eventsStops", this.modelVYMIEventsStops, stops, version),
41
+ ]);
42
+ yield this.modelVYMIMeta.checkSavedRows(models_1.DatasetEnum.EVENTS, version);
43
+ yield this.modelVYMIMeta.replaceTmpTables(models_1.DatasetEnum.EVENTS, version);
44
+ // Save current digest
45
+ yield this.modelVYMIMeta.save({
46
+ dataset: models_1.DatasetEnum.EVENTS,
47
+ key: shared_1.MetaDatasetInfoKeyEnum.DIGEST,
48
+ type: shared_1.MetaTypeEnum.DATASET_INFO,
49
+ value: content.digest,
50
+ version,
51
+ });
52
+ }
53
+ catch (err) {
54
+ helpers_1.log.error(err);
55
+ yield this.modelVYMIMeta.rollbackFailedSaving(models_1.DatasetEnum.EVENTS, version);
56
+ }
57
+ });
58
+ this.prepareAndTransformEvents = (data, version) => __awaiter(this, void 0, void 0, function* () {
59
+ const { events, routes, stops } = yield this.transformation.transform(data);
60
+ const baseMetaInputData = {
61
+ dataset: models_1.DatasetEnum.EVENTS,
62
+ type: shared_1.MetaTypeEnum.TABLE_TOTAL_COUNT,
63
+ version,
64
+ };
65
+ yield Promise.all([
66
+ this.modelVYMIMeta.save(Object.assign({ key: "events", value: events.length }, baseMetaInputData)),
67
+ this.modelVYMIMeta.save(Object.assign({ key: "eventsRoutes", value: routes.length }, baseMetaInputData)),
68
+ this.modelVYMIMeta.save(Object.assign({ key: "eventsStops", value: stops.length }, baseMetaInputData)),
69
+ ]);
70
+ return {
71
+ events,
72
+ routes,
73
+ stops,
74
+ };
75
+ });
76
+ this.prepareAndSaveEvents = (key, model, transformedData, version) => __awaiter(this, void 0, void 0, function* () {
77
+ yield model.truncate(true);
78
+ yield model.save(transformedData, true);
79
+ yield this.modelVYMIMeta.save({
80
+ dataset: models_1.DatasetEnum.EVENTS,
81
+ key,
82
+ type: shared_1.MetaTypeEnum.STATE,
83
+ value: shared_1.MetaStateEnum.SAVED,
84
+ version,
85
+ });
86
+ });
87
+ this.modelVYMIMeta = new models_1.RopidVYMIMetadataModel();
88
+ this.transformation = new RopidVYMIEventsTransformation_1.RopidVYMIEventsTransformation();
89
+ this.modelVYMIEvents = new models_1.RopidVYMIEventsModel();
90
+ this.modelVYMIEventsRoutes = new models_1.RopidVYMIEventsRoutesModel();
91
+ this.modelVYMIEventsStops = new models_1.RopidVYMIEventsStopsModel();
92
+ }
93
+ }
94
+ exports.FetchAndProcessEventsTask = FetchAndProcessEventsTask;
95
+ //# sourceMappingURL=FetchAndProcessEventsTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FetchAndProcessEventsTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-vymi/workers/tasks/FetchAndProcessEventsTask.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { BinaryLike } from "crypto";
2
+ import { IEventFetchOutput } from "../interfaces/IEventFetchOutput";
3
+ export default class RopidVYMIApiHelper {
4
+ private static _instance;
5
+ private readonly datasource;
6
+ static getInstance: () => RopidVYMIApiHelper;
7
+ private constructor();
8
+ getAllEvents: () => Promise<IEventFetchOutput>;
9
+ createDigest: (data: BinaryLike) => string;
10
+ }
@@ -0,0 +1,68 @@
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
+ var _a;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ const ropid_vymi_1 = require("../../../../../schema-definitions/ropid-vymi");
17
+ const integration_engine_1 = require("@golemio/core/dist/integration-engine");
18
+ const config_1 = require("@golemio/core/dist/integration-engine/config");
19
+ const DataSourceStreamManager_1 = __importDefault(require("@golemio/core/dist/integration-engine/datasources/DataSourceStreamManager"));
20
+ const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
21
+ const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
22
+ const crypto_1 = __importDefault(require("crypto"));
23
+ const JSONStream_1 = __importDefault(require("JSONStream"));
24
+ const RopidVYMIApiOutputLevel_1 = require("./RopidVYMIApiOutputLevel");
25
+ class RopidVYMIApiHelper {
26
+ constructor() {
27
+ this.getAllEvents = () => __awaiter(this, void 0, void 0, function* () {
28
+ try {
29
+ let data = [], digest = "";
30
+ yield DataSourceStreamManager_1.default.processDataStream(this.datasource.getAll(true), (events) => __awaiter(this, void 0, void 0, function* () {
31
+ data = events;
32
+ digest = this.createDigest(JSON.stringify(data));
33
+ }));
34
+ return {
35
+ data,
36
+ digest,
37
+ };
38
+ }
39
+ catch (err) {
40
+ integration_engine_1.log.error(err);
41
+ if (err instanceof golemio_errors_1.CustomError) {
42
+ throw err;
43
+ }
44
+ else {
45
+ throw new golemio_errors_1.CustomError("Error while getting data", true, this.constructor.name, undefined, err);
46
+ }
47
+ }
48
+ });
49
+ this.createDigest = (data) => {
50
+ return crypto_1.default.createHash("sha1").update(data).digest("hex");
51
+ };
52
+ this.datasource = new integration_engine_1.DataSourceStreamed(ropid_vymi_1.RopidVYMI.events.name + "DataSource", new integration_engine_1.HTTPProtocolStrategyStreamed({
53
+ headers: config_1.config.datasources.RopidVYMIApiHeaders,
54
+ method: "GET",
55
+ timeout: 30000,
56
+ url: `${config_1.config.datasources.RopidVYMIApiUrl}?level=${RopidVYMIApiOutputLevel_1.RopidVYMIApiOutputLevel.Standard}`,
57
+ }).setStreamTransformer(JSONStream_1.default.parse("vymi-report.vymi-list.*")), new integration_engine_1.JSONDataTypeStrategy({ resultsPath: "" }), new golemio_validator_1.JSONSchemaValidator(ropid_vymi_1.RopidVYMI.events.name + "DataSource", ropid_vymi_1.RopidVYMI.events.datasourceJsonSchema));
58
+ }
59
+ }
60
+ exports.default = RopidVYMIApiHelper;
61
+ _a = RopidVYMIApiHelper;
62
+ RopidVYMIApiHelper.getInstance = () => {
63
+ if (!_a._instance) {
64
+ _a._instance = new RopidVYMIApiHelper();
65
+ }
66
+ return _a._instance;
67
+ };
68
+ //# sourceMappingURL=RopidVYMIApiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RopidVYMIApiHelper.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/ropid-vymi/workers/tasks/helpers/RopidVYMIApiHelper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6EAA6D;AAC7D,8EAK+C;AAC/C,yEAAsE;AACtE,wIAAgH;AAChH,6EAAuE;AACvE,mFAAkF;AAClF,oDAA4C;AAC5C,4DAAoC;AAEpC,uEAAoE;AAEpE,MAAqB,kBAAkB;IAYnC;QAcO,iBAAY,GAAG,GAAqC,EAAE;YACzD,IAAI;gBACA,IAAI,IAAI,GAAsB,EAAE,EAC5B,MAAM,GAAW,EAAE,CAAC;gBAExB,MAAM,iCAAuB,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAO,MAAyB,EAAE,EAAE;oBAC9G,IAAI,GAAG,MAAM,CAAC;oBACd,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrD,CAAC,CAAA,CAAC,CAAC;gBAEH,OAAO;oBACH,IAAI;oBACJ,MAAM;iBACT,CAAC;aACL;YAAC,OAAO,GAAQ,EAAE;gBACf,wBAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACf,IAAI,GAAG,YAAY,4BAAW,EAAE;oBAC5B,MAAM,GAAG,CAAC;iBACb;qBAAM;oBACH,MAAM,IAAI,4BAAW,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;iBAClG;aACJ;QACL,CAAC,CAAA,CAAC;QAEK,iBAAY,GAAG,CAAC,IAAgB,EAAU,EAAE;YAC/C,OAAO,gBAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChE,CAAC,CAAC;QAvCE,IAAI,CAAC,UAAU,GAAG,IAAI,uCAAkB,CACpC,sBAAS,CAAC,MAAM,CAAC,IAAI,GAAG,YAAY,EACpC,IAAI,iDAA4B,CAAC;YAC7B,OAAO,EAAE,eAAM,CAAC,WAAW,CAAC,mBAAmB;YAC/C,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,GAAG,EAAE,GAAG,eAAM,CAAC,WAAW,CAAC,eAAe,UAAU,iDAAuB,CAAC,QAAQ,EAAE;SACzF,CAAC,CAAC,oBAAoB,CAAC,oBAAU,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,EACpE,IAAI,yCAAoB,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAC7C,IAAI,uCAAmB,CAAC,sBAAS,CAAC,MAAM,CAAC,IAAI,GAAG,YAAY,EAAE,sBAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CACvG,CAAC;IACN,CAAC;;AAxBL,qCAqDC;;AAjDiB,8BAAW,GAAG,GAAG,EAAE;IAC7B,IAAI,CAAC,EAAI,CAAC,SAAS,EAAE;QACjB,EAAI,CAAC,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;KAC7C;IAED,OAAO,EAAI,CAAC,SAAS,CAAC;AAC1B,CAAE,CAAA"}
@@ -0,0 +1,5 @@
1
+ export declare enum RopidVYMIApiOutputLevel {
2
+ Basic = 0,
3
+ Standard = 1,
4
+ Complete = 2
5
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RopidVYMIApiOutputLevel = void 0;
4
+ var RopidVYMIApiOutputLevel;
5
+ (function (RopidVYMIApiOutputLevel) {
6
+ RopidVYMIApiOutputLevel[RopidVYMIApiOutputLevel["Basic"] = 0] = "Basic";
7
+ RopidVYMIApiOutputLevel[RopidVYMIApiOutputLevel["Standard"] = 1] = "Standard";
8
+ RopidVYMIApiOutputLevel[RopidVYMIApiOutputLevel["Complete"] = 2] = "Complete";
9
+ })(RopidVYMIApiOutputLevel = exports.RopidVYMIApiOutputLevel || (exports.RopidVYMIApiOutputLevel = {}));
10
+ //# sourceMappingURL=RopidVYMIApiOutputLevel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RopidVYMIApiOutputLevel.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/ropid-vymi/workers/tasks/helpers/RopidVYMIApiOutputLevel.ts"],"names":[],"mappings":";;;AAAA,IAAY,uBAIX;AAJD,WAAY,uBAAuB;IAC/B,uEAAS,CAAA;IACT,6EAAY,CAAA;IACZ,6EAAY,CAAA;AAChB,CAAC,EAJW,uBAAuB,GAAvB,+BAAuB,KAAvB,+BAAuB,QAIlC"}
@@ -0,0 +1,5 @@
1
+ import { IRopidVYMIEvent } from "../../../../../schema-definitions/ropid-vymi";
2
+ export interface IEventFetchOutput {
3
+ digest: string;
4
+ data: IRopidVYMIEvent[];
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IEventFetchOutput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IEventFetchOutput.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/ropid-vymi/workers/tasks/interfaces/IEventFetchOutput.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { IRopidVYMIEvent } from "../../../../../schema-definitions/ropid-vymi";
2
+ import { IEventFetchOutput } from "../interfaces/IEventFetchOutput";
3
+ export declare class EventFetchOutputValidationSchema implements IEventFetchOutput {
4
+ digest: string;
5
+ data: IRopidVYMIEvent[];
6
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.EventFetchOutputValidationSchema = void 0;
13
+ const class_transformer_1 = require("@golemio/core/dist/shared/class-transformer");
14
+ const class_validator_1 = require("@golemio/core/dist/shared/class-validator");
15
+ const RopidVYMIEventValidationSchema_1 = require("./RopidVYMIEventValidationSchema");
16
+ class EventFetchOutputValidationSchema {
17
+ }
18
+ __decorate([
19
+ (0, class_validator_1.IsString)(),
20
+ __metadata("design:type", String)
21
+ ], EventFetchOutputValidationSchema.prototype, "digest", void 0);
22
+ __decorate([
23
+ (0, class_validator_1.IsObject)({ each: true }),
24
+ (0, class_validator_1.ValidateNested)(),
25
+ (0, class_transformer_1.Type)(() => RopidVYMIEventValidationSchema_1.RopidVYMIEventValidationSchema),
26
+ __metadata("design:type", Array)
27
+ ], EventFetchOutputValidationSchema.prototype, "data", void 0);
28
+ exports.EventFetchOutputValidationSchema = EventFetchOutputValidationSchema;
29
+ //# sourceMappingURL=EventFetchOutputValidationSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventFetchOutputValidationSchema.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/ropid-vymi/workers/tasks/schema/EventFetchOutputValidationSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,mFAAmE;AACnE,+EAA+F;AAE/F,qFAAkF;AAElF,MAAa,gCAAgC;CAQ5C;AANG;IADC,IAAA,0BAAQ,GAAE;;gEACK;AAKhB;IAHC,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,+DAA8B,CAAC;;8DAClB;AAP7B,4EAQC"}
@@ -0,0 +1,47 @@
1
+ import { IRopidVYMIEvent, IRopidVYMIEventRoute, IRopidVYMIEventStop } from "../../../../../schema-definitions/ropid-vymi";
2
+ export declare class RopidVYMIEventValidationSchema implements IRopidVYMIEvent {
3
+ "@id": string;
4
+ "@id_dtb": string;
5
+ "@stav": string;
6
+ "@pa_01": string;
7
+ "@pa_02": string;
8
+ "@pa_03": string;
9
+ "@pa_04": string;
10
+ "@typ_zaznamu": string;
11
+ "@typ_udalost"?: string;
12
+ "@kanaly": string;
13
+ "@nazev": string;
14
+ "@cas_od": string;
15
+ "@typ_do": string;
16
+ "@cas_do"?: string;
17
+ "@zobrazit_do"?: string;
18
+ "@druh_dopr": string;
19
+ "@priorita"?: string;
20
+ "@duvod"?: string;
21
+ "@link"?: string;
22
+ "@opatr_ropid"?: string;
23
+ "@opatr_dpp"?: string;
24
+ "@popis"?: string;
25
+ "linky-zmena"?: IRopidVYMIEventRoute[];
26
+ "zastavky-zmena"?: IRopidVYMIEventStop[];
27
+ }
28
+ export declare class RopidVYMIEventRouteValidationSchema implements IRopidVYMIEventRoute {
29
+ "@id": string;
30
+ "@id_dtb": string;
31
+ "@cislo": string;
32
+ "@nazev": string;
33
+ "@linka_typ": string;
34
+ "@plati_od"?: string;
35
+ "@plati_do"?: string;
36
+ "#text"?: string;
37
+ }
38
+ export declare class RopidVYMIEventStopValidationSchema implements IRopidVYMIEventStop {
39
+ "@id": string;
40
+ "@id_dtb": string;
41
+ "@uzelCislo": string;
42
+ "@zastCislo": string;
43
+ "@zast_typ": string;
44
+ "@plati_od"?: string;
45
+ "@plati_do"?: string;
46
+ "#text"?: string;
47
+ }