@golemio/pid 3.15.3-dev.1830712365 → 3.15.3-dev.1840989210
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/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"}
|