@golemio/fcd 1.0.0 → 1.0.1-dev.423245429

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/CHANGELOG.md CHANGED
@@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [1.0.1] - 2021-12-01
8
+
9
+ ### Added
10
+
11
+ - Swagger doc
12
+ - Portman tests
13
+
7
14
  ## [1.0.0] - 2021-11-30
8
15
 
9
16
  ### Added
@@ -1,3 +1,9 @@
1
- -- EXAMPLE DATA - for testing purposes
2
-
3
- -- TBD
1
+ INSERT INTO public.fcd_traff_params
2
+ (publication_time, source_identification, measurement_or_calculation_time, predefined_location, version_of_predefined_location, traffic_level, queue_exists, queue_length, from_point, to_point, data_quality, input_values, average_vehicle_speed, travel_time, free_flow_travel_time, free_flow_speed, create_batch_id, created_at, created_by, update_batch_id, updated_at, updated_by)
3
+ VALUES('2021-09-21 01:36:59.000', 'TS10125T10123', '2021-09-21 01:36:01.000', 'TS10125T10123', 2, 'level2', false, NULL, NULL, NULL, 0.5, 1, 35, 31, 23, 46, NULL, '2021-10-18 11:01:16.534', NULL, NULL, '2021-10-18 11:01:16.534', NULL);
4
+ INSERT INTO public.fcd_traff_params
5
+ (publication_time, source_identification, measurement_or_calculation_time, predefined_location, version_of_predefined_location, traffic_level, queue_exists, queue_length, from_point, to_point, data_quality, input_values, average_vehicle_speed, travel_time, free_flow_travel_time, free_flow_speed, create_batch_id, created_at, created_by, update_batch_id, updated_at, updated_by)
6
+ VALUES('2021-09-21 01:36:59.000', 'TS10127T19629', '2021-09-21 01:36:01.000', 'TS10127T19629', 2, 'level1', false, NULL, NULL, NULL, 0.5, 1, 47, 26, 25, 48, NULL, '2021-10-18 11:01:16.534', NULL, NULL, '2021-10-18 11:01:16.534', NULL);
7
+ INSERT INTO public.fcd_traff_params
8
+ (publication_time, source_identification, measurement_or_calculation_time, predefined_location, version_of_predefined_location, traffic_level, queue_exists, queue_length, from_point, to_point, data_quality, input_values, average_vehicle_speed, travel_time, free_flow_travel_time, free_flow_speed, create_batch_id, created_at, created_by, update_batch_id, updated_at, updated_by)
9
+ VALUES('2021-09-21 01:36:59.000', 'TS10182T24828', '2021-09-21 01:36:01.000', 'TS10182T24828', 2, 'level1', false, NULL, NULL, NULL, 0.833, 3, 91, 87, 106, 76, NULL, '2021-10-18 11:01:16.534', NULL, NULL, '2021-10-18 11:01:16.534', NULL);
@@ -115,19 +115,32 @@ export interface IFloatingCarDataModel {
115
115
  }
116
116
  export declare type IFloatingCarDataModelElaboratedPart = Omit<IFloatingCarDataModel, "publication_time">;
117
117
  export interface IOutputApiFloatingCarData {
118
+ modelBaseVersion: string;
119
+ payloadPublicationLight: {
120
+ lang: string;
121
+ publicationTime: string;
122
+ publicationCreator: {
123
+ country: string;
124
+ nationalIdentifier: string;
125
+ };
126
+ elaboratedData: IOutputApiFloatingCarDataElaboratedData[];
127
+ };
128
+ }
129
+ export interface IOutputApiFloatingCarDataElaboratedData {
118
130
  measurementOrCalculationTime: string;
119
- location: string;
120
- averageVehicleSpeed: number;
121
- freeFlowSpeed: number;
122
- travelTime: number;
123
- freeFlowTravelTime: number;
124
- supplierCalculatedDataQuality: number;
125
- numberOfInputValuesUsed: number;
131
+ sourceIdentification: string;
132
+ supplierCalculatedDataQuality: string;
133
+ numberOfInputValuesUsed: string;
134
+ predefinedLocationId: string;
126
135
  trafficLevel: string;
127
- queueExists?: boolean;
128
- queueLength?: number;
129
- fromPoint?: number;
130
- toPoint?: number;
131
- pathOsm: number[];
136
+ averageVehicleSpeed: string;
137
+ travelTime: string;
138
+ freeFlowTravelTime: string;
139
+ freeFlowSpeed: string;
140
+ queueExists?: string;
141
+ queueLength?: string;
142
+ fromPoint?: string;
143
+ toPoint?: string;
144
+ osmPath?: number[];
132
145
  }
