UNPKG

@golemio/pid

Version:
66 lines 3.62 kB
"use strict"; 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 = exports.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 = __decorate([ (0, tsyringe_1.injectable)(), __metadata("design:paramtypes", []) ], RopidGtfsRouteSubAgencyTransformation); //# sourceMappingURL=RopidGtfsRouteSubAgencyTransformation.js.map