@golemio/parkings 1.7.4 → 1.7.5-dev.1130865810

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.
Files changed (67) hide show
  1. package/db/migrations/postgresql/20240107151449-smart4city.js +53 -0
  2. package/db/migrations/postgresql/sqls/20240107151449-smart4city-down.sql +1 -0
  3. package/db/migrations/postgresql/sqls/20240107151449-smart4city-up.sql +8 -0
  4. package/dist/integration-engine/ParkingInterface.d.ts +3 -3
  5. package/dist/integration-engine/datasources/ParkingProviderDataSourceFactory.d.ts +3 -1
  6. package/dist/integration-engine/datasources/ParkingProviderDataSourceFactory.js +6 -2
  7. package/dist/integration-engine/datasources/ParkingProviderDataSourceFactory.js.map +1 -1
  8. package/dist/integration-engine/datasources/helpers/ParkingProviderEnum.d.ts +3 -1
  9. package/dist/integration-engine/datasources/helpers/ParkingProviderEnum.js +2 -0
  10. package/dist/integration-engine/datasources/helpers/ParkingProviderEnum.js.map +1 -1
  11. package/dist/integration-engine/datasources/interfaces/IParkingProviderDataSourceFactory.d.ts +4 -0
  12. package/dist/integration-engine/datasources/interfaces/IParkingProviderDataSourceFactory.js.map +1 -1
  13. package/dist/integration-engine/datasources/smart4city/Smart4CityListDataSourceProvider.d.ts +11 -0
  14. package/dist/integration-engine/datasources/smart4city/Smart4CityListDataSourceProvider.js +44 -0
  15. package/dist/integration-engine/datasources/smart4city/Smart4CityListDataSourceProvider.js.map +1 -0
  16. package/dist/integration-engine/datasources/smart4city/Smart4CityLocationDataSourceProvider.d.ts +11 -0
  17. package/dist/integration-engine/datasources/smart4city/Smart4CityLocationDataSourceProvider.js +49 -0
  18. package/dist/integration-engine/datasources/smart4city/Smart4CityLocationDataSourceProvider.js.map +1 -0
  19. package/dist/integration-engine/datasources/smart4city/SmartCityListDatasourceCache.d.ts +10 -0
  20. package/dist/integration-engine/datasources/smart4city/SmartCityListDatasourceCache.js +52 -0
  21. package/dist/integration-engine/datasources/smart4city/SmartCityListDatasourceCache.js.map +1 -0
  22. package/dist/integration-engine/ioc/Di.js +12 -0
  23. package/dist/integration-engine/ioc/Di.js.map +1 -1
  24. package/dist/integration-engine/ioc/ModuleContainerToken.d.ts +6 -0
  25. package/dist/integration-engine/ioc/ModuleContainerToken.js +8 -0
  26. package/dist/integration-engine/ioc/ModuleContainerToken.js.map +1 -1
  27. package/dist/integration-engine/transformations/Smart4CityLocationTransformation.d.ts +20 -0
  28. package/dist/integration-engine/transformations/Smart4CityLocationTransformation.js +80 -0
  29. package/dist/integration-engine/transformations/Smart4CityLocationTransformation.js.map +1 -0
  30. package/dist/integration-engine/transformations/Smart4CityMeasurementTransformation.d.ts +10 -0
  31. package/dist/integration-engine/transformations/Smart4CityMeasurementTransformation.js +35 -0
  32. package/dist/integration-engine/transformations/Smart4CityMeasurementTransformation.js.map +1 -0
  33. package/dist/integration-engine/workers/NewParkingsWorker.d.ts +1 -1
  34. package/dist/integration-engine/workers/NewParkingsWorker.js +3 -0
  35. package/dist/integration-engine/workers/NewParkingsWorker.js.map +1 -1
  36. package/dist/integration-engine/workers/schemas/Smart4CityTaskTypeSchema.d.ts +6 -0
  37. package/dist/integration-engine/workers/schemas/Smart4CityTaskTypeSchema.js +21 -0
  38. package/dist/integration-engine/workers/schemas/Smart4CityTaskTypeSchema.js.map +1 -0
  39. package/dist/integration-engine/workers/schemas/UpdateSmart4CitySchema.d.ts +6 -0
  40. package/dist/integration-engine/workers/schemas/UpdateSmart4CitySchema.js +21 -0
  41. package/dist/integration-engine/workers/schemas/UpdateSmart4CitySchema.js.map +1 -0
  42. package/dist/integration-engine/workers/tasks/GenerateSmart4CityTaskListTask.d.ts +17 -0
  43. package/dist/integration-engine/workers/tasks/GenerateSmart4CityTaskListTask.js +72 -0
  44. package/dist/integration-engine/workers/tasks/GenerateSmart4CityTaskListTask.js.map +1 -0
  45. package/dist/integration-engine/workers/tasks/UpdateSmart4CityLocationsTask.d.ts +19 -0
  46. package/dist/integration-engine/workers/tasks/UpdateSmart4CityLocationsTask.js +114 -0
  47. package/dist/integration-engine/workers/tasks/UpdateSmart4CityLocationsTask.js.map +1 -0
  48. package/dist/integration-engine/workers/tasks/UpdateSmart4CityMeasurementsTask.d.ts +12 -0
  49. package/dist/integration-engine/workers/tasks/UpdateSmart4CityMeasurementsTask.js +90 -0
  50. package/dist/integration-engine/workers/tasks/UpdateSmart4CityMeasurementsTask.js.map +1 -0
  51. package/dist/schema-definitions/datasources/ParkingMeasurementsDtoSchema.js +2 -2
  52. package/dist/schema-definitions/datasources/ParkingMeasurementsDtoSchema.js.map +1 -1
  53. package/dist/schema-definitions/datasources/Smart4CityListJsonSchema.d.ts +3 -0
  54. package/dist/schema-definitions/datasources/Smart4CityListJsonSchema.js +20 -0
  55. package/dist/schema-definitions/datasources/Smart4CityListJsonSchema.js.map +1 -0
  56. package/dist/schema-definitions/datasources/Smart4CityLocationJsonSchema.d.ts +3 -0
  57. package/dist/schema-definitions/datasources/Smart4CityLocationJsonSchema.js +22 -0
  58. package/dist/schema-definitions/datasources/Smart4CityLocationJsonSchema.js.map +1 -0
  59. package/dist/schema-definitions/datasources/interfaces/IParkingsMeasurementDto.d.ts +2 -2
  60. package/dist/schema-definitions/datasources/interfaces/ISmart4CityList.d.ts +8 -0
  61. package/dist/schema-definitions/datasources/interfaces/ISmart4CityList.js +3 -0
  62. package/dist/schema-definitions/datasources/interfaces/ISmart4CityList.js.map +1 -0
  63. package/dist/schema-definitions/datasources/interfaces/ISmart4CityLocation.d.ts +10 -0
  64. package/dist/schema-definitions/datasources/interfaces/ISmart4CityLocation.js +3 -0
  65. package/dist/schema-definitions/datasources/interfaces/ISmart4CityLocation.js.map +1 -0
  66. package/docs/implementation-documentation.md +73 -1
  67. package/package.json +2 -2
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Smart4CityMeasurementTransformation = void 0;
4
+ const AbstractTransformation_1 = require("@golemio/core/dist/helpers/transformation/AbstractTransformation");
5
+ class Smart4CityMeasurementTransformation extends AbstractTransformation_1.AbstractTransformation {
6
+ constructor(transformationDate) {
7
+ super();
8
+ this.transformationDate = transformationDate;
9
+ this.name = "Smart4CityLocationTransformation";
10
+ this.transformInternal = (data) => {
11
+ return {
12
+ source: "smart4city",
13
+ source_id: data.id.toString(),
14
+ parking_id: `smart4city-${data.id}`,
15
+ total_spot_number: data.capacity,
16
+ available_spot_number: data.correctionunoccupied,
17
+ occupied_spot_number: Number.isInteger(data.capacity) && Number.isInteger(data.correctionunoccupied)
18
+ ? data.capacity - data.correctionunoccupied
19
+ : null,
20
+ date_modified: this.transformationDate.toISOString(),
21
+ };
22
+ };
23
+ this.transformArray = (data) => {
24
+ const result = [];
25
+ for (const el of data) {
26
+ if (!el.closed && el.capacity && el.correctionunoccupied !== null) {
27
+ result.push(this.transformElement(el));
28
+ }
29
+ }
30
+ return result;
31
+ };
32
+ }
33
+ }
34
+ exports.Smart4CityMeasurementTransformation = Smart4CityMeasurementTransformation;
35
+ //# sourceMappingURL=Smart4CityMeasurementTransformation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Smart4CityMeasurementTransformation.js","sourceRoot":"","sources":["../../../src/integration-engine/transformations/Smart4CityMeasurementTransformation.ts"],"names":[],"mappings":";;;AAEA,6GAA0G;AAE1G,MAAa,mCAAoC,SAAQ,+CAAiE;IAGtH,YAAoB,kBAAwB;QACxC,KAAK,EAAE,CAAC;QADQ,uBAAkB,GAAlB,kBAAkB,CAAM;QAFrC,SAAI,GAAG,kCAAkC,CAAC;QAMvC,sBAAiB,GAAG,CAAC,IAAyB,EAAwB,EAAE;YAC9E,OAAO;gBACH,MAAM,EAAE,YAAY;gBACpB,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE;gBAC7B,UAAU,EAAE,cAAc,IAAI,CAAC,EAAE,EAAE;gBACnC,iBAAiB,EAAE,IAAI,CAAC,QAAQ;gBAChC,qBAAqB,EAAE,IAAI,CAAC,oBAAoB;gBAChD,oBAAoB,EAChB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC;oBAC1E,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAqB;oBAC5C,CAAC,CAAC,IAAI;gBACd,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;aACvD,CAAC;QACN,CAAC,CAAC;QAEK,mBAAc,GAAG,CAAC,IAA2B,EAA0B,EAAE;YAC5E,MAAM,MAAM,GAA2B,EAAE,CAAC;YAE1C,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE;gBACnB,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,oBAAoB,KAAK,IAAI,EAAE;oBAC/D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;iBAC1C;aACJ;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;IA1BF,CAAC;CA2BJ;AAhCD,kFAgCC"}
@@ -1,6 +1,6 @@
1
1
  import { AbstractTask, AbstractWorker } from "@golemio/core/dist/integration-engine";
