@golemio/parkings 1.22.7 → 1.22.8-dev.2049894987
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/repositories/ParkingsLocationRepository.d.ts +5 -4
- package/dist/integration-engine/repositories/ParkingsLocationRepository.js +18 -10
- package/dist/integration-engine/repositories/ParkingsLocationRepository.js.map +1 -1
- package/dist/integration-engine/transformations/TskParkingSectionLevelTransformation.d.ts +1 -1
- package/dist/integration-engine/transformations/TskParkingSectionLevelTransformation.js +1 -1
- package/dist/integration-engine/transformations/TskParkingSectionLevelTransformation.js.map +1 -1
- package/dist/integration-engine/workers/tasks/SaveTskParkingSectionLevelTask.d.ts +4 -4
- package/dist/integration-engine/workers/tasks/SaveTskParkingSectionLevelTask.js +3 -2
- package/dist/integration-engine/workers/tasks/SaveTskParkingSectionLevelTask.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { IModel, PostgresModel } from "@golemio/core/dist/integration-engine/models";
|
|
2
1
|
import { IParking } from "../ParkingInterface";
|
|
3
2
|
import { IParkingLocation } from "../../schema-definitions/models/interfaces/IParkingLocation";
|
|
4
|
-
import {
|
|
3
|
+
import { IModel, PostgresModel } from "@golemio/core/dist/integration-engine/models";
|
|
4
|
+
import { Transaction, WhereOptions } from "@golemio/core/dist/shared/sequelize";
|
|
5
5
|
export declare class ParkingsLocationRepository extends PostgresModel implements IModel {
|
|
6
6
|
constructor();
|
|
7
7
|
GetOne: (id: string) => Promise<IParking | null>;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
saveTskParkingLocations(parkingLocations: IParkingLocation[], includeDisabled: boolean, dataProvider?: string): Promise<void>;
|
|
9
|
+
saveWithoutAddress: (parkingLocations: IParkingLocation[], source: string, dataProvider?: string, condition?: WhereOptions) => Promise<void>;
|
|
10
|
+
markInactiveParkingsLocations(activeIds: string[], source: string, transaction: Transaction, dataProvider?: string, condition?: WhereOptions): Promise<void>;
|
|
10
11
|
findWithOutdatedAddress(batchSize: number, updateInterval: number): Promise<IParkingLocation[]>;
|
|
11
12
|
findWithoutAddress(): Promise<IParkingLocation[]>;
|
|
12
13
|
getParkingAttributesToUpdate(): string[];
|
|
@@ -10,13 +10,14 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.ParkingsLocationRepository = void 0;
|
|
13
|
+
const SourceEnum_1 = require("../../helpers/constants/SourceEnum");
|
|
14
|
+
const _sch_1 = require("../../schema-definitions");
|
|
13
15
|
const ParkingLocationsModel_1 = require("../../schema-definitions/models/ParkingLocationsModel");
|
|
14
16
|
const models_1 = require("@golemio/core/dist/integration-engine/models");
|
|
15
|
-
const _sch_1 = require("../../schema-definitions");
|
|
16
|
-
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
17
17
|
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
18
|
-
const
|
|
18
|
+
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
19
19
|
const sequelize_1 = require("@golemio/core/dist/shared/sequelize");
|
|
20
|
+
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
20
21
|
let ParkingsLocationRepository = exports.ParkingsLocationRepository = class ParkingsLocationRepository extends models_1.PostgresModel {
|
|
21
22
|
constructor() {
|
|
22
23
|
super(_sch_1.Parkings.location.name + "Model", {
|
|
@@ -37,12 +38,12 @@ let ParkingsLocationRepository = exports.ParkingsLocationRepository = class Park
|
|
|
37
38
|
throw new golemio_errors_1.GeneralError("Database error", "ParkingsModel", err, 500);
|
|
38
39
|
}
|
|
39
40
|
};
|
|
40
|
-
this.saveWithoutAddress = async (parkingLocations, source, dataProvider) => {
|
|
41
|
+
this.saveWithoutAddress = async (parkingLocations, source, dataProvider, condition) => {
|
|
41
42
|
const transaction = await this.sequelizeModel.sequelize.transaction();
|
|
42
43
|
try {
|
|
43
44
|
await this.bulkSave(parkingLocations, this.getParkingAttributesToUpdate(), false, false, transaction);
|
|
44
45
|
const activeIds = parkingLocations.map((parkingLocations) => parkingLocations.id);
|
|
45
|
-
await this.markInactiveParkingsLocations(activeIds, source, transaction, dataProvider);
|
|
46
|
+
await this.markInactiveParkingsLocations(activeIds, source, transaction, dataProvider, condition);
|
|
46
47
|
await transaction.commit();
|
|
47
48
|
}
|
|
48
49
|
catch (err) {
|
|
@@ -51,17 +52,24 @@ let ParkingsLocationRepository = exports.ParkingsLocationRepository = class Park
|
|
|
51
52
|
}
|
|
52
53
|
};
|
|
53
54
|
}
|
|
54
|
-
async
|
|
55
|
+
async saveTskParkingLocations(parkingLocations, includeDisabled, dataProvider) {
|
|
56
|
+
const condition = includeDisabled
|
|
57
|
+
? { special_access: { [sequelize_1.Op.contains]: ["disabled"] } }
|
|
58
|
+
: {
|
|
59
|
+
[sequelize_1.Op.or]: [{ [sequelize_1.Op.not]: { special_access: { [sequelize_1.Op.contains]: ["disabled"] } } }, { special_access: null }],
|
|
60
|
+
};
|
|
61
|
+
await this.saveWithoutAddress(parkingLocations, SourceEnum_1.SourceEnum.TSK_V2, dataProvider, condition);
|
|
62
|
+
}
|
|
63
|
+
async markInactiveParkingsLocations(activeIds, source, transaction, dataProvider, condition) {
|
|
55
64
|
await this.update({
|
|
56
65
|
active: false,
|
|
57
66
|
}, {
|
|
58
67
|
where: {
|
|
59
68
|
source,
|
|
60
|
-
...(dataProvider && { data_provider: dataProvider }),
|
|
61
69
|
active: true,
|
|
62
|
-
id: {
|
|
63
|
-
|
|
64
|
-
|
|
70
|
+
id: { [sequelize_1.Op.notIn]: activeIds },
|
|
71
|
+
...(dataProvider && { data_provider: dataProvider }),
|
|
72
|
+
...condition,
|
|
65
73
|
},
|
|
66
74
|
transaction,
|
|
67
75
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParkingsLocationRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/repositories/ParkingsLocationRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iGAA0E;AAC1E,yEAAqF;AACrF,
|
|
1
|
+
{"version":3,"file":"ParkingsLocationRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/repositories/ParkingsLocationRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { IParkingLocation } from "../ParkingInterface";
|
|
|
2
2
|
import { ITskParkingSectionLevel } from "../../schema-definitions/datasources/interfaces/ITskParkingSectionLevel";
|
|
3
3
|
import { AbstractTransformation } from "@golemio/core/dist/helpers/transformation/AbstractTransformation";
|
|
4
4
|
export declare class TskParkingSectionLevelTransformation extends AbstractTransformation<ITskParkingSectionLevel, IParkingLocation> {
|
|
5
|
-
private specialAccess?;
|
|
5
|
+
private readonly specialAccess?;
|
|
6
6
|
name: string;
|
|
7
7
|
constructor(specialAccess?: string | undefined);
|
|
8
8
|
protected transformInternal: (zone: ITskParkingSectionLevel) => IParkingLocation;
|
|
@@ -26,7 +26,7 @@ let TskParkingSectionLevelTransformation = exports.TskParkingSectionLevelTransfo
|
|
|
26
26
|
if (this.specialAccess) {
|
|
27
27
|
specialAccessArray.push(this.specialAccess);
|
|
28
28
|
}
|
|
29
|
-
if (zone.sectionItemCode
|
|
29
|
+
if (zone.sectionItemCode?.includes("BUS")) {
|
|
30
30
|
specialAccessArray.push("bus");
|
|
31
31
|
}
|
|
32
32
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TskParkingSectionLevelTransformation.js","sourceRoot":"","sources":["../../../src/integration-engine/transformations/TskParkingSectionLevelTransformation.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mEAA2D;AAC3D,4DAA8D;AAG9D,6GAA0G;AAE1G,iEAAgE;AAChE,0CAAgD;AAGzC,IAAM,oCAAoC,kDAA1C,MAAM,oCAAqC,SAAQ,+CAAiE;IAGvH,
|
|
1
|
+
{"version":3,"file":"TskParkingSectionLevelTransformation.js","sourceRoot":"","sources":["../../../src/integration-engine/transformations/TskParkingSectionLevelTransformation.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mEAA2D;AAC3D,4DAA8D;AAG9D,6GAA0G;AAE1G,iEAAgE;AAChE,0CAAgD;AAGzC,IAAM,oCAAoC,kDAA1C,MAAM,oCAAqC,SAAQ,+CAAiE;IAGvH,YAA6B,aAAsB;QAC/C,KAAK,EAAE,CAAC;QADiB,kBAAa,GAAb,aAAa,CAAS;QAFnD,SAAI,GAAW,sCAAsC,CAAC;QAM5C,sBAAiB,GAAG,CAAC,IAA6B,EAAoB,EAAE;YAC9E,MAAM,QAAQ,GAAG,IAAA,kBAAY,EAAC,IAAI,CAAC,SAAS,CAAoB,CAAC;YACjE,MAAM,kBAAkB,GAAG,EAAE,CAAC;YAE9B,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aAC/C;YACD,IAAI,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACvC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAClC;YAED,OAAO;gBACH,EAAE,EAAE,uBAAU,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa;gBAChD,aAAa,EAAE,kBAAkB;gBACjC,QAAQ;gBACR,QAAQ,EAAE,IAAA,iCAAiB,EAAC,QAAQ,CAAC;gBACrC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,MAAM,EAAE,uBAAU,CAAC,MAAM;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,cAAc,EAAE,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;aACjF,CAAC;QACN,CAAC,CAAC;IAvBF,CAAC;CAwBJ,CAAA;+CA7BY,oCAAoC;IADhD,IAAA,qBAAU,GAAE;;GACA,oCAAoC,CA6BhD"}
|
|
@@ -6,10 +6,10 @@ import { AbstractEmptyTask } from "@golemio/core/dist/integration-engine";
|
|
|
6
6
|
import { DataSource } from "@golemio/core/dist/integration-engine/datasources";
|
|
7
7
|
export declare class SaveTskParkingSectionLevelTask extends AbstractEmptyTask {
|
|
8
8
|
readonly queueName: string;
|
|
9
|
-
private dataSource;
|
|
10
|
-
private transformation;
|
|
11
|
-
private parkingsLocationRepository;
|
|
12
|
-
private config;
|
|
9
|
+
private readonly dataSource;
|
|
10
|
+
private readonly transformation;
|
|
11
|
+
private readonly parkingsLocationRepository;
|
|
12
|
+
private readonly config;
|
|
13
13
|
constructor(queueName: string, queuePrefix: string, dataSource: DataSource<ITskParkingSectionLevel[]>, transformation: TskParkingSectionLevelTransformation, parkingsLocationRepository: ParkingsLocationRepository, config: ISimpleConfig);
|
|
14
14
|
execute(): Promise<void>;
|
|
15
15
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SaveTskParkingSectionLevelTask = void 0;
|
|
4
|
-
const SourceEnum_1 = require("../../../helpers/constants/SourceEnum");
|
|
5
4
|
const TskParkingFilter_1 = require("../../transformations/TskParkingFilter");
|
|
6
5
|
const UpdateAddressWorker_1 = require("../UpdateAddressWorker");
|
|
7
6
|
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
|
|
@@ -20,7 +19,9 @@ class SaveTskParkingSectionLevelTask extends integration_engine_1.AbstractEmptyT
|
|
|
20
19
|
const sourceData = await this.dataSource.getAll();
|
|
21
20
|
const filteredData = sourceData.filter((parking) => TskParkingFilter_1.TskParkingFilter.isWithinValidityPeriod(parking));
|
|
22
21
|
const parkingLocations = this.transformation.transformArray(filteredData);
|
|
23
|
-
|
|
22
|
+
// The task runs twice with different values for the "specialAccess" transformation parameter
|
|
23
|
+
const includeDisabled = !!this.transformation["specialAccess"];
|
|
24
|
+
await this.parkingsLocationRepository.saveTskParkingLocations(parkingLocations, includeDisabled);
|
|
24
25
|
const exchange = this.config.getValue("env.RABBIT_EXCHANGE_NAME");
|
|
25
26
|
await integration_engine_1.QueueManager.sendMessageToExchange(exchange + "." + UpdateAddressWorker_1.UpdateAddressWorker.workerName.toLowerCase(), "updateMissingParkingsLocationAddresses", {});
|
|
26
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SaveTskParkingSectionLevelTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/SaveTskParkingSectionLevelTask.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"SaveTskParkingSectionLevelTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/SaveTskParkingSectionLevelTask.ts"],"names":[],"mappings":";;;AACA,6EAAwE;AAExE,gEAAsE;AAGtE,8EAAwF;AAExF,6EAA8F;AAE9F,MAAa,8BAA+B,SAAQ,sCAAiB;IACjE,YACoB,SAAiB,EACjC,WAAmB,EACF,UAAiD,EACjD,cAAoD,EACpD,0BAAsD,EACtD,MAAqB;QAEtC,KAAK,CAAC,WAAW,CAAC,CAAC;QAPH,cAAS,GAAT,SAAS,CAAQ;QAEhB,eAAU,GAAV,UAAU,CAAuC;QACjD,mBAAc,GAAd,cAAc,CAAsC;QACpD,+BAA0B,GAA1B,0BAA0B,CAA4B;QACtD,WAAM,GAAN,MAAM,CAAe;IAG1C,CAAC;IAEM,KAAK,CAAC,OAAO;QAChB,IAAI;YACA,MAAM,UAAU,GAA8B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC7E,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,mCAAgB,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;YACtG,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAE1E,6FAA6F;YAC7F,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;YAC/D,MAAM,IAAI,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;YAEjG,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAS,0BAA0B,CAAC,CAAC;YAC1E,MAAM,iCAAY,CAAC,qBAAqB,CACpC,QAAQ,GAAG,GAAG,GAAG,yCAAmB,CAAC,UAAU,CAAC,WAAW,EAAE,EAC7D,wCAAwC,EACxC,EAAE,CACL,CAAC;SACL;QAAC,OAAO,KAAK,EAAE;YACZ,IAAI,KAAK,YAAY,qCAAoB,EAAE;gBACvC,MAAM,KAAK,CAAC;aACf;YACD,MAAM,IAAI,6BAAY,CAAC,+CAA+C,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACzG;IACL,CAAC;CACJ;AAnCD,wEAmCC"}
|