@golemio/pid
Version:
Golemio PID Module
93 lines • 4.64 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RopidGTFSTripsModel = void 0;
const const_1 = require("../../schema-definitions/const");
const ropid_gtfs_1 = require("../../schema-definitions/ropid-gtfs");
const TripDto_1 = require("../../schema-definitions/ropid-gtfs/models/TripDto");
const models_1 = require("@golemio/core/dist/integration-engine/models");
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
const sequelize_1 = __importDefault(require("@golemio/core/dist/shared/sequelize"));
const RopidGTFSShapesModel_1 = require("./RopidGTFSShapesModel");
const RopidGTFSStopsModel_1 = require("./RopidGTFSStopsModel");
const RopidGTFSStopTimesModel_1 = require("./RopidGTFSStopTimesModel");
class RopidGTFSTripsModel extends models_1.PostgresModel {
get publicSequelizeModel() {
return this.sequelizeModel;
}
constructor() {
super(ropid_gtfs_1.RopidGTFS.trips.name + "Model", {
outputSequelizeAttributes: ropid_gtfs_1.RopidGTFS.trips.outputSequelizeAttributes,
pgTableName: ropid_gtfs_1.RopidGTFS.trips.pgTableName,
pgSchema: const_1.PG_SCHEMA,
savingType: "insertOnly",
}, new golemio_validator_1.JSONSchemaValidator(ropid_gtfs_1.RopidGTFS.trips.name + "ModelValidator", TripDto_1.TripDto.jsonSchema));
this.findByIdForDelayComputation = async (tripId) => {
const gtfsTripEntity = await this.sequelizeModel.findOne({
attributes: ["shape_id"],
include: [
{
attributes: [
"arrival_time",
"departure_time",
"shape_dist_traveled",
"stop_headsign",
"stop_id",
"stop_sequence",
[sequelize_1.default.literal(`EXTRACT(EPOCH FROM "arrival_time"::INTERVAL)::int`), "arrival_time_seconds"],
[sequelize_1.default.literal(`EXTRACT(EPOCH FROM "departure_time"::INTERVAL)::int`), "departure_time_seconds"],
[
sequelize_1.default.literal(`CASE when drop_off_type = '1' and pickup_type = '1' then true else false END`),
"is_no_stop_waypoint",
],
"stop_icons",
],
as: "stop_times",
model: this.modelGTFSStopTimes.sequelizeModel,
include: [
{
attributes: ["stop_id", "stop_lat", "stop_lon", "stop_name", "zone_id", "wheelchair_boarding"],
as: "stop",
model: this.modelGTFSStops.sequelizeModel,
required: true,
},
],
},
{
as: "shapes",
model: this.modelGTFSShapes.sequelizeModel,
attributes: ["shape_dist_traveled", "shape_id", "shape_pt_lat", "shape_pt_lon", "shape_pt_sequence"],
},
],
order: [
["stop_times", "stop_sequence", "ASC"],
["shapes", "shape_pt_sequence", "ASC"],
],
where: { trip_id: tripId },
});
if (!gtfsTripEntity) {
return null;
}
return gtfsTripEntity.toJSON();
};
this.modelGTFSStopTimes = new RopidGTFSStopTimesModel_1.RopidGTFSStopTimesModel();
this.modelGTFSStops = new RopidGTFSStopsModel_1.RopidGTFSStopsModel();
this.modelGTFSShapes = new RopidGTFSShapesModel_1.RopidGTFSShapesModel();
this.sequelizeModel.hasMany(this.modelGTFSStopTimes.sequelizeModel, {
as: "stop_times",
foreignKey: "trip_id",
sourceKey: "trip_id",
constraints: false,
});
this.sequelizeModel.hasMany(this.modelGTFSShapes.sequelizeModel, {
as: "shapes",
foreignKey: "shape_id",
sourceKey: "shape_id",
constraints: false,
});
}
}
exports.RopidGTFSTripsModel = RopidGTFSTripsModel;
//# sourceMappingURL=RopidGTFSTripsModel.js.map