2
2
  export declare class NewParkingsWorker extends AbstractWorker {
3
- protected readonly name = "Parkings";
3
+ readonly name = "Parkings";
4
4
  constructor();
5
5
  registerTask: (task: AbstractTask<any>) => void;
6
6
  }
@@ -16,6 +16,9 @@ class NewParkingsWorker extends integration_engine_1.AbstractWorker {
16
16
  };
17
17
  // Register tasks
18
18
  this.registerTask(Di_1.ParkingsContainer.resolve(ModuleContainerToken_1.ModuleContainerToken.SaveMrParkitDataTask));
19
+ this.registerTask(Di_1.ParkingsContainer.resolve(ModuleContainerToken_1.ModuleContainerToken.GenerateSmart4CityTaskListTask));
20
+ this.registerTask(Di_1.ParkingsContainer.resolve(ModuleContainerToken_1.ModuleContainerToken.UpdateSmart4CityLocationsTask));
21
+ this.registerTask(Di_1.ParkingsContainer.resolve(ModuleContainerToken_1.ModuleContainerToken.UpdateSmart4CityMeasurementsTask));
19
22
  this.registerTask(new SaveParkingZonesPrague_1.SaveParkingZonesPrague(this.getQueuePrefix()));
20
23
  }
21
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NewParkingsWorker.js","sourceRoot":"","sources":["../../../src/integration-engine/workers/NewParkingsWorker.ts"],"names":[],"mappings":";;;AAAA,kCAA+C;AAC/C,sEAAoE;AACpE,8EAAqF;AACrF,2CAAuD;AACvD,2EAAwE;AAExE,MAAa,iBAAkB,SAAQ,mCAAc;IAGjD;QACI,KAAK,EAAE,CAAC;QAHO,SAAI,GAAG,oCAAwB,CAAC;QAU5C,iBAAY,GAAG,CAAC,IAAuB,EAAQ,EAAE;YACpD,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,CAAC,CAAC;QARE,iBAAiB;QACjB,IAAI,CAAC,YAAY,CAAC,sBAAiB,CAAC,OAAO,CAAC,2CAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,YAAY,CAAC,IAAI,+CAAsB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;CAMJ;AAfD,8CAeC"}
1
+ {"version":3,"file":"NewParkingsWorker.js","sourceRoot":"","sources":["../../../src/integration-engine/workers/NewParkingsWorker.ts"],"names":[],"mappings":";;;AAAA,kCAA+C;AAC/C,sEAAoE;AACpE,8EAAqF;AACrF,2CAAuD;AACvD,2EAAwE;AAExE,MAAa,iBAAkB,SAAQ,mCAAc;IAGjD;QACI,KAAK,EAAE,CAAC;QAHI,SAAI,GAAG,oCAAwB,CAAC;QAazC,iBAAY,GAAG,CAAC,IAAuB,EAAQ,EAAE;YACpD,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,CAAC,CAAC;QAXE,iBAAiB;QACjB,IAAI,CAAC,YAAY,CAAC,sBAAiB,CAAC,OAAO,CAAC,2CAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,YAAY,CAAC,sBAAiB,CAAC,OAAO,CAAC,2CAAoB,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,YAAY,CAAC,sBAAiB,CAAC,OAAO,CAAC,2CAAoB,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,YAAY,CAAC,sBAAiB,CAAC,OAAO,CAAC,2CAAoB,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACpG,IAAI,CAAC,YAAY,CAAC,IAAI,+CAAsB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;CAMJ;AAlBD,8CAkBC"}
@@ -0,0 +1,6 @@
1
+ export interface ISmart4CityTaskTypeInput {
2
+ type: string;
3
+ }
4
+ export declare class Smart4CityTaskTypeValidationSchema implements ISmart4CityTaskTypeInput {
5
+ type: string;
6
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Smart4CityTaskTypeValidationSchema = void 0;
13
+ const class_validator_1 = require("@golemio/core/dist/shared/class-validator");
14
+ class Smart4CityTaskTypeValidationSchema {
15
+ }
16
+ exports.Smart4CityTaskTypeValidationSchema = Smart4CityTaskTypeValidationSchema;
17
+ __decorate([
18
+ (0, class_validator_1.IsEnum)(["locations", "measurements"]),
19
+ __metadata("design:type", String)
20
+ ], Smart4CityTaskTypeValidationSchema.prototype, "type", void 0);
21
+ //# sourceMappingURL=Smart4CityTaskTypeSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Smart4CityTaskTypeSchema.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/schemas/Smart4CityTaskTypeSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,+EAAmE;AAMnE,MAAa,kCAAkC;CAG9C;AAHD,gFAGC;AADG;IADC,IAAA,wBAAM,EAAC,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;;gEACxB"}
@@ -0,0 +1,6 @@
1
+ export interface IUpdateSmart4CityInput {
2
+ code: string;
3
+ }
4
+ export declare class UpdateSmart4CityValidationSchema implements IUpdateSmart4CityInput {
5
+ code: string;
6
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UpdateSmart4CityValidationSchema = void 0;
13
+ const class_validator_1 = require("@golemio/core/dist/shared/class-validator");
14
+ class UpdateSmart4CityValidationSchema {
15
+ }
16
+ exports.UpdateSmart4CityValidationSchema = UpdateSmart4CityValidationSchema;
17
+ __decorate([
18
+ (0, class_validator_1.IsString)(),
19
+ __metadata("design:type", String)
20
+ ], UpdateSmart4CityValidationSchema.prototype, "code", void 0);
21
+ //# sourceMappingURL=UpdateSmart4CitySchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateSmart4CitySchema.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/schemas/UpdateSmart4CitySchema.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+EAAqE;AAMrE,MAAa,gCAAgC;CAG5C;AAHD,4EAGC;AADG;IADC,IAAA,0BAAQ,GAAE;;8DACG"}
@@ -0,0 +1,17 @@
1
+ import { SmartCityListDatasourceCache } from "../../datasources/smart4city/SmartCityListDatasourceCache";
2
+ import { ISmart4CityTaskTypeInput, Smart4CityTaskTypeValidationSchema } from "../schemas/Smart4CityTaskTypeSchema";
3
+ import { AbstractTask } from "@golemio/core/dist/integration-engine";
4
+ import { ISimpleConfig } from "@golemio/core/dist/helpers/configuration/ISimpleConfig";
5
+ export declare enum Smart4CityTaskType {
6
+ locations = "locations",
7
+ measurements = "measurements"
8
+ }
9
+ export declare class GenerateSmart4CityTaskListTask extends AbstractTask<ISmart4CityTaskTypeInput> {
10
+ private config;
11
+ private dataSource;
12
+ readonly queueName = "generateSmart4CityTaskList";
13
+ readonly queueTtl: number;
14
+ readonly schema: typeof Smart4CityTaskTypeValidationSchema;
15
+ constructor(config: ISimpleConfig, dataSource: SmartCityListDatasourceCache);
16
+ execute(data: ISmart4CityTaskTypeInput): Promise<void>;
17
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.GenerateSmart4CityTaskListTask = exports.Smart4CityTaskType = void 0;
25
+ const SmartCityListDatasourceCache_1 = require("../../datasources/smart4city/SmartCityListDatasourceCache");
26
+ const Smart4CityTaskTypeSchema_1 = require("../schemas/Smart4CityTaskTypeSchema");
27
+ const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
28
+ const integration_engine_1 = require("@golemio/core/dist/integration-engine");
29
+ const constants_1 = require("../constants");
30
+ const ModuleContainerToken_1 = require("../../ioc/ModuleContainerToken");
31
+ const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
32
+ const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
33
+ var Smart4CityTaskType;
34
+ (function (Smart4CityTaskType) {
35
+ Smart4CityTaskType["locations"] = "locations";
36
+ Smart4CityTaskType["measurements"] = "measurements";
37
+ })(Smart4CityTaskType || (exports.Smart4CityTaskType = Smart4CityTaskType = {}));
38
+ let GenerateSmart4CityTaskListTask = exports.GenerateSmart4CityTaskListTask = class GenerateSmart4CityTaskListTask extends integration_engine_1.AbstractTask {
39
+ constructor(config, dataSource) {
40
+ super(constants_1.NEW_PARKINGS_WORKER_NAME);
41
+ this.config = config;
42
+ this.dataSource = dataSource;
43
+ this.queueName = "generateSmart4CityTaskList";
44
+ this.queueTtl = 3 * 60 * 60 * 1000; // 3h
45
+ this.schema = Smart4CityTaskTypeSchema_1.Smart4CityTaskTypeValidationSchema;
46
+ }
47
+ execute(data) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ let sourceDataCityList = [];
50
+ try {
51
+ sourceDataCityList = yield this.dataSource.getAll();
52
+ }
53
+ catch (err) {
54
+ if (err instanceof golemio_errors_1.AbstractGolemioError) {
55
+ throw err;
56
+ }
57
+ throw new golemio_errors_1.DatasourceError("Error while fetching Smart4City list", this.constructor.name, err);
58
+ }
59
+ const exchange = this.config.getValue("env.RABBIT_EXCHANGE_NAME");
60
+ for (const city of sourceDataCityList) {
61
+ yield integration_engine_1.QueueManager.sendMessageToExchange(exchange + "." + constants_1.NEW_PARKINGS_WORKER_NAME.toLowerCase(), data.type === Smart4CityTaskType.locations ? "updateSmart4CityLocations" : "updateSmart4CityMeasurements", { code: city.code });
62
+ }
63
+ });
64
+ }
65
+ };
66
+ exports.GenerateSmart4CityTaskListTask = GenerateSmart4CityTaskListTask = __decorate([
67
+ (0, tsyringe_1.injectable)(),
68
+ __param(0, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.SimpleConfig)),
69
+ __param(1, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.SmartCityListDatasourceCache)),
70
+ __metadata("design:paramtypes", [Object, SmartCityListDatasourceCache_1.SmartCityListDatasourceCache])
71
+ ], GenerateSmart4CityTaskListTask);
72
+ //# sourceMappingURL=GenerateSmart4CityTaskListTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenerateSmart4CityTaskListTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/GenerateSmart4CityTaskListTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,4GAAuG;AACvG,kFAA4H;AAC5H,iEAAwE;AACxE,8EAAmF;AAEnF,4CAAiE;AACjE,yEAAoE;AACpE,wEAAqE;AACrE,6EAAiG;AAGjG,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC1B,6CAAuB,CAAA;IACvB,mDAA6B,CAAA;AACjC,CAAC,EAHW,kBAAkB,kCAAlB,kBAAkB,QAG7B;AAGM,IAAM,8BAA8B,4CAApC,MAAM,8BAA+B,SAAQ,iCAAsC;IAKtF,YACoC,MAA6B,EAE7D,UAAgD;QAEhD,KAAK,CAAC,oCAAwB,CAAC,CAAC;QAJQ,WAAM,GAAN,MAAM,CAAe;QAErD,eAAU,GAAV,UAAU,CAA8B;QAPpC,cAAS,GAAG,4BAA4B,CAAC;QACzC,aAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK;QACpC,WAAM,GAAG,6DAAkC,CAAC;IAQ5D,CAAC;IAEY,OAAO,CAAC,IAA8B;;YAC/C,IAAI,kBAAkB,GAAyC,EAAE,CAAC;YAElE,IAAI;gBACA,kBAAkB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;aACvD;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,GAAG,YAAY,qCAAoB,EAAE;oBACrC,MAAM,GAAG,CAAC;iBACb;gBAED,MAAM,IAAI,gCAAe,CAAC,sCAAsC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACjG;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAS,0BAA0B,CAAC,CAAC;YAE1E,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE;gBACnC,MAAM,iCAAY,CAAC,qBAAqB,CACpC,QAAQ,GAAG,GAAG,GAAG,oCAAwB,CAAC,WAAW,EAAE,EACvD,IAAI,CAAC,IAAI,KAAK,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,8BAA8B,EACzG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CACtB,CAAC;aACL;QACL,CAAC;KAAA;CACJ,CAAA;yCApCY,8BAA8B;IAD1C,IAAA,qBAAU,GAAE;IAOJ,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,YAAY,CAAC,CAAA;IAC9B,WAAA,IAAA,iBAAM,EAAC,2CAAoB,CAAC,4BAA4B,CAAC,CAAA;6CACtC,2DAA4B;GAR3C,8BAA8B,CAoC1C"}
@@ -0,0 +1,19 @@
1
+ import { IParkingProviderDataSourceFactory } from "../../datasources/interfaces/IParkingProviderDataSourceFactory";
2
+ import { ParkingsLocationRepository } from "../../repositories/ParkingsLocationRepository";
3
+ import { ParkingsRepository } from "../../repositories/ParkingsRepository";
4
+ import { AbstractTask } from "@golemio/core/dist/integration-engine";
5
+ import { IUpdateSmart4CityInput, UpdateSmart4CityValidationSchema } from "../schemas/UpdateSmart4CitySchema";
6
+ import { ISimpleConfig } from "@golemio/core/dist/helpers/configuration/ISimpleConfig";
7
+ export declare class UpdateSmart4CityLocationsTask extends AbstractTask<IUpdateSmart4CityInput> {
8
+ private config;
9
+ private dataSourceFactory;
10
+ private parkingRepository;
11
+ private parkingLocationRepository;
12
+ readonly queueName = "updateSmart4CityLocations";
13
+ readonly queueTtl: number;
14
+ readonly schema: typeof UpdateSmart4CityValidationSchema;
15
+ constructor(config: ISimpleConfig, dataSourceFactory: IParkingProviderDataSourceFactory, parkingRepository: ParkingsRepository, parkingLocationRepository: ParkingsLocationRepository);
16
+ execute(data: IUpdateSmart4CityInput): Promise<void>;
17
+ private getParkingAttributesToUpdate;
18
+ private getParkingLocationAttributesToUpdate;
19
+ }
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.UpdateSmart4CityLocationsTask = void 0;
25
+ const ParkingProviderEnum_1 = require("../../datasources/helpers/ParkingProviderEnum");
26
+ const ModuleContainerToken_1 = require("../../ioc/ModuleContainerToken");
27
+ const ParkingsLocationRepository_1 = require("../../repositories/ParkingsLocationRepository");
28
+ const ParkingsRepository_1 = require("../../repositories/ParkingsRepository");
29
+ const Smart4CityLocationTransformation_1 = require("../../transformations/Smart4CityLocationTransformation");
30
+ const UpdateAddressWorker_1 = require("../UpdateAddressWorker");
31
+ const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
32
+ const integration_engine_1 = require("@golemio/core/dist/integration-engine");
33
+ const UpdateSmart4CitySchema_1 = require("../schemas/UpdateSmart4CitySchema");
34
+ const constants_1 = require("../constants");
35
+ const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
36
+ const golemio_errors_2 = require("@golemio/core/dist/shared/golemio-errors");
37
+ const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
38
+ let UpdateSmart4CityLocationsTask = exports.UpdateSmart4CityLocationsTask = class UpdateSmart4CityLocationsTask extends integration_engine_1.AbstractTask {
39
+ constructor(config, dataSourceFactory, parkingRepository, parkingLocationRepository) {
40
+ super(constants_1.NEW_PARKINGS_WORKER_NAME);
41
+ this.config = config;
42
+ this.dataSourceFactory = dataSourceFactory;
43
+ this.parkingRepository = parkingRepository;
44
+ this.parkingLocationRepository = parkingLocationRepository;
45
+ this.queueName = "updateSmart4CityLocations";
46
+ this.queueTtl = 15 * 60 * 1000;
47
+ this.schema = UpdateSmart4CitySchema_1.UpdateSmart4CityValidationSchema;
48
+ }
49
+ execute(data) {
50
+ return __awaiter(this, void 0, void 0, function* () {
51
+ let locations = [];
52
+ try {
53
+ const dataSource = this.dataSourceFactory.getDataSource(ParkingProviderEnum_1.ParkingProvider.Smart4CityLocation, data.code);
54
+ locations = yield dataSource.getAll();
55
+ }
56
+ catch (err) {
57
+ if (err instanceof golemio_errors_1.AbstractGolemioError) {
58
+ throw err;
59
+ }
60
+ throw new golemio_errors_1.DatasourceError("Error while fetching Smart4City locations", this.constructor.name, err);
61
+ }
62
+ let transformedData;
63
+ try {
64
+ const transformationDate = new Date();
65
+ const transformation = new Smart4CityLocationTransformation_1.Smart4CityLocationTransformation(transformationDate);
66
+ transformedData = transformation.transformCollection(locations);
67
+ }
68
+ catch (err) {
69
+ throw new golemio_errors_2.TransformationError("Error while transforming Smart4City locations", this.constructor.name, err);
70
+ }
71
+ if (!transformedData.parking.length) {
72
+ return;
73
+ }
74
+ try {
75
+ yield this.parkingRepository.bulkSave(transformedData.parking, this.getParkingAttributesToUpdate(transformedData.parking[0]));
76
+ yield this.parkingLocationRepository.bulkSave(transformedData.parkingLocation, this.getParkingLocationAttributesToUpdate(transformedData.parkingLocation[0]));
77
+ }
78
+ catch (err) {
79
+ throw new golemio_errors_2.GeneralError("Error while saving Smart4City locations data", this.constructor.name, err);
80
+ }
81
+ const exchange = this.config.getValue("env.RABBIT_EXCHANGE_NAME");
82
+ for (const item of transformedData.parking) {
83
+ yield integration_engine_1.QueueManager.sendMessageToExchange(exchange + "." + UpdateAddressWorker_1.UpdateAddressWorker.workerName.toLowerCase(), "updateAddress", {
84
+ id: item.id,
85
+ point: item.centroid,
86
+ });
87
+ }
88
+ for (const item of transformedData.parkingLocation) {
89
+ yield integration_engine_1.QueueManager.sendMessageToExchange(exchange + "." + UpdateAddressWorker_1.UpdateAddressWorker.workerName.toLowerCase(), "updateLocationAddress", {
90
+ id: item.id,
91
+ point: item.centroid,
92
+ });
93
+ }
94
+ });
95
+ }
96
+ getParkingAttributesToUpdate(parking) {
97
+ return Object.keys(parking)
98
+ .filter((key) => key !== "valid_from")
99
+ .concat("updated_at");
100
+ }
101
+ getParkingLocationAttributesToUpdate(parking) {
102
+ return Object.keys(parking).concat("updated_at");
103
+ }
104
+ };
105
+ exports.UpdateSmart4CityLocationsTask = UpdateSmart4CityLocationsTask = __decorate([
106
+ (0, tsyringe_1.injectable)(),
107
+ __param(0, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.SimpleConfig)),
108
+ __param(1, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.ParkingProviderDataSourceFactory)),
109
+ __param(2, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.ParkingsRepository)),
110
+ __param(3, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.ParkingsLocationRepository)),
111
+ __metadata("design:paramtypes", [Object, Object, ParkingsRepository_1.ParkingsRepository,
112
+ ParkingsLocationRepository_1.ParkingsLocationRepository])
113
+ ], UpdateSmart4CityLocationsTask);
114
+ //# sourceMappingURL=UpdateSmart4CityLocationsTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateSmart4CityLocationsTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/UpdateSmart4CityLocationsTask.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { IParkingProviderDataSourceFactory } from "../../datasources/interfaces/IParkingProviderDataSourceFactory";
2
+ import { AbstractTask } from "@golemio/core/dist/integration-engine";
3
+ import { IUpdateSmart4CityInput, UpdateSmart4CityValidationSchema } from "../schemas/UpdateSmart4CitySchema";
4
+ export declare class UpdateSmart4CityMeasurementsTask extends AbstractTask<IUpdateSmart4CityInput> {
5
+ private dataSourceFactory;
6
+ readonly queueName = "updateSmart4CityMeasurements";
7
+ readonly queueTtl: number;
8
+ readonly schema: typeof UpdateSmart4CityValidationSchema;
9
+ private measurementsRepository;
10
+ constructor(dataSourceFactory: IParkingProviderDataSourceFactory);
11
+ execute(data: IUpdateSmart4CityInput): Promise<void>;
12
+ }
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.UpdateSmart4CityMeasurementsTask = void 0;
25
+ const ParkingProviderEnum_1 = require("../../datasources/helpers/ParkingProviderEnum");
26
+ const ModuleContainerToken_1 = require("../../ioc/ModuleContainerToken");
27
+ const Smart4CityMeasurementTransformation_1 = require("../../transformations/Smart4CityMeasurementTransformation");
28
+ const _sch_1 = require("../../../schema-definitions");
29
+ const ParkingMeasurementsDtoSchema_1 = require("../../../schema-definitions/datasources/ParkingMeasurementsDtoSchema");
30
+ const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
31
+ const integration_engine_1 = require("@golemio/core/dist/integration-engine");
32
+ const UpdateSmart4CitySchema_1 = require("../schemas/UpdateSmart4CitySchema");
33
+ const constants_1 = require("../constants");
34
+ const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
35
+ const golemio_errors_2 = require("@golemio/core/dist/shared/golemio-errors");
36
+ const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
37
+ let UpdateSmart4CityMeasurementsTask = exports.UpdateSmart4CityMeasurementsTask = class UpdateSmart4CityMeasurementsTask extends integration_engine_1.AbstractTask {
38
+ constructor(dataSourceFactory) {
39
+ super(constants_1.NEW_PARKINGS_WORKER_NAME);
40
+ this.dataSourceFactory = dataSourceFactory;
41
+ this.queueName = "updateSmart4CityMeasurements";
42
+ this.queueTtl = 15 * 60 * 1000;
43
+ this.schema = UpdateSmart4CitySchema_1.UpdateSmart4CityValidationSchema;
44
+ this.measurementsRepository = new integration_engine_1.PostgresModel(_sch_1.Parkings.measurements.name + "Model", {
45
+ outputSequelizeAttributes: _sch_1.Parkings.measurements.outputSequelizeAttributes,
46
+ pgSchema: _sch_1.Parkings.pgSchema,
47
+ pgTableName: _sch_1.Parkings.measurements.pgTableName,
48
+ savingType: "insertOrUpdate",
49
+ }, new golemio_validator_1.JSONSchemaValidator(_sch_1.Parkings.measurements.name + "PgModelValidator", ParkingMeasurementsDtoSchema_1.ParkingMeasurementsDtoSchema));
50
+ }
51
+ execute(data) {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ let measurements = [];
54
+ try {
55
+ const dataSource = this.dataSourceFactory.getDataSource(ParkingProviderEnum_1.ParkingProvider.Smart4CityLocation, data.code);
56
+ measurements = yield dataSource.getAll();
57
+ }
58
+ catch (err) {
59
+ if (err instanceof golemio_errors_1.AbstractGolemioError) {
60
+ throw err;
61
+ }
62
+ throw new golemio_errors_1.DatasourceError("Error while fetching Smart4City measurements", this.constructor.name, err);
63
+ }
64
+ let transformedData;
65
+ try {
66
+ const transformationDate = new Date();
67
+ const transformation = new Smart4CityMeasurementTransformation_1.Smart4CityMeasurementTransformation(transformationDate);
68
+ transformedData = transformation.transformArray(measurements);
69
+ }
70
+ catch (err) {
71
+ throw new golemio_errors_2.TransformationError("Error while transforming Smart4City measurements", this.constructor.name, err);
72
+ }
73
+ if (!transformedData.length) {
74
+ return;
75
+ }
76
+ try {
77
+ yield this.measurementsRepository.bulkSave(transformedData);
78
+ }
79
+ catch (err) {
80
+ throw new golemio_errors_2.GeneralError("Error while saving Smart4City measurements data", this.constructor.name, err);
81
+ }
82
+ });
83
+ }
84
+ };
85
+ exports.UpdateSmart4CityMeasurementsTask = UpdateSmart4CityMeasurementsTask = __decorate([
86
+ (0, tsyringe_1.injectable)(),
87
+ __param(0, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.ParkingProviderDataSourceFactory)),
88
+ __metadata("design:paramtypes", [Object])
89
+ ], UpdateSmart4CityMeasurementsTask);
90
+ //# sourceMappingURL=UpdateSmart4CityMeasurementsTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateSmart4CityMeasurementsTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/UpdateSmart4CityMeasurementsTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,uFAA8E;AAE9E,yEAAoE;AACpE,mHAA8G;AAC9G,sDAAgC;AAEhC,uHAA6F;AAC7F,iEAAwE;AACxE,8EAAoF;AACpF,8EAAsH;AACtH,4CAAiE;AACjE,6EAAiG;AACjG,6EAA6F;AAC7F,mFAAkF;AAG3E,IAAM,gCAAgC,8CAAtC,MAAM,gCAAiC,SAAQ,iCAAoC;IAOtF,YAEI,iBAA4D;QAE5D,KAAK,CAAC,oCAAwB,CAAC,CAAC;QAFxB,sBAAiB,GAAjB,iBAAiB,CAAmC;QARhD,cAAS,GAAG,8BAA8B,CAAC;QAC3C,aAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC1B,WAAM,GAAG,yDAAgC,CAAC;QAUtD,IAAI,CAAC,sBAAsB,GAAG,IAAI,kCAAa,CAC3C,eAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,OAAO,EACpC;YACI,yBAAyB,EAAE,eAAQ,CAAC,YAAY,CAAC,yBAAyB;YAC1E,QAAQ,EAAE,eAAQ,CAAC,QAAQ;YAC3B,WAAW,EAAE,eAAQ,CAAC,YAAY,CAAC,WAAW;YAC9C,UAAU,EAAE,gBAAgB;SAC/B,EACD,IAAI,uCAAmB,CAAC,eAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,kBAAkB,EAAE,2DAA4B,CAAC,CACzG,CAAC;IACN,CAAC;IAEY,OAAO,CAAC,IAA4B;;YAC7C,IAAI,YAAY,GAA0B,EAAE,CAAC;YAE7C,IAAI;gBACA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,qCAAe,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvG,YAAY,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;aAC5C;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,GAAG,YAAY,qCAAoB,EAAE;oBACrC,MAAM,GAAG,CAAC;iBACb;gBAED,MAAM,IAAI,gCAAe,CAAC,8CAA8C,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACzG;YAED,IAAI,eAAe,CAAC;YAEpB,IAAI;gBACA,MAAM,kBAAkB,GAAG,IAAI,IAAI,EAAE,CAAC;gBACtC,MAAM,cAAc,GAAG,IAAI,yEAAmC,CAAC,kBAAkB,CAAC,CAAC;gBACnF,eAAe,GAAG,cAAc,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;aACjE;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,oCAAmB,CAAC,kDAAkD,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACjH;YAED,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;gBACzB,OAAO;aACV;YAED,IAAI;gBACA,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;aAC/D;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,6BAAY,CAAC,iDAAiD,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACzG;QACL,CAAC;KAAA;CACJ,CAAA;2CA3DY,gCAAgC;IAD5C,IAAA,qBAAU,GAAE;IASJ,WAAA,IAAA,iBAAM,EAAC,2CAAoB,CAAC,gCAAgC,CAAC,CAAA;;GARzD,gCAAgC,CA2D5C"}
@@ -11,9 +11,9 @@ const parkingMeasurementsDtoSchema = {
11
11
  source: { type: "string" },
12
12
  source_id: { type: "string" },
13
13
  parking_id: { type: "string" },
14
- available_spot_number: { type: "integer" },
14
+ available_spot_number: { oneOf: [{ type: "integer" }, { type: "null", nullable: true }] },
15
15
  closed_spot_number: { type: "integer" },
16
- occupied_spot_number: { type: "integer" },
16
+ occupied_spot_number: { oneOf: [{ type: "integer" }, { type: "null", nullable: true }] },
17
17
  total_spot_number: { oneOf: [{ type: "integer" }, { type: "null", nullable: true }] },
18
18
  date_modified: { type: "string" },
19
19
  },
