@golemio/parkings 1.1.1-dev.567930847 → 1.1.1-dev.570249156
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/db/example/clear_test_data.sql +5 -0
- package/dist/integration-engine/ZtpParkingZones/ZtpParkingZonesDataSourceFactory.d.ts +5 -0
- package/dist/integration-engine/ZtpParkingZones/ZtpParkingZonesDataSourceFactory.js +19 -0
- package/dist/integration-engine/ZtpParkingZones/ZtpParkingZonesDataSourceFactory.js.map +1 -0
- package/dist/integration-engine/ZtpParkingZones/ZtpParkingZonesTransformation.d.ts +10 -0
- package/dist/integration-engine/ZtpParkingZones/ZtpParkingZonesTransformation.js +50 -0
- package/dist/integration-engine/ZtpParkingZones/ZtpParkingZonesTransformation.js.map +1 -0
- package/dist/integration-engine/ZtpParkingZones/ZtpParkingZonesWorker.d.ts +8 -0
- package/dist/integration-engine/ZtpParkingZones/ZtpParkingZonesWorker.js +42 -0
- package/dist/integration-engine/ZtpParkingZones/ZtpParkingZonesWorker.js.map +1 -0
- package/dist/integration-engine/index.d.ts +3 -0
- package/dist/integration-engine/index.js +3 -0
- package/dist/integration-engine/index.js.map +1 -1
- package/dist/integration-engine/models/ParkingsModel.d.ts +4 -0
- package/dist/integration-engine/models/ParkingsModel.js +17 -0
- package/dist/integration-engine/models/ParkingsModel.js.map +1 -0
- package/dist/integration-engine/queueDefinitions.js +10 -0
- package/dist/integration-engine/queueDefinitions.js.map +1 -1
- package/dist/schema-definitions/datasources/IZtpParkingJsonFeature.d.ts +20 -0
- package/dist/schema-definitions/datasources/IZtpParkingJsonFeature.js +3 -0
- package/dist/schema-definitions/datasources/IZtpParkingJsonFeature.js.map +1 -0
- package/dist/schema-definitions/datasources/ZtpParkingsJsonSchema.d.ts +13 -0
- package/dist/schema-definitions/datasources/ZtpParkingsJsonSchema.js +109 -0
- package/dist/schema-definitions/datasources/ZtpParkingsJsonSchema.js.map +1 -0
- package/docs/implementation-documentation.md +17 -1
- package/package.json +1 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZtpParkingZonesDataSourceFactory = void 0;
|
|
4
|
+
const datasources_1 = require("@golemio/core/dist/integration-engine/datasources");
|
|
5
|
+
const config_1 = require("@golemio/core/dist/integration-engine/config");
|
|
6
|
+
const ZtpParkingsJsonSchema_1 = require("../../schema-definitions/datasources/ZtpParkingsJsonSchema");
|
|
7
|
+
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
8
|
+
class ZtpParkingZonesDataSourceFactory {
|
|
9
|
+
static getDataSource() {
|
|
10
|
+
return new datasources_1.DataSource(ZtpParkingsJsonSchema_1.ZtpParkingsJsonSchema.name, new datasources_1.HTTPProtocolStrategy({
|
|
11
|
+
headers: {},
|
|
12
|
+
method: "GET",
|
|
13
|
+
url: ZtpParkingZonesDataSourceFactory.API_URL,
|
|
14
|
+
}), new datasources_1.JSONDataTypeStrategy({ resultsPath: "" }), new golemio_validator_1.JSONSchemaValidator(ZtpParkingsJsonSchema_1.ZtpParkingsJsonSchema.name, ZtpParkingsJsonSchema_1.ZtpParkingsJsonSchema.jsonSchema));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.ZtpParkingZonesDataSourceFactory = ZtpParkingZonesDataSourceFactory;
|
|
18
|
+
ZtpParkingZonesDataSourceFactory.API_URL = config_1.config.datasources.ZtpParkingsApiUrl;
|
|
19
|
+
//# sourceMappingURL=ZtpParkingZonesDataSourceFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZtpParkingZonesDataSourceFactory.js","sourceRoot":"","sources":["../../../src/integration-engine/ZtpParkingZones/ZtpParkingZonesDataSourceFactory.ts"],"names":[],"mappings":";;;AAAA,mFAA2H;AAC3H,yEAAsE;AACtE,sGAA+E;AAC/E,mFAAkF;AAElF,MAAa,gCAAgC;IAGlC,MAAM,CAAC,aAAa;QACvB,OAAO,IAAI,wBAAU,CACjB,6CAAqB,CAAC,IAAI,EAC1B,IAAI,kCAAoB,CAAC;YACrB,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,gCAAgC,CAAC,OAAO;SAChD,CAAC,EACF,IAAI,kCAAoB,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAC7C,IAAI,uCAAmB,CAAC,6CAAqB,CAAC,IAAI,EAAE,6CAAqB,CAAC,UAAU,CAAC,CACxF,CAAC;IACN,CAAC;;AAdL,4EAeC;AAd0B,wCAAO,GAAG,eAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseTransformation, ITransformation } from "@golemio/core/dist/integration-engine/transformations";
|
|
2
|
+
import { IZtpParkingJsonFeature } from "../../schema-definitions/datasources/IZtpParkingJsonFeature";
|
|
3
|
+
import { IParking } from "../ParkingInterface";
|
|
4
|
+
export declare class ZtpParkingZonesTransformation extends BaseTransformation implements ITransformation {
|
|
5
|
+
name: string;
|
|
6
|
+
transformationDate: Date;
|
|
7
|
+
constructor(transformationDate: Date);
|
|
8
|
+
transform: (data: IZtpParkingJsonFeature[]) => Promise<IParking[]>;
|
|
9
|
+
transformElement: (element: IZtpParkingJsonFeature) => Promise<IParking>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ZtpParkingZonesTransformation = void 0;
|
|
13
|
+
const transformations_1 = require("@golemio/core/dist/integration-engine/transformations");
|
|
14
|
+
const GeodataHelper_1 = require("../helpers/GeodataHelper");
|
|
15
|
+
class ZtpParkingZonesTransformation extends transformations_1.BaseTransformation {
|
|
16
|
+
constructor(transformationDate) {
|
|
17
|
+
super();
|
|
18
|
+
this.transform = (data) => __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
let parkings = [];
|
|
20
|
+
for (const element of data) {
|
|
21
|
+
const parking = yield this.transformElement(element);
|
|
22
|
+
parkings.push(parking);
|
|
23
|
+
}
|
|
24
|
+
return parkings;
|
|
25
|
+
});
|
|
26
|
+
this.transformElement = (element) => __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const address = yield (0, GeodataHelper_1.getAddressFromPoint)(element.geometry);
|
|
28
|
+
let parkingName = "Parkoviště ZTP";
|
|
29
|
+
if (typeof address != "undefined") {
|
|
30
|
+
parkingName = `Parkoviště ZTP ${address.street_address}, ${address.address_region}`;
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
source: "IPR ZTP",
|
|
34
|
+
source_id: `ztp-${element.properties.OBJECTID.toString()}`,
|
|
35
|
+
data_provider: "opendata.iprpraha.cz",
|
|
36
|
+
date_modified: `${this.transformationDate.getTime()}`,
|
|
37
|
+
location: element.geometry,
|
|
38
|
+
name: parkingName,
|
|
39
|
+
total_spot_number: element.properties.POCET_PS,
|
|
40
|
+
parking_type: "disabled_parking",
|
|
41
|
+
centroid: element.geometry,
|
|
42
|
+
address: address,
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
this.name = "ZtpParkings";
|
|
46
|
+
this.transformationDate = transformationDate;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.ZtpParkingZonesTransformation = ZtpParkingZonesTransformation;
|
|
50
|
+
//# sourceMappingURL=ZtpParkingZonesTransformation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZtpParkingZonesTransformation.js","sourceRoot":"","sources":["../../../src/integration-engine/ZtpParkingZones/ZtpParkingZonesTransformation.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2FAA4G;AAG5G,4DAAgE;AAEhE,MAAa,6BAA8B,SAAQ,oCAAkB;IAIjE,YAAY,kBAAwB;QAChC,KAAK,EAAE,CAAC;QAKZ,cAAS,GAAG,CAAO,IAA8B,EAAuB,EAAE;YACtE,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;gBACxB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBACrD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC1B;YACD,OAAO,QAAQ,CAAC;QACpB,CAAC,CAAA,CAAC;QAEF,qBAAgB,GAAG,CAAO,OAA+B,EAAqB,EAAE;YAC5E,MAAM,OAAO,GAAG,MAAM,IAAA,mCAAmB,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE5D,IAAI,WAAW,GAAG,gBAAgB,CAAC;YACnC,IAAI,OAAO,OAAO,IAAI,WAAW,EAAE;gBAC/B,WAAW,GAAG,kBAAkB,OAAO,CAAC,cAAc,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC;aACvF;YAED,OAAO;gBACH,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBAC1D,aAAa,EAAE,sBAAsB;gBACrC,aAAa,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE;gBACrD,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,IAAI,EAAE,WAAW;gBACjB,iBAAiB,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ;gBAC9C,YAAY,EAAE,kBAAkB;gBAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,OAAO,EAAE,OAAO;aACnB,CAAC;QACN,CAAC,CAAA,CAAC;QAjCE,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IACjD,CAAC;CAgCJ;AAxCD,sEAwCC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseWorker } from "@golemio/core/dist/integration-engine/workers";
|
|
2
|
+
export declare class ZtpParkingZonesWorker extends BaseWorker {
|
|
3
|
+
private dataSource;
|
|
4
|
+
private transformer;
|
|
5
|
+
private parkingRepository;
|
|
6
|
+
constructor();
|
|
7
|
+
updateZtpParkings: () => Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
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.ZtpParkingZonesWorker = void 0;
|
|
13
|
+
const workers_1 = require("@golemio/core/dist/integration-engine/workers");
|
|
14
|
+
const ZtpParkingZonesDataSourceFactory_1 = require("./ZtpParkingZonesDataSourceFactory");
|
|
15
|
+
const ZtpParkingZonesTransformation_1 = require("./ZtpParkingZonesTransformation");
|
|
16
|
+
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
17
|
+
const ParkingsModel_1 = require("../models/ParkingsModel");
|
|
18
|
+
class ZtpParkingZonesWorker extends workers_1.BaseWorker {
|
|
19
|
+
constructor() {
|
|
20
|
+
super();
|
|
21
|
+
this.updateZtpParkings = () => __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
try {
|
|
23
|
+
const data = yield this.dataSource.getAll();
|
|
24
|
+
const transformedData = yield this.transformer.transform(data.features);
|
|
25
|
+
yield this.parkingRepository.save(transformedData);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
if (err instanceof golemio_errors_1.CustomError) {
|
|
29
|
+
throw err;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
throw new golemio_errors_1.CustomError(`Error while refreshing ZTP Parking data: ${err.message}`, true, this.constructor.name, undefined, err);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
this.dataSource = ZtpParkingZonesDataSourceFactory_1.ZtpParkingZonesDataSourceFactory.getDataSource();
|
|
37
|
+
this.transformer = new ZtpParkingZonesTransformation_1.ZtpParkingZonesTransformation(new Date());
|
|
38
|
+
this.parkingRepository = new ParkingsModel_1.ParkingsModel();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.ZtpParkingZonesWorker = ZtpParkingZonesWorker;
|
|
42
|
+
//# sourceMappingURL=ZtpParkingZonesWorker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZtpParkingZonesWorker.js","sourceRoot":"","sources":["../../../src/integration-engine/ZtpParkingZones/ZtpParkingZonesWorker.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2EAA2E;AAE3E,yFAAwG;AACxG,mFAAkG;AAElG,6EAAuE;AACvE,2DAAyD;AAEzD,MAAa,qBAAsB,SAAQ,oBAAU;IAKjD;QACI,KAAK,EAAE,CAAC;QAML,sBAAiB,GAAG,GAAwB,EAAE;YACjD,IAAI;gBACA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC5C,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACxE,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACtD;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,GAAG,YAAY,4BAAW,EAAE;oBAC5B,MAAM,GAAG,CAAC;iBACb;qBAAM;oBACH,MAAM,IAAI,4BAAW,CACjB,4CAA4C,GAAG,CAAC,OAAO,EAAE,EACzD,IAAI,EACJ,IAAI,CAAC,WAAW,CAAC,IAAI,EACrB,SAAS,EACT,GAAG,CACN,CAAC;iBACL;aACJ;QACL,CAAC,CAAA,CAAC;QAvBE,IAAI,CAAC,UAAU,GAAG,mEAAgC,CAAC,aAAa,EAAE,CAAC;QACnE,IAAI,CAAC,WAAW,GAAG,IAAI,6DAA6B,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,iBAAiB,GAAG,IAAI,6BAAa,EAAE,CAAC;IACjD,CAAC;CAqBJ;AA/BD,sDA+BC"}
|
|
@@ -3,3 +3,6 @@ export * from "./ParkingsWorker";
|
|
|
3
3
|
export * from "./KoridParkingDataTransformation";
|
|
4
4
|
export * from "./KoridParkingConfigTransformation";
|
|
5
5
|
export * from "./queueDefinitions";
|
|
6
|
+
export * from "./ZtpParkingZones/ZtpParkingZonesDataSourceFactory";
|
|
7
|
+
export * from "./ZtpParkingZones/ZtpParkingZonesTransformation";
|
|
8
|
+
export * from "./ZtpParkingZones/ZtpParkingZonesWorker";
|
|
@@ -20,4 +20,7 @@ __exportStar(require("./ParkingsWorker"), exports);
|
|
|
20
20
|
__exportStar(require("./KoridParkingDataTransformation"), exports);
|
|
21
21
|
__exportStar(require("./KoridParkingConfigTransformation"), exports);
|
|
22
22
|
__exportStar(require("./queueDefinitions"), exports);
|
|
23
|
+
__exportStar(require("./ZtpParkingZones/ZtpParkingZonesDataSourceFactory"), exports);
|
|
24
|
+
__exportStar(require("./ZtpParkingZones/ZtpParkingZonesTransformation"), exports);
|
|
25
|
+
__exportStar(require("./ZtpParkingZones/ZtpParkingZonesWorker"), exports);
|
|
23
26
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integration-engine/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iBAAiB;AACjB,2DAAyC;AACzC,mDAAiC;AACjC,mEAAiD;AACjD,qEAAmD;AACnD,qDAAmC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integration-engine/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iBAAiB;AACjB,2DAAyC;AACzC,mDAAiC;AACjC,mEAAiD;AACjD,qEAAmD;AACnD,qDAAmC;AACnC,qFAAmE;AACnE,kFAAgE;AAChE,0EAAwD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParkingsModel = void 0;
|
|
4
|
+
const models_1 = require("@golemio/core/dist/integration-engine/models");
|
|
5
|
+
const _sch_1 = require("../../schema-definitions");
|
|
6
|
+
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
7
|
+
class ParkingsModel extends models_1.PostgresModel {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(_sch_1.Parkings.name + "Model", {
|
|
10
|
+
outputSequelizeAttributes: _sch_1.Parkings.pg.outputSequelizeAttributes,
|
|
11
|
+
pgTableName: _sch_1.Parkings.pg.pgTableName,
|
|
12
|
+
savingType: "insertOrUpdate",
|
|
13
|
+
}, new golemio_validator_1.Validator(_sch_1.Parkings.name + "PgModelValidator", _sch_1.Parkings.pg.outputMongooseSchemaObject));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.ParkingsModel = ParkingsModel;
|
|
17
|
+
//# sourceMappingURL=ParkingsModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParkingsModel.js","sourceRoot":"","sources":["../../../src/integration-engine/models/ParkingsModel.ts"],"names":[],"mappings":";;;AAAA,yEAAqF;AACrF,mDAAgC;AAChC,mFAAwE;AAExE,MAAa,aAAc,SAAQ,sBAAa;IAC5C;QACI,KAAK,CACD,eAAQ,CAAC,IAAI,GAAG,OAAO,EACvB;YACI,yBAAyB,EAAE,eAAQ,CAAC,EAAE,CAAC,yBAAyB;YAChE,WAAW,EAAE,eAAQ,CAAC,EAAE,CAAC,WAAW;YACpC,UAAU,EAAE,gBAAgB;SAC/B,EACD,IAAI,6BAAS,CAAC,eAAQ,CAAC,IAAI,GAAG,kBAAkB,EAAE,eAAQ,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAC5F,CAAC;IACN,CAAC;CACJ;AAZD,sCAYC"}
|
|
@@ -4,6 +4,7 @@ exports.queueDefinitions = void 0;
|
|
|
4
4
|
const config_1 = require("@golemio/core/dist/integration-engine/config");
|
|
5
5
|
const index_1 = require("../schema-definitions/index");
|
|
6
6
|
const ParkingsWorker_1 = require("./ParkingsWorker");
|
|
7
|
+
const ZtpParkingZonesWorker_1 = require("./ZtpParkingZones/ZtpParkingZonesWorker");
|
|
7
8
|
const queueDefinitions = [
|
|
8
9
|
{
|
|
9
10
|
name: index_1.Parkings.name,
|
|
@@ -93,6 +94,15 @@ const queueDefinitions = [
|
|
|
93
94
|
worker: ParkingsWorker_1.ParkingsWorker,
|
|
94
95
|
workerMethod: "saveParkingLotsMeasurementsPrague",
|
|
95
96
|
},
|
|
97
|
+
{
|
|
98
|
+
name: "updateZtpParkings",
|
|
99
|
+
options: {
|
|
100
|
+
deadLetterExchange: config_1.config.RABBIT_EXCHANGE_NAME,
|
|
101
|
+
deadLetterRoutingKey: "dead",
|
|
102
|
+
},
|
|
103
|
+
worker: ZtpParkingZonesWorker_1.ZtpParkingZonesWorker,
|
|
104
|
+
workerMethod: "updateZtpParkings",
|
|
105
|
+
},
|
|
96
106
|
],
|
|
97
107
|
},
|
|
98
108
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queueDefinitions.js","sourceRoot":"","sources":["../../src/integration-engine/queueDefinitions.ts"],"names":[],"mappings":";;;AAAA,yEAAsE;AAEtE,uDAAsC;AACtC,qDAAoD;
|
|
1
|
+
{"version":3,"file":"queueDefinitions.js","sourceRoot":"","sources":["../../src/integration-engine/queueDefinitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IGeoCoordinatesPoint } from "@golemio/core/dist/output-gateway/Geo";
|
|
2
|
+
export interface IZtpParkingJsonFeature {
|
|
3
|
+
type: string;
|
|
4
|
+
geometry: IGeoCoordinatesPoint;
|
|
5
|
+
properties: {
|
|
6
|
+
OBJECTID: number;
|
|
7
|
+
POCET_PS: number;
|
|
8
|
+
ROZM_DELKA: number;
|
|
9
|
+
ROZM_SIRKA: number;
|
|
10
|
+
TYP_PS: number;
|
|
11
|
+
KOLME_PS: number;
|
|
12
|
+
POD_SKLON: number;
|
|
13
|
+
PRIC_SKLON: number;
|
|
14
|
+
TYP_POVRCH: number;
|
|
15
|
+
POSK_POVRC: number;
|
|
16
|
+
PES_ZONA: number;
|
|
17
|
+
MAT_POVRCH: number;
|
|
18
|
+
POSKYT: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IZtpParkingJsonFeature.js","sourceRoot":"","sources":["../../../src/schema-definitions/datasources/IZtpParkingJsonFeature.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { JSONSchemaType } from "@golemio/core/dist/shared/ajv";
|
|
2
|
+
import { IZtpParkingJsonFeature } from "./IZtpParkingJsonFeature";
|
|
3
|
+
interface IZtpParkings {
|
|
4
|
+
type: string;
|
|
5
|
+
name: string;
|
|
6
|
+
features: IZtpParkingJsonFeature[];
|
|
7
|
+
}
|
|
8
|
+
interface ISchemaDefinition<T> {
|
|
9
|
+
name: string;
|
|
10
|
+
jsonSchema: JSONSchemaType<T>;
|
|
11
|
+
}
|
|
12
|
+
export declare const ZtpParkingsJsonSchema: ISchemaDefinition<IZtpParkings>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZtpParkingsJsonSchema = void 0;
|
|
4
|
+
exports.ZtpParkingsJsonSchema = {
|
|
5
|
+
name: "ZtpParkingsJsonSchema",
|
|
6
|
+
jsonSchema: {
|
|
7
|
+
type: "object",
|
|
8
|
+
properties: {
|
|
9
|
+
type: {
|
|
10
|
+
type: "string",
|
|
11
|
+
},
|
|
12
|
+
name: {
|
|
13
|
+
type: "string",
|
|
14
|
+
},
|
|
15
|
+
features: {
|
|
16
|
+
type: "array",
|
|
17
|
+
items: {
|
|
18
|
+
type: "object",
|
|
19
|
+
properties: {
|
|
20
|
+
type: {
|
|
21
|
+
type: "string",
|
|
22
|
+
},
|
|
23
|
+
geometry: {
|
|
24
|
+
type: "object",
|
|
25
|
+
properties: {
|
|
26
|
+
type: {
|
|
27
|
+
type: "string",
|
|
28
|
+
},
|
|
29
|
+
coordinates: {
|
|
30
|
+
type: "array",
|
|
31
|
+
items: {
|
|
32
|
+
type: "number",
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
required: ["type", "coordinates"],
|
|
37
|
+
additionalProperties: false,
|
|
38
|
+
},
|
|
39
|
+
properties: {
|
|
40
|
+
type: "object",
|
|
41
|
+
properties: {
|
|
42
|
+
OBJECTID: {
|
|
43
|
+
type: "number",
|
|
44
|
+
},
|
|
45
|
+
POCET_PS: {
|
|
46
|
+
type: "number",
|
|
47
|
+
},
|
|
48
|
+
ROZM_DELKA: {
|
|
49
|
+
type: "number",
|
|
50
|
+
},
|
|
51
|
+
ROZM_SIRKA: {
|
|
52
|
+
type: "number",
|
|
53
|
+
},
|
|
54
|
+
TYP_PS: {
|
|
55
|
+
type: "number",
|
|
56
|
+
},
|
|
57
|
+
KOLME_PS: {
|
|
58
|
+
type: "number",
|
|
59
|
+
},
|
|
60
|
+
POD_SKLON: {
|
|
61
|
+
type: "number",
|
|
62
|
+
},
|
|
63
|
+
PRIC_SKLON: {
|
|
64
|
+
type: "number",
|
|
65
|
+
},
|
|
66
|
+
TYP_POVRCH: {
|
|
67
|
+
type: "number",
|
|
68
|
+
},
|
|
69
|
+
POSK_POVRC: {
|
|
70
|
+
type: "number",
|
|
71
|
+
},
|
|
72
|
+
PES_ZONA: {
|
|
73
|
+
type: "number",
|
|
74
|
+
},
|
|
75
|
+
MAT_POVRCH: {
|
|
76
|
+
type: "number",
|
|
77
|
+
},
|
|
78
|
+
POSKYT: {
|
|
79
|
+
type: "string",
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
required: [
|
|
83
|
+
"OBJECTID",
|
|
84
|
+
"POCET_PS",
|
|
85
|
+
"ROZM_DELKA",
|
|
86
|
+
"ROZM_SIRKA",
|
|
87
|
+
"TYP_PS",
|
|
88
|
+
"KOLME_PS",
|
|
89
|
+
"POD_SKLON",
|
|
90
|
+
"PRIC_SKLON",
|
|
91
|
+
"TYP_POVRCH",
|
|
92
|
+
"POSK_POVRC",
|
|
93
|
+
"PES_ZONA",
|
|
94
|
+
"MAT_POVRCH",
|
|
95
|
+
"POSKYT",
|
|
96
|
+
],
|
|
97
|
+
additionalProperties: false,
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
required: ["type", "geometry", "properties"],
|
|
101
|
+
additionalProperties: false,
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
required: ["type", "name", "features"],
|
|
106
|
+
additionalProperties: false,
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=ZtpParkingsJsonSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZtpParkingsJsonSchema.js","sourceRoot":"","sources":["../../../src/schema-definitions/datasources/ZtpParkingsJsonSchema.ts"],"names":[],"mappings":";;;AAca,QAAA,qBAAqB,GAAoC;IAClE,IAAI,EAAE,uBAAuB;IAC7B,UAAU,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,IAAI,EAAE;gBACF,IAAI,EAAE,QAAQ;aACjB;YACD,IAAI,EAAE;gBACF,IAAI,EAAE,QAAQ;aACjB;YACD,QAAQ,EAAE;gBACN,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACR,IAAI,EAAE;4BACF,IAAI,EAAE,QAAQ;yBACjB;wBACD,QAAQ,EAAE;4BACN,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACR,IAAI,EAAE;oCACF,IAAI,EAAE,QAAQ;iCACjB;gCACD,WAAW,EAAE;oCACT,IAAI,EAAE,OAAO;oCACb,KAAK,EAAE;wCACH,IAAI,EAAE,QAAQ;qCACjB;iCACJ;6BACJ;4BACD,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;4BACjC,oBAAoB,EAAE,KAAK;yBAC9B;wBACD,UAAU,EAAE;4BACR,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACR,QAAQ,EAAE;oCACN,IAAI,EAAE,QAAQ;iCACjB;gCACD,QAAQ,EAAE;oCACN,IAAI,EAAE,QAAQ;iCACjB;gCACD,UAAU,EAAE;oCACR,IAAI,EAAE,QAAQ;iCACjB;gCACD,UAAU,EAAE;oCACR,IAAI,EAAE,QAAQ;iCACjB;gCACD,MAAM,EAAE;oCACJ,IAAI,EAAE,QAAQ;iCACjB;gCACD,QAAQ,EAAE;oCACN,IAAI,EAAE,QAAQ;iCACjB;gCACD,SAAS,EAAE;oCACP,IAAI,EAAE,QAAQ;iCACjB;gCACD,UAAU,EAAE;oCACR,IAAI,EAAE,QAAQ;iCACjB;gCACD,UAAU,EAAE;oCACR,IAAI,EAAE,QAAQ;iCACjB;gCACD,UAAU,EAAE;oCACR,IAAI,EAAE,QAAQ;iCACjB;gCACD,QAAQ,EAAE;oCACN,IAAI,EAAE,QAAQ;iCACjB;gCACD,UAAU,EAAE;oCACR,IAAI,EAAE,QAAQ;iCACjB;gCAED,MAAM,EAAE;oCACJ,IAAI,EAAE,QAAQ;iCACjB;6BACJ;4BACD,QAAQ,EAAE;gCACN,UAAU;gCACV,UAAU;gCACV,YAAY;gCACZ,YAAY;gCACZ,QAAQ;gCACR,UAAU;gCACV,WAAW;gCACX,YAAY;gCACZ,YAAY;gCACZ,YAAY;gCACZ,UAAU;gCACV,YAAY;gCACZ,QAAQ;6BACX;4BAED,oBAAoB,EAAE,KAAK;yBAC9B;qBACJ;oBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC;oBAC5C,oBAAoB,EAAE,KAAK;iBAC9B;aACJ;SACJ;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;QACtC,oBAAoB,EAAE,KAAK;KAC9B;CACJ,CAAC"}
|
|
@@ -25,6 +25,8 @@ Modul slouží k ukládání a poskytování informací o parkování.
|
|
|
25
25
|
|
|
26
26
|
Data stahujeme pravidelně od IPR, TSK.
|
|
27
27
|
|
|
28
|
+
Pro ZTP parkoviště se z API se stahuje JSON z https://opendata.iprpraha.cz/CUR/DOP/DOP_TSK_Stani_ZTP_b/WGS_84/DOP_TSK_Stani_ZTP_b.json
|
|
29
|
+
|
|
28
30
|
#### Zóny placeného stání
|
|
29
31
|
|
|
30
32
|
Zóny placeného stání používají 2 datové zdroje - TSK a Opendata IPR, které mají přesnější geometrii.
|
|
@@ -160,7 +162,7 @@ Při transformaci dat lokací data obohacujeme o adresu parkoviště, která vyc
|
|
|
160
162
|
- data modely
|
|
161
163
|
- parkingsModel -> (schéma public) `parkings`
|
|
162
164
|
- důležité informace pro zpracování dat ze zdroje TSKParkings
|
|
163
|
-
- V budoucnu přibydou další hodnoty parking_type: `park_sharing` pro službu Mr. Parkit
|
|
165
|
+
- V budoucnu přibydou další hodnoty parking_type: `park_sharing` pro službu Mr. Parkit atp.
|
|
164
166
|
- Parametr `zone_type` je povinný pokud je `parking_type == on_street`. Jinak má být `NULL`
|
|
165
167
|
- `zone_free` - placeholder pro Zóny neplaceného stání (zone_type), které se budou integrovat v budoucnu
|
|
166
168
|
|
|
@@ -206,6 +208,20 @@ Při transformaci dat lokací data obohacujeme o adresu parkoviště, která vyc
|
|
|
206
208
|
- parkingsMeasurementsModel -> (schéma public) `parkings_measurements_part`
|
|
207
209
|
- parkingsMeasurementsActualModel -> (schéma public) `parkings_measurements_actual`
|
|
208
210
|
|
|
211
|
+
### ZtpParkingZonesWorker
|
|
212
|
+
|
|
213
|
+
#### *updateZtpParkings*
|
|
214
|
+
|
|
215
|
+
- vstupní rabbitmq fronta
|
|
216
|
+
- název: `dataplatform.parkings.updateZtpParkings`
|
|
217
|
+
- bez parametrů
|
|
218
|
+
- datové zdroje
|
|
219
|
+
- JSON stahovaný z IPR
|
|
220
|
+
- transformace
|
|
221
|
+
Mapování `IZtpParkingJsonFeature` na `IParking` + doplnění o adresu.
|
|
222
|
+
Získává se z Photon API metodou `GeocodeApi.getAddressByLatLngFromPhoton` v modulu Core.
|
|
223
|
+
- data modely
|
|
224
|
+
- parkingsModel -> (schéma public) `parkings`
|
|
209
225
|
|
|
210
226
|
### Legacy mongo modely
|
|
211
227
|
|