133
146
  export {};
@@ -22,7 +22,9 @@ class FCDRouter extends BaseRouter_1.BaseRouter {
22
22
  super();
23
23
  this.GetFloatingCarData = (req, res, next) => __awaiter(this, void 0, void 0, function* () {
24
24
  try {
25
+ const isRequestedPathOsm = req.query.osmPath == "true";
25
26
  const dataFromDb = yield this.floatingCarDataModel.GetAll({
27
+ locationId: req.query.locationId,
26
28
  limit: req.query.limit ? +req.query.limit : undefined,
27
29
  offset: req.query.offset ? +req.query.offset : undefined,
28
30
  from: req.query.from,
@@ -31,7 +33,7 @@ class FCDRouter extends BaseRouter_1.BaseRouter {
31
33
  if (!(dataFromDb === null || dataFromDb === void 0 ? void 0 : dataFromDb.length)) {
32
34
  throw new golemio_errors_1.CustomError("No data found", true, "FCDRouter", 404);
33
35
  }
34
- const transformedData = yield this.outputFloatingCarDataTransformation.transform(dataFromDb);
36
+ const transformedData = yield this.outputFloatingCarDataTransformation.transform(dataFromDb, isRequestedPathOsm);
35
37
  res.status(200).send(transformedData);
36
38
  }
37
39
  catch (err) {
@@ -40,7 +42,12 @@ class FCDRouter extends BaseRouter_1.BaseRouter {
40
42
  });
41
43
  this.floatingCarDataModel = new models_1.FloatingCarDataModel();
42
44
  this.outputFloatingCarDataTransformation = new OutputFloatingCarDataTransformation_1.OutputFloatingCarDataTransformation();
43
- this.router.get("/info", [(0, express_validator_1.query)("from").optional().isISO8601(), (0, express_validator_1.query)("to").optional().isISO8601()], Validation_1.pagination, Validation_1.checkErrors, (0, Validation_1.paginationLimitMiddleware)("FCDRouter"), (0, redis_1.useCacheMiddleware)(), this.GetFloatingCarData);
45
+ this.router.get("/info", [
46
+ (0, express_validator_1.query)("osmPath").optional().isString(),
47
+ (0, express_validator_1.query)("locationId").optional().isString(),
48
+ (0, express_validator_1.query)("from").optional().isISO8601(),
49
+ (0, express_validator_1.query)("to").optional().isISO8601(),
50
+ ], Validation_1.pagination, Validation_1.checkErrors, (0, Validation_1.paginationLimitMiddleware)("FCDRouter"), (0, redis_1.useCacheMiddleware)(), this.GetFloatingCarData);
44
51
  }
45
52
  }
46
53
  exports.FCDRouter = FCDRouter;
@@ -1 +1 @@
1
- {"version":3,"file":"FCDRouter.js","sourceRoot":"","sources":["../../src/output-gateway/FCDRouter.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,mFAAoE;AACpE,6EAAuE;AACvE,mEAA6E;AAC7E,oFAAiF;AACjF,6EAAkH;AAClH,qCAAgD;AAChD,+GAA8G;AAE9G,MAAa,SAAU,SAAQ,uBAAU;IAIrC;QACI,KAAK,EAAE,CAAC;QAeL,uBAAkB,GAAG,CAAO,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;YAClF,IAAI;gBACA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;oBACtD,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;oBACrD,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;oBACxD,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAc;oBAC9B,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,EAAY;iBAC7B,CAAC,CAAC;gBACH,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAA,EAAE;oBACrB,MAAM,IAAI,4BAAW,CAAC,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;iBAClE;gBACD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,mCAAmC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC7F,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACzC;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,GAAG,CAAC,CAAC;aACb;QACL,CAAC,CAAA,CAAC;QA9BE,IAAI,CAAC,oBAAoB,GAAG,IAAI,6BAAoB,EAAE,CAAC;QACvD,IAAI,CAAC,mCAAmC,GAAG,IAAI,yEAAmC,EAAE,CAAC;QAErF,IAAI,CAAC,MAAM,CAAC,GAAG,CACX,OAAO,EACP,CAAC,IAAA,yBAAK,EAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE,IAAA,yBAAK,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,EAC1E,uBAAU,EACV,wBAAW,EACX,IAAA,sCAAyB,EAAC,WAAW,CAAC,EACtC,IAAA,0BAAkB,GAAE,EACpB,IAAI,CAAC,kBAAkB,CAC1B,CAAC;IACN,CAAC;CAmBJ;AArCD,8BAqCC;AAED,MAAM,SAAS,GAAW,IAAI,SAAS,EAAE,CAAC,MAAM,CAAC;AAExC,8BAAS"}
1
+ {"version":3,"file":"FCDRouter.js","sourceRoot":"","sources":["../../src/output-gateway/FCDRouter.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,mFAAoE;AACpE,6EAAuE;AACvE,mEAA6E;AAC7E,oFAAiF;AACjF,6EAAkH;AAClH,qCAAgD;AAChD,+GAA8G;AAE9G,MAAa,SAAU,SAAQ,uBAAU;IAIrC;QACI,KAAK,EAAE,CAAC;QAoBL,uBAAkB,GAAG,CAAO,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;YAClF,IAAI;gBACA,MAAM,kBAAkB,GAAI,GAAG,CAAC,KAAK,CAAC,OAAkB,IAAI,MAAM,CAAC;gBAEnE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;oBACtD,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,UAAoB;oBAC1C,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;oBACrD,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;oBACxD,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAc;oBAC9B,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,EAAY;iBAC7B,CAAC,CAAC;gBACH,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAA,EAAE;oBACrB,MAAM,IAAI,4BAAW,CAAC,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;iBAClE;gBACD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,mCAAmC,CAAC,SAAS,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;gBACjH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACzC;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,GAAG,CAAC,CAAC;aACb;QACL,CAAC,CAAA,CAAC;QAtCE,IAAI,CAAC,oBAAoB,GAAG,IAAI,6BAAoB,EAAE,CAAC;QACvD,IAAI,CAAC,mCAAmC,GAAG,IAAI,yEAAmC,EAAE,CAAC;QAErF,IAAI,CAAC,MAAM,CAAC,GAAG,CACX,OAAO,EACP;YACI,IAAA,yBAAK,EAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;YACtC,IAAA,yBAAK,EAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;YACzC,IAAA,yBAAK,EAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE;YACpC,IAAA,yBAAK,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE;SACrC,EACD,uBAAU,EACV,wBAAW,EACX,IAAA,sCAAyB,EAAC,WAAW,CAAC,EACtC,IAAA,0BAAkB,GAAE,EACpB,IAAI,CAAC,kBAAkB,CAC1B,CAAC;IACN,CAAC;CAsBJ;AA7CD,8BA6CC;AAED,MAAM,SAAS,GAAW,IAAI,SAAS,EAAE,CAAC,MAAM,CAAC;AAExC,8BAAS"}
@@ -3,6 +3,7 @@ export declare class FloatingCarDataModel extends SequelizeModel {
3
3
  constructor();
4
4
  /**
5
5
  * @param {object} [options] Options object with params
6
+ * @param {number} [options.locationId] Predefined Location Id
6
7
  * @param {number} [options.limit] Limit
7
8
  * @param {number} [options.offset] Offset
8
9
  * @param {string} [options.from] ISO date<br>
@@ -10,6 +11,7 @@ export declare class FloatingCarDataModel extends SequelizeModel {
10
11
  * @returns Array of the retrieved records
11
12
  */
12
13
  GetAll: (options?: {
14
+ locationId?: string;
13
15
  limit?: number;
14
16
  offset?: number;
15
17
  from?: string;
@@ -22,6 +22,7 @@ class FloatingCarDataModel extends models_1.SequelizeModel {
22
22
  super(index_1.FCD.fcd_info.name, index_1.FCD.fcd_info.pgTableName, index_1.FCD.fcd_info.outputSequelizeAttributes);
23
23
  /**
24
24
  * @param {object} [options] Options object with params
25
+ * @param {number} [options.locationId] Predefined Location Id
25
26
  * @param {number} [options.limit] Limit
26
27
  * @param {number} [options.offset] Offset
27
28
  * @param {string} [options.from] ISO date<br>
@@ -29,12 +30,17 @@ class FloatingCarDataModel extends models_1.SequelizeModel {
29
30
  * @returns Array of the retrieved records
30
31
  */
31
32
  this.GetAll = (options = {}) => __awaiter(this, void 0, void 0, function* () {
32
- const { limit, offset, from, to } = options;
33
+ const { locationId, limit, offset, from, to } = options;
33
34
  try {
34
35
  const Op = sequelize_1.default.Op;
35
36
  const where = {
36
37
  [Op.and]: [{}],
37
38
  };
39
+ if (locationId) {
40
+ where[Op.and].push({
41
+ predefined_location: locationId,
42
+ });
43
+ }
38
44
  if (from) {
39
45
  where[Op.and].push({
40
46
  measurement_or_calculation_time: {
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingCarDataModel.js","sourceRoot":"","sources":["../../../src/output-gateway/models/FloatingCarDataModel.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oFAA4D;AAC5D,6EAAuE;AACvE,qEAA0E;AAC1E,0DAAiC;AAEjC,MAAa,oBAAqB,SAAQ,uBAAc;IACpD;QACI,KAAK,CAAC,WAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;QAG/F;;;;;;;WAOG;QAEI,WAAM,GAAG,CACZ,UAKI,EAAE,EACM,EAAE;YACd,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;YAC5C,IAAI;gBACA,MAAM,EAAE,GAAG,mBAAS,CAAC,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG;oBACV,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;iBACjB,CAAC;gBAEF,IAAI,IAAI,EAAE;oBACN,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACf,+BAA+B,EAAE;4BAC7B,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI;yBACjB;qBACJ,CAAC,CAAC;iBACN;gBAED,IAAI,EAAE,EAAE;oBACJ,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACf,+BAA+B,EAAE;4BAC7B,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;yBACf;qBACJ,CAAC,CAAC;iBACN;gBACD,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;oBAC5D,KAAK;oBACL,MAAM;oBACN,GAAG,EAAE,IAAI;oBACT,KAAK;iBACR,CAAC,CAAC;gBAEH,OAAO,qBAAqB,CAAC;aAChC;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,4BAAW,CAAC,qBAAqB,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;aACxF;QACL,CAAC,CAAA,CAAC;QAEK,WAAM,GAAG,GAAiC,EAAE;YAC/C,MAAM,IAAI,4BAAW,CAAC,iBAAiB,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC;QAC3E,CAAC,CAAA,CAAC;IAxDF,CAAC;CAyDJ;AA5DD,oDA4DC"}
1
+ {"version":3,"file":"FloatingCarDataModel.js","sourceRoot":"","sources":["../../../src/output-gateway/models/FloatingCarDataModel.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oFAA4D;AAC5D,6EAAuE;AACvE,qEAA0E;AAC1E,0DAAiC;AAEjC,MAAa,oBAAqB,SAAQ,uBAAc;IACpD;QACI,KAAK,CAAC,WAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;QAG/F;;;;;;;;WAQG;QAEI,WAAM,GAAG,CACZ,UAMI,EAAE,EACM,EAAE;YACd,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;YACxD,IAAI;gBACA,MAAM,EAAE,GAAG,mBAAS,CAAC,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG;oBACV,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;iBACjB,CAAC;gBAEF,IAAI,UAAU,EAAE;oBACZ,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACf,mBAAmB,EAAE,UAAU;qBAClC,CAAC,CAAC;iBACN;gBAED,IAAI,IAAI,EAAE;oBACN,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACf,+BAA+B,EAAE;4BAC7B,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI;yBACjB;qBACJ,CAAC,CAAC;iBACN;gBAED,IAAI,EAAE,EAAE;oBACJ,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACf,+BAA+B,EAAE;4BAC7B,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;yBACf;qBACJ,CAAC,CAAC;iBACN;gBACD,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;oBAC5D,KAAK;oBACL,MAAM;oBACN,GAAG,EAAE,IAAI;oBACT,KAAK;iBACR,CAAC,CAAC;gBAEH,OAAO,qBAAqB,CAAC;aAChC;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,4BAAW,CAAC,qBAAqB,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;aACxF;QACL,CAAC,CAAA,CAAC;QAEK,WAAM,GAAG,GAAiC,EAAE;YAC/C,MAAM,IAAI,4BAAW,CAAC,iBAAiB,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC;QAC3E,CAAC,CAAA,CAAC;IAhEF,CAAC;CAiEJ;AApED,oDAoEC"}
@@ -4,6 +4,6 @@ export declare class OutputFloatingCarDataTransformation {
4
4
  name: string;
5
5
  protected rsdTmcOsmMappingModel: RsdTmcOsmMappingModel;
6
6
  constructor();
7
- transform: (data: IFloatingCarDataModel[]) => Promise<IOutputApiFloatingCarData[]>;
7
+ transform: (data: IFloatingCarDataModel[], isRequestedPathOsm: Boolean) => Promise<IOutputApiFloatingCarData>;
8
8
  private getRsdTmcOsmMappingModelOptions;
9
9
  }
@@ -15,26 +15,54 @@ const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
15
15
  const models_1 = require("../models");
16
16
  class OutputFloatingCarDataTransformation {
17
17
  constructor() {
18
- this.transform = (data) => __awaiter(this, void 0, void 0, function* () {
19
- const result = [];
18
+ this.transform = (data, isRequestedPathOsm) => __awaiter(this, void 0, void 0, function* () {
19
+ const elaboratedData = [];
20
+ let latestPublicationTime = data[0].measurement_or_calculation_time;
20
21
  for (const item of data) {
21
- result.push({
22
+ const itemResultObject = {
22
23
  measurementOrCalculationTime: item.measurement_or_calculation_time,
23
- location: item.predefined_location,
24
- averageVehicleSpeed: item.average_vehicle_speed,
25
- freeFlowSpeed: item.free_flow_speed,
26
- travelTime: item.travel_time,
27
- freeFlowTravelTime: item.free_flow_travel_time,
28
- supplierCalculatedDataQuality: item.data_quality,
29
- numberOfInputValuesUsed: item.input_values,
24
+ sourceIdentification: item.source_identification,
25
+ supplierCalculatedDataQuality: item.data_quality.toString(),
26
+ numberOfInputValuesUsed: item.input_values.toString(),
27
+ predefinedLocationId: item.predefined_location,
30
28
  trafficLevel: item.traffic_level,
31
- queueExists: item.queue_exists,
32
- queueLength: item.queue_length,
33
- fromPoint: item.from_point,
34
- toPoint: item.to_point,
35
- pathOsm: yield this.rsdTmcOsmMappingModel.GetOne(this.getRsdTmcOsmMappingModelOptions(item.predefined_location)),
36
- });
29
+ averageVehicleSpeed: item.average_vehicle_speed.toString(),
30
+ travelTime: item.travel_time.toString(),
31
+ freeFlowTravelTime: item.free_flow_travel_time.toString(),
32
+ freeFlowSpeed: item.free_flow_speed.toString(),
33
+ };
34
+ if (item.queue_exists) {
35
+ itemResultObject.queueExists = item.queue_exists.toString();
36
+ }
37
+ if (item.queue_length) {
38
+ itemResultObject.queueLength = item.queue_length.toString();
39
+ }
40
+ if (item.from_point) {
41
+ itemResultObject.fromPoint = item.from_point.toString();
42
+ }
43
+ if (item.to_point) {
44
+ itemResultObject.toPoint = item.to_point.toString();
45
+ }
46
+ if (isRequestedPathOsm) {
47
+ itemResultObject.osmPath = yield this.rsdTmcOsmMappingModel.GetOne(this.getRsdTmcOsmMappingModelOptions(item.predefined_location));
48
+ }
49
+ elaboratedData.push(itemResultObject);
50
+ if (item.measurement_or_calculation_time > latestPublicationTime) {
51
+ latestPublicationTime = item.measurement_or_calculation_time;
52
+ }
37
53
  }
54
+ const result = {
55
+ modelBaseVersion: "3",
56
+ payloadPublicationLight: {
57
+ lang: "cz",
58
+ publicationTime: latestPublicationTime,
59
+ publicationCreator: {
60
+ country: "cz",
61
+ nationalIdentifier: "ŘSD",
62
+ },
63
+ elaboratedData,
64
+ },
65
+ };
38
66
  return result;
39
67
  });
40
68
  this.name = _sch_1.FCD.fcd_info.name;
@@ -1 +1 @@
1
- {"version":3,"file":"OutputFloatingCarDataTransformation.js","sourceRoot":"","sources":["../../../src/output-gateway/transformations/OutputFloatingCarDataTransformation.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAA2B;AAE3B,6EAAuE;AACvE,sCAAmD;AAEnD,MAAa,mCAAmC;IAI5C;QAMO,cAAS,GAAG,CAAO,IAA6B,EAAE,EAAE;YACvD,MAAM,MAAM,GAAgC,EAAE,CAAC;YAE/C,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;gBACrB,MAAM,CAAC,IAAI,CAAC;oBACR,4BAA4B,EAAE,IAAI,CAAC,+BAA+B;oBAClE,QAAQ,EAAE,IAAI,CAAC,mBAAmB;oBAClC,mBAAmB,EAAE,IAAI,CAAC,qBAAqB;oBAC/C,aAAa,EAAE,IAAI,CAAC,eAAe;oBACnC,UAAU,EAAE,IAAI,CAAC,WAAW;oBAC5B,kBAAkB,EAAE,IAAI,CAAC,qBAAqB;oBAC9C,6BAA6B,EAAE,IAAI,CAAC,YAAY;oBAChD,uBAAuB,EAAE,IAAI,CAAC,YAAY;oBAC1C,YAAY,EAAE,IAAI,CAAC,aAAa;oBAChC,WAAW,EAAE,IAAI,CAAC,YAAY;oBAC9B,WAAW,EAAE,IAAI,CAAC,YAAY;oBAC9B,SAAS,EAAE,IAAI,CAAC,UAAU;oBAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;oBACtB,OAAO,EAAE,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;iBACnH,CAAC,CAAC;aACN;YAED,OAAO,MAAM,CAAC;QAClB,CAAC,CAAA,CAAC;QA5BE,IAAI,CAAC,IAAI,GAAG,UAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,qBAAqB,GAAG,IAAI,8BAAqB,EAAE,CAAC;QACzD,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IA2BO,+BAA+B,CAAC,QAAgB;QACpD,MAAM,KAAK,GAAG,2CAA2C,CAAC;QAC1D,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,KAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;YACxD,OAAO;gBACH,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;gBACrB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;aACtB,CAAC;SACL;aAAM;YACH,MAAM,IAAI,4BAAW,CAAC,gEAAgE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;SACnH;IACL,CAAC;CACJ;AA/CD,kFA+CC"}
1
+ {"version":3,"file":"OutputFloatingCarDataTransformation.js","sourceRoot":"","sources":["../../../src/output-gateway/transformations/OutputFloatingCarDataTransformation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,194 @@
1
+ openapi: 3.0.3
2
+ info:
3
+ title: 🚢 Floating Car Data
4
+ description: >-
5
+ version: 1.0.0
6
+ contact:
7
+ name: Golemio Prague Data Plaform
8
+ email: golemio@operatorict.cz
9
+ url: https://golemio.cz
10
+
11
+ servers:
12
+ - url: https://rabin.golemio.cz/v2
13
+ description: Test (development) server
14
+ - url: https://api.golemio.cz/v2
15
+ description: Main (production) server
16
+
17
+ tags:
18
+ - name: 🚢 Floating Car Data
19
+ description: >-
20
+ 💡 FCD
21
+
22
+ paths:
23
+ /fcd/info:
24
+ get:
25
+ summary: GET All loating Car Data for a specific period or location
26
+ description: ""
27
+ tags:
28
+ - 🚢 Floating Car Data
29
+ operationId: getFCD
30
+ parameters:
31
+ - name: locationId
32
+ in: query
33
+ description: >-
34
+ Filters data with Predefined Location Id.
35
+ required: false
36
+ schema:
37
+ type: string
38
+ example: TS10125T10123
39
+ - name: osmPath
40
+ in: query
41
+ description: >-
42
+ Includes in the output pathOsm
43
+ required: false
44
+ schema:
45
+ type: boolean
46
+ example: true
47
+
48
+ - name: from
49
+ in: query
50
+ description: >-
51
+ Filters data where the measurement moment is greater than the query-specified moment.
52
+ required: false
53
+ schema:
54
+ type: string
55
+ example: 2021-06-21 10:00
56
+ - name: to
57
+ in: query
58
+ description: >-
59
+ Filters data where the measurement moment is less than the query-specified moment.
60
+ required: false
61
+ schema:
62
+ type: string
63
+ example: 2021-12-21 10:00
64
+ - name: limit
65
+ in: query
66
+ description: >-
67
+ Limits number of retrieved items. The maximum is 10000 (default
68
+ value)
69
+ required: false
70
+ schema:
71
+ type: integer
72
+ format: int64
73
+ example: 10
74
+ - name: offset
75
+ in: query
76
+ description: Number of the first items that are skipped
77
+ required: false
78
+ schema:
79
+ type: integer
80
+ format: int64
81
+ example: 0
82
+ responses:
83
+ "200":
84
+ description: successful operation
85
+ content:
86
+ application/json:
87
+ schema:
88
+ $ref: "#/components/schemas/FloatingCarDataPublication"
89
+ "401":
90
+ $ref: "#/components/responses/UnauthorizedError"
91
+ "404":
92
+ description: Not found
93
+
94
+ components:
95
+ responses:
96
+ UnauthorizedError:
97
+ description: API key is missing or invalid
98
+ headers:
99
+ WWW_Authenticate:
100
+ schema:
101
+ type: string
102
+
103
+ schemas:
104
+ FloatingCarDataPublication:
105
+ type: object
106
+ properties:
107
+ modelBaseVersion:
108
+ type: string
109
+ example: 3
110
+ situationPublicationLight:
111
+ type: object
112
+ properties:
113
+ lang:
114
+ type: string
115
+ example: cz
116
+ publicationTime:
117
+ type: string
118
+ example: "2021-06-21T10:00:37.000Z"
119
+ publicationCreator:
120
+ type: object
121
+ properties:
122
+ country:
123
+ type: string
124
+ example: cz
125
+ nationalIdentifier:
126
+ type: string
127
+ example: ŘSD
128
+ elaboratedData:
129
+ type: array
130
+ items:
131
+ $ref: "#/components/schemas/FCDElaboratedData"
132
+
133
+ FCDElaboratedData:
134
+ type: object
135
+ required:
136
+ [
137
+ measurementOrCalculationTime,
138
+ sourceIdentification,
139
+ supplierCalculatedDataQuality,
140
+ numberOfInputValuesUsed,
141
+ predefinedLocationId,
142
+ trafficLevel,
143
+ averageVehicleSpeed,
144
+ travelTime,
145
+ freeFlowTravelTime,
146
+ freeFlowSpeed,
147
+ ]
148
+ properties:
149
+ measurementOrCalculationTime:
150
+ type: string
151
+ example: "2021-06-21T10:00:37.000Z"
152
+ sourceIdentification:
153
+ type: string
154
+ example: "TS01239T25689"
155
+ supplierCalculatedDataQuality:
156
+ type: string
157
+ example: "0.5"
158
+ numberOfInputValuesUsed:
159
+ type: string
160
+ example: "1"
161
+ predefinedLocationId:
162
+ type: string
163
+ example: "TS01239T25689"
164
+ trafficLevel:
165
+ type: string
166
+ example: "level3"
167
+ averageVehicleSpeed:
168
+ type: string
169
+ example: "86"
170
+ travelTime:
171
+ type: string
172
+ example: "116"
173
+ freeFlowTravelTime:
174
+ type: string
175
+ example: "80"
176
+ freeFlowSpeed:
177
+ type: string
178
+ example: "126"
179
+ queueExists:
180
+ type: string
181
+ example: "true"
182
+ queueLength:
183
+ type: string
184
+ example: ""
185
+ fromPoint:
186
+ type: string
187
+ example: ""
188
+ toPoint:
189
+ type: string
190
+ example: ""
191
+ osmPath:
192
+ type: string
193
+ nullable: true
194
+ example: "[30372268, 1945960089, 1663150068, 30372270, 1945960092, 30372272, 1945960105]"
package/package.json CHANGED
@@ -1,78 +1,80 @@
1
1
  {
2
- "name": "@golemio/fcd",
3
- "version": "1.0.0",
4
- "description": "Golemio Floating Car Data Module",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "scripts": {
8
- "build": "rimraf ./dist && ttsc -p ./tsconfig.build.json",
9
- "build-minimal": "run-s 'build --sourceMap false --declaration false'",
10
- "build-watch": "run-s 'build --watch --preserveWatchOutput'",
11
- "pretest": "golemio-import-test-data",
12
- "test": "cross-env NODE_ENV=test TS_NODE_COMPILER='ttypescript' mocha --exit --check-leaks --timeout 120000 -r ts-node/register -r dotenv/config 'test/**/*.test.ts'",
13
- "test-debug": "run-s 'test --inspect-brk=9230'",
14
- "code-coverage": "nyc run-s 'test -r source-map-support/register'",
15
- "generate-docs": "typedoc --out docs/typedoc src",
16
- "lint": "eslint '{src,test}/**/*.ts'"
17
- },
18
- "keywords": [
19
- "golemio",
20
- "fcd"
21
- ],
22
- "author": "Operator ICT, a.s.",
23
- "license": "MIT",
24
- "repository": {
25
- "type": "git",
26
- "url": "https://gitlab.com/operator-ict/golemio/code/modules/fcd"
27
- },
28
- "devDependencies": {
29
- "@commitlint/cli": "^11.0.0",
30
- "@commitlint/config-conventional": "^11.0.0",
31
- "@golemio/core": "1.1.8",
32
- "@golemio/eslint-config": "^1.0.2",
33
- "@golemio/schema-definitions": "2.0.21",
34
- "@types/body-parser-xml": "^1.1.0",
35
- "@types/chai": "4.2.3",
36
- "@types/chai-as-promised": "7.1.2",
37
- "@types/mocha": "^8.2.0",
38
- "@types/node": "^14.14.20",
39
- "@types/sinon": "^9.0.10",
40
- "@types/supertest": "^2.0.10",
41
- "@zerollup/ts-transform-paths": "^1.7.18",
42
- "body-parser": "^1.19.0",
43
- "body-parser-xml": "^2.0.0",
44
- "chai": "4.2.0",
45
- "chai-as-promised": "7.1.1",
46
- "cross-env": "^7.0.3",
47
- "dotenv": "^8.2.0",
48
- "eslint": "^7.17.0",
49
- "husky": "^4.3.7",
50
- "mocha": "^8.2.1",
51
- "npm-run-all": "^4.1.5",
52
- "nyc": "^15.1.0",
53
- "prettier": "^2.2.1",
54
- "pretty-quick": "^3.1.0",
55
- "rimraf": "^3.0.2",
56
- "sinon": "^9.2.3",
57
- "source-map-support": "0.5.19",
58
- "supertest": "^6.0.1",
59
- "ts-node": "^9.1.1",
60
- "ttypescript": "^1.5.12",
61
- "typedoc": "^0.21.4",
62
- "typescript": "^4.1.3"
63
- },
64
- "peerDependencies": {
65
- "@golemio/core": "^1.0.5"
66
- },
67
- "dependencies": {
68
- "ajv": "^8.2.0",
69
- "xmldom": "github:xmldom/xmldom#0.7.0",
70
- "xsd2jsonschema": "^0.3.7"
71
- },
72
- "resolutions": {
73
- "@commitlint/cli/**/trim-newlines": "^3.0.1",
74
- "hosted-git-info": "^3.0.8",
75
- "xmldom": "github:xmldom/xmldom#0.7.0",
76
- "mpath": "^0.8.4"
77
- }
2
+ "name": "@golemio/fcd",
3
+ "version": "1.0.1-dev.423245429",
4
+ "description": "Golemio Floating Car Data Module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "rimraf ./dist && ttsc -p ./tsconfig.build.json",
9
+ "build-minimal": "run-s 'build --sourceMap false --declaration false'",
10
+ "build-watch": "run-s 'build --watch --preserveWatchOutput'",
11
+ "pretest": "golemio-import-test-data",
12
+ "test": "cross-env NODE_ENV=test TS_NODE_COMPILER='ttypescript' mocha --exit --check-leaks --timeout 120000 -r ts-node/register -r dotenv/config 'test/**/*.test.ts'",
13
+ "apidocs-test": "cross-env NODE_ENV=test TS_NODE_COMPILER='ttypescript' ts-node -r dotenv/config test/api-docs/index.ts",
14
+ "test-debug": "run-s 'test --inspect-brk=9230'",
15
+ "code-coverage": "nyc run-s 'test -r source-map-support/register'",
16
+ "generate-docs": "typedoc --out docs/typedoc src",
17
+ "lint": "eslint '{src,test}/**/*.ts'"
18
+ },
19
+ "keywords": [
20
+ "golemio",
21
+ "fcd"
22
+ ],
23
+ "author": "Operator ICT, a.s.",
24
+ "license": "MIT",
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "https://gitlab.com/operator-ict/golemio/code/modules/fcd"
28
+ },
29
+ "devDependencies": {
30
+ "@commitlint/cli": "^11.0.0",
31
+ "@commitlint/config-conventional": "^11.0.0",
32
+ "@golemio/core": "1.1.8",
33
+ "@golemio/eslint-config": "^1.0.2",
34
+ "@golemio/schema-definitions": "2.0.21",
35
+ "@types/body-parser-xml": "^1.1.0",
36
+ "@types/chai": "4.2.3",
37
+ "@types/chai-as-promised": "7.1.2",
38
+ "@types/mocha": "^8.2.0",
39
+ "@types/node": "^14.14.20",
40
+ "@types/sinon": "^9.0.10",
41
+ "@types/supertest": "^2.0.10",
42
+ "@zerollup/ts-transform-paths": "^1.7.18",
43
+ "body-parser": "^1.19.0",
44
+ "body-parser-xml": "^2.0.0",
45
+ "chai": "4.2.0",
46
+ "chai-as-promised": "7.1.1",
47
+ "cross-env": "^7.0.3",
48
+ "dotenv": "^8.2.0",
49
+ "eslint": "^7.17.0",
50
+ "husky": "^4.3.7",
51
+ "mocha": "^8.2.1",
52
+ "npm-run-all": "^4.1.5",
53
+ "nyc": "^15.1.0",
54
+ "prettier": "^2.2.1",
55
+ "pretty-quick": "^3.1.0",
56
+ "rimraf": "^3.0.2",
57
+ "sinon": "^9.2.3",
58
+ "source-map-support": "0.5.19",
59
+ "supertest": "^6.0.1",
60
+ "ts-node": "^9.1.1",
61
+ "ttypescript": "^1.5.12",
62
+ "typedoc": "^0.21.4",
63
+ "typescript": "^4.1.3"
64
+ },
65
+ "peerDependencies": {
66
+ "@golemio/core": "^1.0.5"
67
+ },
68
+ "dependencies": {
69
+ "@apideck/portman": "^1.12.0",
70
+ "ajv": "^8.2.0",
71
+ "xmldom": "github:xmldom/xmldom#0.7.0",
72
+ "xsd2jsonschema": "^0.3.7"
73
+ },
74
+ "resolutions": {
75
+ "@commitlint/cli/**/trim-newlines": "^3.0.1",
76
+ "hosted-git-info": "^3.0.8",
77
+ "xmldom": "github:xmldom/xmldom#0.7.0",
78
+ "mpath": "^0.8.4"
79
+ }
78
80
  }