@@ -1 +1 @@
1
- {"version":3,"file":"ParkingMeasurementsDtoSchema.js","sourceRoot":"","sources":["../../../src/schema-definitions/datasources/ParkingMeasurementsDtoSchema.ts"],"names":[],"mappings":";;;AAGA,MAAM,4BAA4B,GAA6C;IAC3E,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;QACjC,oBAAoB,EAAE,IAAI;QAC1B,UAAU,EAAE;YACR,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC7B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,qBAAqB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1C,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACvC,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACzC,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACrF,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACpC;KACJ;CACJ,CAAC;AAEuC,oEAA4B"}
1
+ {"version":3,"file":"ParkingMeasurementsDtoSchema.js","sourceRoot":"","sources":["../../../src/schema-definitions/datasources/ParkingMeasurementsDtoSchema.ts"],"names":[],"mappings":";;;AAGA,MAAM,4BAA4B,GAA6C;IAC3E,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;QACjC,oBAAoB,EAAE,IAAI;QAC1B,UAAU,EAAE;YACR,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC7B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACzF,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACvC,oBAAoB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACxF,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACrF,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACpC;KACJ;CACJ,CAAC;AAEuC,oEAA4B"}
@@ -0,0 +1,3 @@
1
+ import { JSONSchemaType } from "@golemio/core/dist/shared/ajv";
2
+ import { ISmart4CityList } from "./interfaces/ISmart4CityList";
3
+ export declare const smart4CityListJsonSchema: JSONSchemaType<ISmart4CityList[]>;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.smart4CityListJsonSchema = void 0;
4
+ exports.smart4CityListJsonSchema = {
5
+ type: "array",
6
+ items: {
7
+ type: "object",
8
+ properties: {
9
+ id: { type: "number" },
10
+ code: { type: "string" },
11
+ name: { type: "string" },
12
+ country: { type: "string" },
13
+ latitude: { type: "number" },
14
+ longitude: { type: "number" },
15
+ },
16
+ required: ["id", "code"],
17
+ additionalProperties: true,
18
+ },
19
+ };
20
+ //# sourceMappingURL=Smart4CityListJsonSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Smart4CityListJsonSchema.js","sourceRoot":"","sources":["../../../src/schema-definitions/datasources/Smart4CityListJsonSchema.ts"],"names":[],"mappings":";;;AAGa,QAAA,wBAAwB,GAAsC;IACvE,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACtB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAChC;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;QACxB,oBAAoB,EAAE,IAAI;KAC7B;CACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ISmart4CityLocation } from "./interfaces/ISmart4CityLocation";
2
+ import { JSONSchemaType } from "@golemio/core/dist/shared/ajv";
3
+ export declare const smart4CityLocationJsonSchema: JSONSchemaType<ISmart4CityLocation[]>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.smart4CityLocationJsonSchema = void 0;
4
+ exports.smart4CityLocationJsonSchema = {
5
+ type: "array",
6
+ items: {
7
+ type: "object",
8
+ properties: {
9
+ id: { type: "number" },
10
+ name: { type: "string" },
11
+ latitude: { type: "number" },
12
+ longitude: { type: "number" },
13
+ capacity: { type: "number" },
14
+ correctionunoccupied: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
15
+ closed: { type: "boolean" },
16
+ type: { type: "number" },
17
+ },
18
+ required: ["id"],
19
+ additionalProperties: true,
20
+ },
21
+ };
22
+ //# sourceMappingURL=Smart4CityLocationJsonSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Smart4CityLocationJsonSchema.js","sourceRoot":"","sources":["../../../src/schema-definitions/datasources/Smart4CityLocationJsonSchema.ts"],"names":[],"mappings":";;;AAGa,QAAA,4BAA4B,GAA0C;IAC/E,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACtB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC7B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,oBAAoB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACvF,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC3B;QACD,QAAQ,EAAE,CAAC,IAAI,CAAC;QAChB,oBAAoB,EAAE,IAAI;KAC7B;CACJ,CAAC"}
@@ -2,9 +2,9 @@ export interface IParkingMeasurementDto {
2
2
  source: string;
3
3
  source_id: string;
4
4
  parking_id: string;
5
- available_spot_number: number;
5
+ available_spot_number: number | null;
6
6
  closed_spot_number: number;
7
- occupied_spot_number: number;
7
+ occupied_spot_number: number | null;
8
8
  total_spot_number: number | null;
9
9
  date_modified: Date | string;
10
10
  }
@@ -0,0 +1,8 @@
1
+ export interface ISmart4CityList {
2
+ id: number;
3
+ code: string;
4
+ name: string;
5
+ country: string;
6
+ latitude: number;
7
+ longitude: number;
8
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ISmart4CityList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ISmart4CityList.js","sourceRoot":"","sources":["../../../../src/schema-definitions/datasources/interfaces/ISmart4CityList.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export interface ISmart4CityLocation {
2
+ id: number;
3
+ name: string;
4
+ latitude: number;
5
+ longitude: number;
6
+ capacity: number;
7
+ correctionunoccupied: number | null;
8
+ closed: boolean;
9
+ type: number;
10
+ }