@golemio/pid 3.15.2-rc.1828866938 → 3.15.2-rc.1852456410
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/integration-engine/jis/repositories/JISEventsRepository.d.ts +2 -4
- package/dist/integration-engine/jis/repositories/JISEventsRepository.js +16 -56
- package/dist/integration-engine/jis/repositories/JISEventsRepository.js.map +1 -1
- package/dist/integration-engine/jis/repositories/JISEventsRopidGTFSRoutesRepository.d.ts +0 -2
- package/dist/integration-engine/jis/repositories/JISEventsRopidGTFSRoutesRepository.js +0 -21
- package/dist/integration-engine/jis/repositories/JISEventsRopidGTFSRoutesRepository.js.map +1 -1
- package/dist/integration-engine/jis/services/JISEventsDataService.d.ts +5 -5
- package/dist/integration-engine/jis/services/JISEventsDataService.js +8 -12
- package/dist/integration-engine/jis/services/JISEventsDataService.js.map +1 -1
- package/dist/integration-engine/jis/workers/tasks/RefreshJISEventsTask.js +1 -1
- package/dist/integration-engine/jis/workers/tasks/RefreshJISEventsTask.js.map +1 -1
- package/docs/openapi-output.yaml +6 -6
- package/package.json +1 -1
|
@@ -18,20 +18,18 @@ export declare class JISEventsRepository extends AbstractValidatableRepository {
|
|
|
18
18
|
private sequelizeModel;
|
|
19
19
|
private ropidGTFSRoutesRepository;
|
|
20
20
|
constructor(connector: IDatabaseConnector, logger: ILogger, eventsRopidGTFSRoutesRepository: JISEventsRopidGTFSRoutesRepository);
|
|
21
|
-
deleteAndCountAllLastUpdatedBefore(dateTime: Date, options?: RepositoryOptions): Promise<number>;
|
|
22
21
|
getCurrentIncidents(organizationNames: string[]): Promise<Array<JISEventsModel & {
|
|
23
22
|
routes: Array<{
|
|
24
23
|
route_id: string;
|
|
25
24
|
}>;
|
|
26
25
|
}>>;
|
|
27
26
|
/**
|
|
28
|
-
* Refresh all data from VYMI
|
|
27
|
+
* Refresh all data from VYMI
|
|
29
28
|
*
|
|
30
29
|
* @param data The data to be upserted
|
|
31
30
|
* @param options Options for the operation
|
|
32
31
|
*/
|
|
33
|
-
|
|
32
|
+
upsertAll(data: IJISEvent[], options?: RepositoryOptions): Promise<JISEventsModel[]>;
|
|
34
33
|
private getUpdateAttributes;
|
|
35
|
-
deleteAndCountAll(options?: RepositoryOptions): Promise<number>;
|
|
36
34
|
}
|
|
37
35
|
export {};
|
|
@@ -44,23 +44,15 @@ let JISEventsRepository = exports.JISEventsRepository = class JISEventsRepositor
|
|
|
44
44
|
as: "routes",
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
|
-
async deleteAndCountAllLastUpdatedBefore(dateTime, options) {
|
|
48
|
-
try {
|
|
49
|
-
return await this.sequelizeModel.destroy({
|
|
50
|
-
where: {
|
|
51
|
-
updated_at: { [sequelize_1.Op.lt]: dateTime },
|
|
52
|
-
},
|
|
53
|
-
transaction: options?.transaction,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
catch (err) {
|
|
57
|
-
throw new golemio_errors_1.GeneralError("Error in deleteAndCountAllLastUpdatedBefore", this.constructor.name, err);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
47
|
async getCurrentIncidents(organizationNames) {
|
|
48
|
+
const now = new Date();
|
|
61
49
|
try {
|
|
62
50
|
return (await this.sequelizeModel.findAll({
|
|
63
|
-
where: {
|
|
51
|
+
where: {
|
|
52
|
+
type: "INCIDENT",
|
|
53
|
+
organization_name: organizationNames,
|
|
54
|
+
[sequelize_1.Op.or]: [{ active_period_end: null }, { active_period_end: { [sequelize_1.Op.gte]: now } }],
|
|
55
|
+
},
|
|
64
56
|
include: [
|
|
65
57
|
{
|
|
66
58
|
model: this.ropidGTFSRoutesRepository["sequelizeModel"],
|
|
@@ -76,63 +68,31 @@ let JISEventsRepository = exports.JISEventsRepository = class JISEventsRepositor
|
|
|
76
68
|
}
|
|
77
69
|
}
|
|
78
70
|
/**
|
|
79
|
-
* Refresh all data from VYMI
|
|
71
|
+
* Refresh all data from VYMI
|
|
80
72
|
*
|
|
81
73
|
* @param data The data to be upserted
|
|
82
74
|
* @param options Options for the operation
|
|
83
75
|
*/
|
|
84
|
-
async
|
|
76
|
+
async upsertAll(data, options) {
|
|
85
77
|
try {
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
const toBeUpserted = [];
|
|
92
|
-
for (const event of data) {
|
|
93
|
-
const info = currentEventsMap.get(event.id);
|
|
94
|
-
if (!info || info.updated_at <= event.updated_timestamp) {
|
|
95
|
-
toBeUpserted.push(event);
|
|
96
|
-
}
|
|
97
|
-
currentEventsMap.delete(event.id);
|
|
98
|
-
}
|
|
99
|
-
const toBeDeleted = [];
|
|
100
|
-
for (const { id } of currentEventsMap.values()) {
|
|
101
|
-
toBeDeleted.push(id);
|
|
102
|
-
}
|
|
103
|
-
const [upserted] = await Promise.all([
|
|
104
|
-
this.sequelizeModel.bulkCreate(toBeUpserted, {
|
|
105
|
-
updateOnDuplicate: this.getUpdateAttributes(),
|
|
106
|
-
transaction: options?.transaction,
|
|
107
|
-
}),
|
|
108
|
-
this.sequelizeModel.destroy({
|
|
109
|
-
where: {
|
|
110
|
-
id: { [sequelize_1.Op.in]: toBeDeleted },
|
|
111
|
-
},
|
|
112
|
-
transaction: options?.transaction,
|
|
113
|
-
}),
|
|
114
|
-
]);
|
|
78
|
+
const upserted = await this.sequelizeModel.bulkCreate(data, {
|
|
79
|
+
updateOnDuplicate: this.getUpdateAttributes(),
|
|
80
|
+
transaction: options?.transaction,
|
|
81
|
+
});
|
|
82
|
+
this.logger.info(`${this.constructor.name}.upsertAll: upserted ${upserted.length} JIS events.`);
|
|
115
83
|
return upserted;
|
|
116
84
|
}
|
|
117
85
|
catch (err) {
|
|
118
|
-
if (err instanceof sequelize_1.ValidationError && err.errors?.length
|
|
86
|
+
if (err instanceof sequelize_1.ValidationError && err.errors?.length) {
|
|
119
87
|
const mappedErrors = err.errors.map((e) => `${e.message} (${e.value})`).join(", ");
|
|
120
|
-
throw new golemio_errors_1.ValidationError(`Validation error in
|
|
88
|
+
throw new golemio_errors_1.ValidationError(`Validation error in upsertAll: ${mappedErrors}`, this.constructor.name, err, undefined, "pid");
|
|
121
89
|
}
|
|
122
|
-
throw new golemio_errors_1.GeneralError("Error in
|
|
90
|
+
throw new golemio_errors_1.GeneralError("Error in upsertAll", this.constructor.name, err);
|
|
123
91
|
}
|
|
124
92
|
}
|
|
125
93
|
getUpdateAttributes() {
|
|
126
94
|
return Object.keys(JISEventsModel_1.JISEventsModel.attributeModel).filter((attribute) => !["created_at"].includes(attribute));
|
|
127
95
|
}
|
|
128
|
-
async deleteAndCountAll(options) {
|
|
129
|
-
try {
|
|
130
|
-
return await this.sequelizeModel.destroy({ where: {}, transaction: options?.transaction });
|
|
131
|
-
}
|
|
132
|
-
catch (err) {
|
|
133
|
-
throw new golemio_errors_1.GeneralError("Error in deleteAndCountAll", this.constructor.name, err);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
96
|
};
|
|
137
97
|
exports.JISEventsRepository = JISEventsRepository = __decorate([
|
|
138
98
|
(0, tsyringe_1.injectable)(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JISEventsRepository.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/repositories/JISEventsRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,6DAAuC;AACvC,0FAAgE;AAIhE,8IAA2I;AAC3I,wEAAqE;AACrE,6EAAyF;AACzF,mFAAkF;AAClF,mEAAgI;AAChI,iEAAwE;AACxE,gEAA6D;AAC7D,6FAA0F;AAC1F,gDAA2D;AAC3D,0FAAqF;AAO9E,IAAM,mBAAmB,iCAAzB,MAAM,mBAAoB,SAAQ,6DAA6B;IAQlE,YACyC,SAA6B,EACxC,MAAuB,EAEjD,+BAA2E;QAE3E,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAJS,WAAM,GAAN,MAAM,CAAS;QAEzC,oCAA+B,GAA/B,+BAA+B,CAAoC;QAVxE,WAAM,GAAG,iBAAS,CAAC;QACnB,cAAS,GAAG,+BAAc,CAAC,SAAS,CAAC;QAYxC,IAAI,CAAC,SAAS,GAAG,IAAI,uCAAmB,CAAC,qBAAqB,EAAE,+BAAc,CAAC,UAAU,CAAC,CAAC;QAC3F,IAAI,CAAC,cAAc,GAAG,SAAS;aAC1B,aAAa,EAAE;aACf,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,+BAAc,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,yBAAyB,GAAG,uBAAkB,CAAC,OAAO,CACvD,iDAAuB,CAAC,yBAAyB,CACpD,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,EAAE;YAChF,OAAO,EAAE,+BAA+B,CAAC,gBAAgB,CAAC;YAC1D,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,UAAU;YACpB,EAAE,EAAE,QAAQ;SACf,CAAC,CAAC;IACP,CAAC;IAEM,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"JISEventsRepository.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/repositories/JISEventsRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,6 @@ export declare class JISEventsRopidGTFSRoutesRepository extends AbstractValidata
|
|
|
15
15
|
tableName: string;
|
|
16
16
|
private sequelizeModel;
|
|
17
17
|
constructor(connector: IDatabaseConnector, logger: ILogger);
|
|
18
|
-
deleteAndCountAllLastUpdatedBefore(dateTime: Date, options?: RepositoryOptions): Promise<number>;
|
|
19
18
|
/**
|
|
20
19
|
* Insert or update all given data. In case of an update, all attributes except for `created_at` shall be overwritten.
|
|
21
20
|
*
|
|
@@ -25,6 +24,5 @@ export declare class JISEventsRopidGTFSRoutesRepository extends AbstractValidata
|
|
|
25
24
|
*/
|
|
26
25
|
upsertAll(data: IJISEventsRopidGTFSRoutes[], options?: RepositoryOptions): ReturnType<ModelStatic<JISEventsRopidGTFSRoutesModel>["bulkCreate"]>;
|
|
27
26
|
private getUpdateAttributes;
|
|
28
|
-
deleteAndCountAll(options?: RepositoryOptions): Promise<number>;
|
|
29
27
|
}
|
|
30
28
|
export {};
|
|
@@ -32,19 +32,6 @@ let JISEventsRopidGTFSRoutesRepository = exports.JISEventsRopidGTFSRoutesReposit
|
|
|
32
32
|
.getConnection()
|
|
33
33
|
.define(this.tableName, JISEventsRopidGTFSRoutesModel_1.JISEventsRopidGTFSRoutesModel.attributeModel, { schema: this.schema });
|
|
34
34
|
}
|
|
35
|
-
async deleteAndCountAllLastUpdatedBefore(dateTime, options) {
|
|
36
|
-
try {
|
|
37
|
-
return await this.sequelizeModel.destroy({
|
|
38
|
-
where: {
|
|
39
|
-
updated_at: { [sequelize_1.Op.lt]: dateTime },
|
|
40
|
-
},
|
|
41
|
-
transaction: options?.transaction,
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
catch (err) {
|
|
45
|
-
throw new golemio_errors_1.GeneralError("Error in deleteAndCountAllLastUpdatedBefore", this.constructor.name, err);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
35
|
/**
|
|
49
36
|
* Insert or update all given data. In case of an update, all attributes except for `created_at` shall be overwritten.
|
|
50
37
|
*
|
|
@@ -70,14 +57,6 @@ let JISEventsRopidGTFSRoutesRepository = exports.JISEventsRopidGTFSRoutesReposit
|
|
|
70
57
|
getUpdateAttributes() {
|
|
71
58
|
return Object.keys(JISEventsRopidGTFSRoutesModel_1.JISEventsRopidGTFSRoutesModel.attributeModel).filter((attribute) => !["created_at"].includes(attribute));
|
|
72
59
|
}
|
|
73
|
-
async deleteAndCountAll(options) {
|
|
74
|
-
try {
|
|
75
|
-
return await this.sequelizeModel.destroy({ where: {}, transaction: options?.transaction });
|
|
76
|
-
}
|
|
77
|
-
catch (err) {
|
|
78
|
-
throw new golemio_errors_1.GeneralError("Error in deleteAndCountAll", this.constructor.name, err);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
60
|
};
|
|
82
61
|
exports.JISEventsRopidGTFSRoutesRepository = JISEventsRopidGTFSRoutesRepository = __decorate([
|
|
83
62
|
(0, tsyringe_1.injectable)(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JISEventsRopidGTFSRoutesRepository.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/repositories/JISEventsRopidGTFSRoutesRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAAuC;AACvC,wHAA8F;AAI9F,8IAA2I;AAC3I,wEAAqE;AACrE,6EAAyF;AACzF,mFAAkF;AAClF,mEAAgI;AAChI,iEAAwE;AAOjE,IAAM,kCAAkC,gDAAxC,MAAM,kCAAmC,SAAQ,6DAA6B;IAOjF,YACyC,SAA6B,EACxC,MAAuB;QAEjD,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAFS,WAAM,GAAN,MAAM,CAAS;QAP9C,WAAM,GAAG,iBAAS,CAAC;QACnB,cAAS,GAAG,6DAA6B,CAAC,SAAS,CAAC;QASvD,IAAI,CAAC,SAAS,GAAG,IAAI,uCAAmB,CAAC,oCAAoC,EAAE,6DAA6B,CAAC,UAAU,CAAC,CAAC;QACzH,IAAI,CAAC,cAAc,GAAG,SAAS;aAC1B,aAAa,EAAE;aACf,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,6DAA6B,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACvG,CAAC;
|
|
1
|
+
{"version":3,"file":"JISEventsRopidGTFSRoutesRepository.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/repositories/JISEventsRopidGTFSRoutesRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAAuC;AACvC,wHAA8F;AAI9F,8IAA2I;AAC3I,wEAAqE;AACrE,6EAAyF;AACzF,mFAAkF;AAClF,mEAAgI;AAChI,iEAAwE;AAOjE,IAAM,kCAAkC,gDAAxC,MAAM,kCAAmC,SAAQ,6DAA6B;IAOjF,YACyC,SAA6B,EACxC,MAAuB;QAEjD,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAFS,WAAM,GAAN,MAAM,CAAS;QAP9C,WAAM,GAAG,iBAAS,CAAC;QACnB,cAAS,GAAG,6DAA6B,CAAC,SAAS,CAAC;QASvD,IAAI,CAAC,SAAS,GAAG,IAAI,uCAAmB,CAAC,oCAAoC,EAAE,6DAA6B,CAAC,UAAU,CAAC,CAAC;QACzH,IAAI,CAAC,cAAc,GAAG,SAAS;aAC1B,aAAa,EAAE;aACf,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,6DAA6B,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACvG,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,SAAS,CAClB,IAAiC,EACjC,OAA2B;QAE3B,IAAI;YACA,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE;gBAC9C,iBAAiB,EAAE,IAAI,CAAC,mBAAmB,EAAS;gBACpD,WAAW,EAAE,OAAO,EAAE,WAAW;aACpC,CAAC,CAAC;SACN;QAAC,OAAO,GAAG,EAAE;YACV,IAAI,GAAG,YAAY,2BAAwB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE;gBACnE,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnF,MAAM,IAAI,gCAAe,CACrB,kCAAkC,YAAY,EAAE,EAChD,IAAI,CAAC,WAAW,CAAC,IAAI,EACrB,GAAG,EACH,SAAS,EACT,KAAK,CACR,CAAC;aACL;YACD,MAAM,IAAI,6BAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SAC5E;IACL,CAAC;IAEO,mBAAmB;QACvB,OAAO,MAAM,CAAC,IAAI,CAAC,6DAA6B,CAAC,cAAc,CAAC,CAAC,MAAM,CACnE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CACrD,CAAC;IACN,CAAC;CACJ,CAAA;6CAtDY,kCAAkC;IAD9C,IAAA,qBAAU,GAAE;IASJ,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,iBAAiB,CAAC,CAAA;IACnC,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,MAAM,CAAC,CAAA;;GATpB,kCAAkC,CAsD9C"}
|
|
@@ -10,11 +10,11 @@ export declare class JISEventsDataService {
|
|
|
10
10
|
private logger;
|
|
11
11
|
constructor(eventsRepository: JISEventsRepository, eventsRopidGTFSRoutesRepository: JISEventsRopidGTFSRoutesRepository, databaseConnector: IDatabaseConnector, logger: ILogger);
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* Refresh all JIS event data by inserting or updating the given events and their ROPID-GTFS routes.
|
|
14
|
+
* Existing records are preserved and only incoming events/routes are upserted.
|
|
15
15
|
*
|
|
16
|
-
* @param events
|
|
17
|
-
* @param eventsRopidGTFSRoutes
|
|
16
|
+
* @param events Array of JIS events to insert or update.
|
|
17
|
+
* @param eventsRopidGTFSRoutes Array of corresponding ROPID-GTFS route records to insert or update.
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
upsertAll(events: IJISEvent[], eventsRopidGTFSRoutes: IJISEventsRopidGTFSRoutes[]): Promise<void>;
|
|
20
20
|
}
|
|
@@ -28,29 +28,25 @@ let JISEventsDataService = exports.JISEventsDataService = class JISEventsDataSer
|
|
|
28
28
|
// do nothing
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
31
|
+
* Refresh all JIS event data by inserting or updating the given events and their ROPID-GTFS routes.
|
|
32
|
+
* Existing records are preserved and only incoming events/routes are upserted.
|
|
33
33
|
*
|
|
34
|
-
* @param events
|
|
35
|
-
* @param eventsRopidGTFSRoutes
|
|
34
|
+
* @param events Array of JIS events to insert or update.
|
|
35
|
+
* @param eventsRopidGTFSRoutes Array of corresponding ROPID-GTFS route records to insert or update.
|
|
36
36
|
*/
|
|
37
|
-
async
|
|
37
|
+
async upsertAll(events, eventsRopidGTFSRoutes) {
|
|
38
38
|
const connection = this.databaseConnector.getConnection();
|
|
39
39
|
const transaction = await connection.transaction();
|
|
40
|
-
const saveTime = new Date();
|
|
41
40
|
try {
|
|
42
41
|
if (events.length === 0) {
|
|
43
|
-
|
|
44
|
-
await this.eventsRepository.deleteAndCountAll({ transaction });
|
|
42
|
+
this.logger.info(`${this.constructor.name}.upsertAll: 0 events were imported - keeping existing data`);
|
|
45
43
|
await transaction.commit();
|
|
46
|
-
this.logger.info(`${this.constructor.name}.refreshData: all JIS events were deleted because 0 events were imported`);
|
|
47
44
|
}
|
|
48
45
|
else {
|
|
49
|
-
await this.eventsRepository.
|
|
46
|
+
await this.eventsRepository.upsertAll(events, { transaction });
|
|
50
47
|
await this.eventsRopidGTFSRoutesRepository.upsertAll(eventsRopidGTFSRoutes, { transaction });
|
|
51
|
-
await this.eventsRopidGTFSRoutesRepository.deleteAndCountAllLastUpdatedBefore(saveTime, { transaction });
|
|
52
48
|
await transaction.commit();
|
|
53
|
-
this.logger.info(`${this.constructor.name}.
|
|
49
|
+
this.logger.info(`${this.constructor.name}.upsertAll: ${events.length} JIS events and ` +
|
|
54
50
|
`${eventsRopidGTFSRoutes.length} JIS eventsRopidGTFSRoutes were saved`);
|
|
55
51
|
}
|
|
56
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JISEventsDataService.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/services/JISEventsDataService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gEAAkE;AAClE,6EAA+E;AAC/E,2GAA6G;AAI7G,wEAAqE;AACrE,6EAAwE;AACxE,iEAAwE;AAGjE,IAAM,oBAAoB,kCAA1B,MAAM,oBAAoB;IAC7B,YAEY,gBAAqC,EAErC,+BAAmE,EAC9B,iBAAqC,EAChD,MAAe;QAJzC,qBAAgB,GAAhB,gBAAgB,CAAqB;QAErC,oCAA+B,GAA/B,+BAA+B,CAAoC;QAC9B,sBAAiB,GAAjB,iBAAiB,CAAoB;QAChD,WAAM,GAAN,MAAM,CAAS;QAEjD,aAAa;IACjB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"JISEventsDataService.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/services/JISEventsDataService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gEAAkE;AAClE,6EAA+E;AAC/E,2GAA6G;AAI7G,wEAAqE;AACrE,6EAAwE;AACxE,iEAAwE;AAGjE,IAAM,oBAAoB,kCAA1B,MAAM,oBAAoB;IAC7B,YAEY,gBAAqC,EAErC,+BAAmE,EAC9B,iBAAqC,EAChD,MAAe;QAJzC,qBAAgB,GAAhB,gBAAgB,CAAqB;QAErC,oCAA+B,GAA/B,+BAA+B,CAAoC;QAC9B,sBAAiB,GAAjB,iBAAiB,CAAoB;QAChD,WAAM,GAAN,MAAM,CAAS;QAEjD,aAAa;IACjB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,SAAS,CAAC,MAAmB,EAAE,qBAAkD;QAC1F,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;QAEnD,IAAI;YACA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,4DAA4D,CAAC,CAAC;gBACvG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;aAC9B;iBAAM;gBACH,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC/D,MAAM,IAAI,CAAC,+BAA+B,CAAC,SAAS,CAAC,qBAAqB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC7F,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,eAAe,MAAM,CAAC,MAAM,kBAAkB;oBAClE,GAAG,qBAAqB,CAAC,MAAM,uCAAuC,CAC7E,CAAC;aACL;SACJ;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,GAAG,YAAY,6BAAY;gBAAE,MAAM,GAAG,CAAC;YAC3C,MAAM,IAAI,6BAAY,CAAC,0CAA0C,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SAClG;IACL,CAAC;CACJ,CAAA;+BA1CY,oBAAoB;IADhC,IAAA,qBAAU,GAAE;IAGJ,WAAA,IAAA,iBAAM,EAAC,qCAAiB,CAAC,mBAAmB,CAAC,CAAA;IAE7C,WAAA,IAAA,iBAAM,EAAC,qCAAiB,CAAC,kCAAkC,CAAC,CAAA;IAE5D,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,iBAAiB,CAAC,CAAA;IACnC,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,MAAM,CAAC,CAAA;qCAJC,yCAAmB;QAEJ,uEAAkC;GALtE,oBAAoB,CA0ChC"}
|
|
@@ -33,7 +33,7 @@ let RefreshJISEventsTask = exports.RefreshJISEventsTask = class RefreshJISEvents
|
|
|
33
33
|
async execute(data) {
|
|
34
34
|
const transformedData = this.eventsTransformation.transformArray(data);
|
|
35
35
|
const { events, eventsRopidGTFSRoutes } = this.getEntitiesFromTransformationResult(transformedData);
|
|
36
|
-
await this.eventsDataService.
|
|
36
|
+
await this.eventsDataService.upsertAll(events, eventsRopidGTFSRoutes);
|
|
37
37
|
}
|
|
38
38
|
getEntitiesFromTransformationResult(transformedData) {
|
|
39
39
|
const eventEntities = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefreshJISEventsTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/jis/workers/tasks/RefreshJISEventsTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mEAAkE;AAClE,8EAA6E;AAC7E,2FAA0F;AAE1F,4GAA+E;AAE/E,iHAA8G;AAC9G,mFAAkF;AAClF,iEAAwE;AACxE,4CAA+C;AAGxC,IAAM,oBAAoB,kCAA1B,MAAM,oBAAqB,SAAQ,+CAAmC;IAKzE,YAEI,iBAA+C,EAE/C,oBAAqD;QAErD,KAAK,CAAC,2BAAe,CAAC,WAAW,EAAE,CAAC,CAAC;QAJ7B,sBAAiB,GAAjB,iBAAiB,CAAsB;QAEvC,yBAAoB,GAApB,oBAAoB,CAAyB;QARzC,WAAM,GAAG,IAAI,uCAAmB,CAAC,yBAAyB,EAAE,yCAAmB,CAAC,CAAC;QACjF,cAAS,GAAG,kBAAkB,CAAC;QAC/B,aAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;IASjD,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,IAAiB;QACrC,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC,mCAAmC,CAAC,eAAe,CAAC,CAAC;QACpG,MAAM,IAAI,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"RefreshJISEventsTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/jis/workers/tasks/RefreshJISEventsTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mEAAkE;AAClE,8EAA6E;AAC7E,2FAA0F;AAE1F,4GAA+E;AAE/E,iHAA8G;AAC9G,mFAAkF;AAClF,iEAAwE;AACxE,4CAA+C;AAGxC,IAAM,oBAAoB,kCAA1B,MAAM,oBAAqB,SAAQ,+CAAmC;IAKzE,YAEI,iBAA+C,EAE/C,oBAAqD;QAErD,KAAK,CAAC,2BAAe,CAAC,WAAW,EAAE,CAAC,CAAC;QAJ7B,sBAAiB,GAAjB,iBAAiB,CAAsB;QAEvC,yBAAoB,GAApB,oBAAoB,CAAyB;QARzC,WAAM,GAAG,IAAI,uCAAmB,CAAC,yBAAyB,EAAE,yCAAmB,CAAC,CAAC;QACjF,cAAS,GAAG,kBAAkB,CAAC;QAC/B,aAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;IASjD,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,IAAiB;QACrC,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC,mCAAmC,CAAC,eAAe,CAAC,CAAC;QACpG,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC1E,CAAC;IAEO,mCAAmC,CAAC,eAAsE;QAC9G,MAAM,aAAa,GAAqB,EAAE,CAAC;QAC3C,MAAM,6BAA6B,GAAgC,EAAE,CAAC;QACtE,KAAK,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,eAAe,EAAE;YAC5D,IAAI,qBAAqB,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpC,SAAS;aACZ;YACD,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,6BAA6B,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;SAChE;QACD,OAAO;YACH,MAAM,EAAE,aAAa;YACrB,qBAAqB,EAAE,6BAA6B;SACvD,CAAC;IACN,CAAC;CACJ,CAAA;+BAnCY,oBAAoB;IADhC,IAAA,qBAAU,GAAE;IAOJ,WAAA,IAAA,iBAAM,EAAC,qCAAiB,CAAC,oBAAoB,CAAC,CAAA;IAE9C,WAAA,IAAA,iBAAM,EAAC,qCAAiB,CAAC,uBAAuB,CAAC,CAAA;qCADvB,2CAAoB;QAEjB,iDAAuB;GAThD,oBAAoB,CAmChC"}
|
package/docs/openapi-output.yaml
CHANGED
|
@@ -1205,7 +1205,7 @@ paths:
|
|
|
1205
1205
|
- headsign
|
|
1206
1206
|
- id
|
|
1207
1207
|
properties:
|
|
1208
|
-
headsign:
|
|
1208
|
+
headsign:
|
|
1209
1209
|
type: string
|
|
1210
1210
|
example: "Benešov u Prahy"
|
|
1211
1211
|
nullable: false
|
|
@@ -1237,7 +1237,7 @@ paths:
|
|
|
1237
1237
|
- "inline"
|
|
1238
1238
|
- "general"
|
|
1239
1239
|
nullable: false
|
|
1240
|
-
|
|
1240
|
+
|
|
1241
1241
|
"401":
|
|
1242
1242
|
$ref: "#/components/responses/UnauthorizedError"
|
|
1243
1243
|
"404":
|
|
@@ -1337,12 +1337,12 @@ paths:
|
|
|
1337
1337
|
/v3/pid/departurepresets:
|
|
1338
1338
|
get:
|
|
1339
1339
|
summary: Get ROPID departures presets linked with gtfs stops
|
|
1340
|
-
tags:
|
|
1340
|
+
tags:
|
|
1341
1341
|
- 🚏 PID Departure Boards (v3) - internal
|
|
1342
|
-
|
|
1342
|
+
|
|
1343
1343
|
responses:
|
|
1344
1344
|
200:
|
|
1345
|
-
|
|
1345
|
+
|
|
1346
1346
|
description: A list of ROPID departures presets linked with gtfs stops
|
|
1347
1347
|
headers:
|
|
1348
1348
|
Cache-Control:
|
|
@@ -2467,7 +2467,7 @@ components:
|
|
|
2467
2467
|
enum:
|
|
2468
2468
|
- inline
|
|
2469
2469
|
- general
|
|
2470
|
-
description: Type of display on board by the intended form of presentation (where applicable). Enumerating `inline` (to be presented along with departures, usually in a marquee), `general` (to be displayed full screen instead of departures)
|
|
2470
|
+
description: Type of display on board by the intended form of presentation (where applicable). Enumerating `inline` (to be presented along with departures, usually in a marquee), `general` (to be displayed full screen instead of departures).
|
|
2471
2471
|
example: "inline"
|
|
2472
2472
|
|
|
2473
2473
|
required:
|