@golemio/pid
Version:
Golemio PID Module
67 lines • 3.65 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RopidGtfsRouteSubAgencyTransformation = void 0;
const AbstractTransformation_1 = require("@golemio/core/dist/helpers/transformation/AbstractTransformation");
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
let RopidGtfsRouteSubAgencyTransformation = class RopidGtfsRouteSubAgencyTransformation extends AbstractTransformation_1.AbstractTransformation {
constructor() {
super();
this.name = "RopidGtfsRouteSubAgencyTransformation";
this.transformArray = (input, includeDuplicates = false) => {
const output = [];
for (let index = 0; index < input.length; index++) {
const element = input[index];
if (!element.route_id) {
continue;
}
if (!/^\d+$/.test(element.sub_agency_id)) {
new golemio_errors_1.GeneralError(`sub_agency_id should be number, got ${element.sub_agency_id} for route_id ${element.route_id}`, this.name);
}
output.push(this.transformElement(element));
}
return !includeDuplicates ? this.filterDuplicates(output) : output;
};
/**
* Filter duplicates by route_id and sub_agency_id.
* In case of duplicates, keep the first one in order with route_licence_number.
*/
this.filterDuplicates = (data) => {
const transformation = {};
for (let index = 0; index < data.length; index++) {
const element = data[index];
const key = `${element.route_id}-${element.sub_agency_id}`;
if (!transformation[key]) {
transformation[key] = element;
}
else if (!transformation[key].route_licence_number && element.route_licence_number) {
transformation[key] = element;
}
}
return Object.values(transformation);
};
this.transformInternal = (data) => {
return {
route_id: data.route_id,
route_licence_number: /^\d+$/.test(data.route_licence_number) ? Number.parseInt(data.route_licence_number) : null,
sub_agency_id: Number.parseInt(data.sub_agency_id),
sub_agency_name: data.sub_agency_name,
};
};
}
};
exports.RopidGtfsRouteSubAgencyTransformation = RopidGtfsRouteSubAgencyTransformation;
exports.RopidGtfsRouteSubAgencyTransformation = RopidGtfsRouteSubAgencyTransformation = __decorate([
(0, tsyringe_1.injectable)(),
__metadata("design:paramtypes", [])
], RopidGtfsRouteSubAgencyTransformation);
//# sourceMappingURL=RopidGtfsRouteSubAgencyTransformation.js.map