@golemio/parkings 1.3.1 → 1.3.2-dev.764040292
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/00_clear_test_data.sql +1 -0
- package/db/example/03_tsk_measurements_for_legacy_endpoints.sql +35 -0
- package/db/example/99_refresh_views.sql +1 -0
- package/db/migrations/postgresql/20230127010432-tsk-view-for-legacy-parking-endpoints.js +53 -0
- package/db/migrations/postgresql/sqls/20230127010432-tsk-view-for-legacy-parking-endpoints-down.sql +2 -0
- package/db/migrations/postgresql/sqls/20230127010432-tsk-view-for-legacy-parking-endpoints-up.sql +40 -0
- package/dist/integration-engine/ParkingsWorker.d.ts +5 -9
- package/dist/integration-engine/ParkingsWorker.js +44 -176
- package/dist/integration-engine/ParkingsWorker.js.map +1 -1
- package/dist/integration-engine/data-access/TskAverageOccupancyRepository.d.ts +8 -0
- package/dist/integration-engine/data-access/TskAverageOccupancyRepository.js +41 -0
- package/dist/integration-engine/data-access/TskAverageOccupancyRepository.js.map +1 -0
- package/dist/integration-engine/index.d.ts +0 -1
- package/dist/integration-engine/index.js +0 -1
- package/dist/integration-engine/index.js.map +1 -1
- package/dist/integration-engine/models/ParkingTariffsModel.js +5 -5
- package/dist/integration-engine/models/ParkingTariffsModel.js.map +1 -1
- package/dist/integration-engine/models/ParkingsModel.js +4 -4
- package/dist/integration-engine/models/ParkingsModel.js.map +1 -1
- package/dist/integration-engine/queueDefinitions.js +10 -39
- package/dist/integration-engine/queueDefinitions.js.map +1 -1
- package/dist/output-gateway/data-access/TskAverageOccupancyRepository.d.ts +6 -0
- package/dist/output-gateway/data-access/TskAverageOccupancyRepository.js +21 -0
- package/dist/output-gateway/data-access/TskAverageOccupancyRepository.js.map +1 -0
- package/dist/output-gateway/data-access/TskDistrictsRepository.d.ts +6 -0
- package/dist/output-gateway/data-access/TskDistrictsRepository.js +21 -0
- package/dist/output-gateway/data-access/TskDistrictsRepository.js.map +1 -0
- package/dist/output-gateway/data-access/TskParkingLotsRepository.d.ts +16 -0
- package/dist/output-gateway/data-access/TskParkingLotsRepository.js +152 -0
- package/dist/output-gateway/data-access/TskParkingLotsRepository.js.map +1 -0
- package/dist/output-gateway/data-access/helpers/TskFeatureMapper.d.ts +11 -0
- package/dist/output-gateway/data-access/helpers/TskFeatureMapper.js +42 -0
- package/dist/output-gateway/data-access/helpers/TskFeatureMapper.js.map +1 -0
- package/dist/output-gateway/data-access/interfaces/ITskParkingLotFeature.d.ts +33 -0
- package/dist/output-gateway/data-access/interfaces/ITskParkingLotFeature.js +3 -0
- package/dist/output-gateway/data-access/interfaces/ITskParkingLotFeature.js.map +1 -0
- package/dist/output-gateway/index.d.ts +1 -0
- package/dist/output-gateway/index.js +1 -0
- package/dist/output-gateway/index.js.map +1 -1
- package/dist/output-gateway/models/ParkingsLocationModel.js +2 -2
- package/dist/output-gateway/models/ParkingsLocationModel.js.map +1 -1
- package/dist/output-gateway/models/ParkingsMeasurementsModels.d.ts +6 -1
- package/dist/output-gateway/models/ParkingsMeasurementsModels.js +58 -3
- package/dist/output-gateway/models/ParkingsMeasurementsModels.js.map +1 -1
- package/dist/output-gateway/models/ParkingsModel.js +9 -9
- package/dist/output-gateway/models/ParkingsModel.js.map +1 -1
- package/dist/output-gateway/models/ParkingsTariffsModel.js +2 -2
- package/dist/output-gateway/models/ParkingsTariffsModel.js.map +1 -1
- package/dist/output-gateway/models/helpers/DetailAttributesHelper.js +7 -7
- package/dist/output-gateway/models/helpers/DetailAttributesHelper.js.map +1 -1
- package/dist/output-gateway/models/index.js +2 -2
- package/dist/output-gateway/models/index.js.map +1 -1
- package/dist/output-gateway/models/interfaces/TskMeasurementsInterfaces.d.ts +15 -0
- package/dist/output-gateway/models/interfaces/TskMeasurementsInterfaces.js +3 -0
- package/dist/output-gateway/models/interfaces/TskMeasurementsInterfaces.js.map +1 -0
- package/dist/output-gateway/routers/TskParkingLotsLegacyRouter.d.ts +12 -0
- package/dist/output-gateway/routers/TskParkingLotsLegacyRouter.js +49 -0
- package/dist/output-gateway/routers/TskParkingLotsLegacyRouter.js.map +1 -0
- package/dist/schema-definitions/Parkomats.d.ts +23 -23
- package/dist/schema-definitions/index.d.ts +129 -140
- package/dist/schema-definitions/index.js +29 -79
- package/dist/schema-definitions/index.js.map +1 -1
- package/dist/schema-definitions/models/TskAverageOccupancyModel.d.ts +8 -0
- package/dist/schema-definitions/models/TskAverageOccupancyModel.js +16 -0
- package/dist/schema-definitions/models/TskAverageOccupancyModel.js.map +1 -0
- package/dist/schema-definitions/models/TskDistrictsModel.d.ts +8 -0
- package/dist/schema-definitions/models/TskDistrictsModel.js +16 -0
- package/dist/schema-definitions/models/TskDistrictsModel.js.map +1 -0
- package/dist/schema-definitions/models/index.d.ts +2 -0
- package/dist/schema-definitions/models/index.js +19 -0
- package/dist/schema-definitions/models/index.js.map +1 -0
- package/dist/schema-definitions/models/interfaces/ITskAverageOccupancyModel.d.ts +7 -0
- package/dist/schema-definitions/models/interfaces/ITskAverageOccupancyModel.js +3 -0
- package/dist/schema-definitions/models/interfaces/ITskAverageOccupancyModel.js.map +1 -0
- package/dist/schema-definitions/models/interfaces/ITskDistrictsModel.d.ts +4 -0
- package/dist/schema-definitions/models/interfaces/ITskDistrictsModel.js +3 -0
- package/dist/schema-definitions/models/interfaces/ITskDistrictsModel.js.map +1 -0
- package/docs/implementation-documentation.md +28 -15
- package/package.json +3 -6
- package/db/example/mongo_data/dataplatform/parkings.bson +0 -0
- package/db/example/mongo_data/dataplatform/parkings.metadata.json +0 -1
- package/db/example/mongo_data/dataplatform/parkings_history.bson +0 -0
- package/db/example/mongo_data/dataplatform/parkings_history.metadata.json +0 -1
- package/dist/integration-engine/ParkingsTransformation.d.ts +0 -9
- package/dist/integration-engine/ParkingsTransformation.js +0 -105
- package/dist/integration-engine/ParkingsTransformation.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITskAverageOccupancyModel.js","sourceRoot":"","sources":["../../../../src/schema-definitions/models/interfaces/ITskAverageOccupancyModel.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITskDistrictsModel.js","sourceRoot":"","sources":["../../../../src/schema-definitions/models/interfaces/ITskDistrictsModel.ts"],"names":[],"mappings":""}
|
|
@@ -244,21 +244,6 @@ Parkoviště, která nemají tarif (je null), mohou dostat tarif ze statického
|
|
|
244
244
|
- parkingsModel -> (schéma public) `parkings`
|
|
245
245
|
- parkingTariffsmodel -> (schéma public) `parkings_tariffs`
|
|
246
246
|
|
|
247
|
-
### Legacy mongo modely
|
|
248
|
-
|
|
249
|
-
**CronJob and Worker method refreshDataInDB**
|
|
250
|
-
|
|
251
|
-
`cron.dataplatform.parkings.refreshDataInDB` ("`0 */5 * * * *`" Dev a Prod)
|
|
252
|
-
|
|
253
|
-
Datasource TSKParkings, Transformovaná data jsou uložena v tabulce `parkings.parkings`
|
|
254
|
-
|
|
255
|
-
Na základě dat metoda generuje 3 události RabbitMQ:
|
|
256
|
-
|
|
257
|
-
- RabbitMQ send Message `saveDataToHistory`
|
|
258
|
-
- RabbitMQ send Message `updateAddressAndDistrict`
|
|
259
|
-
- RabbitMQ send Message `updateAverageOccupancy`
|
|
260
|
-
|
|
261
|
-
|
|
262
247
|
## Uložení dat
|
|
263
248
|
|
|
264
249
|
- typ databáze
|
|
@@ -316,3 +301,31 @@ Na základě dat metoda generuje 3 události RabbitMQ:
|
|
|
316
301
|
- implementováno dodatečně
|
|
317
302
|
- response header (`Link`) obsahuje metadata k předchozí a následující stránce
|
|
318
303
|
- implementována možnost dotazování pomocí parametrů `limit` a `offset`
|
|
304
|
+
|
|
305
|
+
#### _/parkings_
|
|
306
|
+
|
|
307
|
+
#### _/parkings/:id_
|
|
308
|
+
|
|
309
|
+
_:warning: Deprecated, vyžijte /parking nebo /parking/detail_
|
|
310
|
+
|
|
311
|
+
- zdrojové tabulky
|
|
312
|
+
- parkings
|
|
313
|
+
- parkings_measurements_actual
|
|
314
|
+
- v_tsk_districts
|
|
315
|
+
- parkings
|
|
316
|
+
- common.citydistricts
|
|
317
|
+
- v_tsk_average_occupancy
|
|
318
|
+
- parkings_measurements_part
|
|
319
|
+
- implementováno dodatečně
|
|
320
|
+
- zpětně kompatibilní s Mongo GeoJSON routerem
|
|
321
|
+
- navrácí pouze `tsk` data
|
|
322
|
+
|
|
323
|
+
#### _/parkings/history_
|
|
324
|
+
|
|
325
|
+
_:warning: Deprecated, využijte /parking/measurements_
|
|
326
|
+
|
|
327
|
+
- zdrojové tabulky
|
|
328
|
+
- parkings_measurements_part
|
|
329
|
+
- implementováno dodatečně
|
|
330
|
+
- zpětně kompatibilní s Mongo GeoJSON history routerem
|
|
331
|
+
- navrácí pouze `tsk` data
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golemio/parkings",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.2-dev.764040292",
|
|
4
4
|
"description": "Golemio Parkings Module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -31,10 +31,8 @@
|
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@commitlint/cli": "^11.0.0",
|
|
33
33
|
"@commitlint/config-conventional": "^11.0.0",
|
|
34
|
-
"@golemio/city-districts": "1.0.5",
|
|
35
34
|
"@golemio/cli": "1.3.3",
|
|
36
35
|
"@golemio/core": "1.3.0",
|
|
37
|
-
"@golemio/db-common": "1.0.2",
|
|
38
36
|
"@golemio/eslint-config": "^1.1.0",
|
|
39
37
|
"@ovos-media/ts-transform-paths": "^1.7.18-1",
|
|
40
38
|
"@types/chai": "4.2.3",
|
|
@@ -66,11 +64,10 @@
|
|
|
66
64
|
"typescript": "4.7.2"
|
|
67
65
|
},
|
|
68
66
|
"peerDependencies": {
|
|
69
|
-
"@golemio/
|
|
70
|
-
"@golemio/core": "^1.1.1"
|
|
67
|
+
"@golemio/core": "~1.0"
|
|
71
68
|
},
|
|
72
69
|
"dependencies": {
|
|
73
70
|
"@turf/turf": "^6.5.0",
|
|
74
71
|
"uuid-by-string": "^3.0.2"
|
|
75
72
|
}
|
|
76
|
-
}
|
|
73
|
+
}
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"dataplatform.parkings"},{"v":2,"key":{"properties.id":1},"name":"properties.id_1","ns":"dataplatform.parkings"},{"v":2,"key":{"geometry":"2dsphere"},"name":"geometry_2dsphere","ns":"dataplatform.parkings","2dsphereIndexVersion":3}],"uuid":"1287505494814388928cce8449194875"}
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"dataplatform.parkings_history"},{"v":2,"key":{"id":1},"name":"id_1","ns":"dataplatform.parkings_history"},{"v":2,"key":{"updated_at":-1},"name":"updated_at_-1","ns":"dataplatform.parkings_history"}],"uuid":"3e7132cbd2874a4da7cc1251017758ce"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { BaseTransformation, ITransformation } from "@golemio/core/dist/integration-engine/transformations";
|
|
2
|
-
export declare class ParkingsTransformation extends BaseTransformation implements ITransformation {
|
|
3
|
-
name: string;
|
|
4
|
-
private transformationDate;
|
|
5
|
-
constructor(transformationDate: Date);
|
|
6
|
-
protected transformElement: (element: any) => Promise<any>;
|
|
7
|
-
protected transformHistoryElement: (element: any) => Promise<any>;
|
|
8
|
-
private getMPLAPaymentShortName;
|
|
9
|
-
}
|
|
@@ -1,105 +0,0 @@
|
|
|
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.ParkingsTransformation = void 0;
|
|
13
|
-
const transformations_1 = require("@golemio/core/dist/integration-engine/transformations");
|
|
14
|
-
const config_1 = require("@golemio/core/dist/integration-engine/config");
|
|
15
|
-
const index_1 = require("../schema-definitions/index");
|
|
16
|
-
class ParkingsTransformation extends transformations_1.BaseTransformation {
|
|
17
|
-
constructor(transformationDate) {
|
|
18
|
-
super();
|
|
19
|
-
this.transformElement = (element) => __awaiter(this, void 0, void 0, function* () {
|
|
20
|
-
const res = {
|
|
21
|
-
geometry: {
|
|
22
|
-
coordinates: [parseFloat(element.lng), parseFloat(element.lat)],
|
|
23
|
-
type: "Point",
|
|
24
|
-
},
|
|
25
|
-
properties: {
|
|
26
|
-
id: element.id,
|
|
27
|
-
last_updated: !isNaN(parseInt(element.lastUpdated, 10)) ? parseInt(element.lastUpdated, 10) : null,
|
|
28
|
-
name: element.name,
|
|
29
|
-
num_of_free_places: !isNaN(parseInt(element.numOfFreePlaces, 10)) ? parseInt(element.numOfFreePlaces, 10) : null,
|
|
30
|
-
num_of_taken_places: !isNaN(parseInt(element.numOfTakenPlaces, 10))
|
|
31
|
-
? parseInt(element.numOfTakenPlaces, 10)
|
|
32
|
-
: null,
|
|
33
|
-
parking_type: element.pr
|
|
34
|
-
? { description: "P+R parkoviště", id: 1 }
|
|
35
|
-
: { description: "placené parkoviště", id: 2 },
|
|
36
|
-
payment_link: `${config_1.config.PARKINGS_PAYMENT_URL}?shortname=${this.getMPLAPaymentShortName(element.id)}`,
|
|
37
|
-
payment_shortname: this.getMPLAPaymentShortName(element.id),
|
|
38
|
-
total_num_of_places: !isNaN(parseInt(element.totalNumOfPlaces, 10))
|
|
39
|
-
? parseInt(element.totalNumOfPlaces, 10)
|
|
40
|
-
: null,
|
|
41
|
-
date_modified: this.transformationDate.getTime(),
|
|
42
|
-
},
|
|
43
|
-
type: "Feature",
|
|
44
|
-
};
|
|
45
|
-
if (!res.properties.payment_shortname) {
|
|
46
|
-
delete res.properties.payment_link;
|
|
47
|
-
delete res.properties.payment_shortname;
|
|
48
|
-
}
|
|
49
|
-
return res;
|
|
50
|
-
});
|
|
51
|
-
this.transformHistoryElement = (element) => __awaiter(this, void 0, void 0, function* () {
|
|
52
|
-
const res = {
|
|
53
|
-
id: element.properties.id,
|
|
54
|
-
last_updated: element.properties.last_updated,
|
|
55
|
-
num_of_free_places: element.properties.num_of_free_places,
|
|
56
|
-
num_of_taken_places: element.properties.num_of_taken_places,
|
|
57
|
-
total_num_of_places: element.properties.total_num_of_places,
|
|
58
|
-
updated_at: this.transformationDate.getTime(),
|
|
59
|
-
};
|
|
60
|
-
if (!res.total_num_of_places) {
|
|
61
|
-
// null || undefined || 0
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
return res;
|
|
65
|
-
});
|
|
66
|
-
this.getMPLAPaymentShortName = (id) => {
|
|
67
|
-
switch (id) {
|
|
68
|
-
case 534002:
|
|
69
|
-
return "139"; // Holešovice
|
|
70
|
-
case 534004:
|
|
71
|
-
return "142"; // Rajska Zahrada
|
|
72
|
-
case 534007:
|
|
73
|
-
return "141"; // Radotín
|
|
74
|
-
case 534008:
|
|
75
|
-
return "144"; // Zličín 1
|
|
76
|
-
case 534009:
|
|
77
|
-
return "145"; // Zličín 2
|
|
78
|
-
case 534010:
|
|
79
|
-
return "143"; // Skalka 2
|
|
80
|
-
case 534011:
|
|
81
|
-
return "147"; // Černý most
|
|
82
|
-
case 534012:
|
|
83
|
-
return "143"; // Skalka 1
|
|
84
|
-
case 534014:
|
|
85
|
-
return "121"; // Ládví
|
|
86
|
-
case 534015:
|
|
87
|
-
return "122"; // Depo Hostivař
|
|
88
|
-
case 534016:
|
|
89
|
-
return "123"; // Letňany
|
|
90
|
-
case 534017:
|
|
91
|
-
return "106"; // Westfield Chodov
|
|
92
|
-
case 5340171:
|
|
93
|
-
return "106"; // Chodov A
|
|
94
|
-
case 5340172:
|
|
95
|
-
return "106"; // Chodov E
|
|
96
|
-
default:
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
this.name = index_1.Parkings.name;
|
|
101
|
-
this.transformationDate = transformationDate;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
exports.ParkingsTransformation = ParkingsTransformation;
|
|
105
|
-
//# sourceMappingURL=ParkingsTransformation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ParkingsTransformation.js","sourceRoot":"","sources":["../../src/integration-engine/ParkingsTransformation.ts"],"names":[],"mappings":"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"}
|