UNPKG

@golemio/parkings

Version:
431 lines 15.9 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Parkings = exports.Parkomats = void 0; const sequelize_1 = __importDefault(require("@golemio/core/dist/shared/sequelize")); const KORIDConfDatasourceJSONSchema = { type: "object", required: ["time", "geojson", "tarif"], additionalProperties: true, properties: { type: { type: "string" }, version: { type: "string" }, time: { type: "integer" }, geojson: { type: "object", required: ["type", "features"], additionalProperties: true, properties: { type: { type: "string" }, features: { type: "array", additionalProperties: true, minItems: 1, items: { type: "object", required: ["type", "properties", "geometry"], additionalProperties: false, properties: { type: { type: "string" }, properties: { type: "object", required: ["groupid", "title", "total", "tarif"], additionalProperties: true, properties: { groupid: { type: "number" }, title: { type: "string" }, total: { type: "number" }, tarif: { type: "string" }, }, }, geometry: { type: "object", required: ["type", "coordinates"], additionalProperties: false, properties: { type: { type: "string" }, coordinates: { type: "array" }, }, }, }, }, }, }, }, tarif: { type: "object", required: ["lastUpdated", "paymentMode", "freeOfCharge", "chargeBand"], additionalProperties: true, properties: { lastUpdated: { type: "string" }, paymentMode: { type: "array", items: { type: "string" }, }, paymentAdditionalDescription: { type: "string" }, freeOfCharge: { type: "boolean" }, urlLinkAddress: { type: "string" }, chargeBand: { type: "array", additionalProperties: false, items: { type: "object", required: ["chargeBandName", "chargeCurrency", "charge"], additionalProperties: true, properties: { chargeBandName: { type: "string" }, acceptedMeansOfPayment: { type: "array", items: { type: "string" }, }, chargeCurrency: { type: "string" }, charge: { type: "array", required: ["charge", "chargeOrderIndex", "chargeInterval"], additionalProperties: true, items: { charge: { type: "number" }, chargeType: { type: "string" }, chargeOrderIndex: { type: "number" }, chargeInterval: { type: "number" }, maxIterationsOfCharge: { type: "number" }, minIterationsOfCharge: { type: "number" }, startTimeOfPeriod: { type: "string" }, endTimeOfPeriod: { type: "string" }, }, }, }, }, }, }, }, }, }; const KORIDDatasourceJSONSchema = { type: "object", required: ["time", "data"], additionalProperties: true, properties: { type: { type: "string" }, version: { type: "string" }, time: { type: "integer" }, data: { type: "object", additionalProperties: { type: "object", required: ["tot", "fr", "occ", "cls"], additionalProperties: false, properties: { tot: { type: "integer" }, fr: { type: "integer" }, occ: { type: "integer" }, cls: { type: "integer" }, }, }, }, }, }; const parkingSDMA = { id: { type: sequelize_1.default.STRING, unique: true, }, source: { primaryKey: true, type: sequelize_1.default.STRING, }, source_id: { primaryKey: true, type: sequelize_1.default.STRING, }, data_provider: sequelize_1.default.STRING, name: sequelize_1.default.STRING, category: sequelize_1.default.STRING, date_modified: sequelize_1.default.BIGINT, address: sequelize_1.default.JSON, location: sequelize_1.default.GEOMETRY, area_served: sequelize_1.default.STRING, total_spot_number: sequelize_1.default.INTEGER, valid_from: sequelize_1.default.DATE, valid_to: sequelize_1.default.DATE, parking_type: sequelize_1.default.STRING, zone_type: sequelize_1.default.STRING, centroid: sequelize_1.default.GEOMETRY, security: sequelize_1.default.BOOLEAN, max_vehicle_dimensions: { allowNull: true, type: sequelize_1.default.ARRAY(sequelize_1.default.REAL), }, covered: sequelize_1.default.BOOLEAN, contact: sequelize_1.default.JSON, parking_policy: sequelize_1.default.STRING, sanitized_location: sequelize_1.default.GEOMETRY, area: sequelize_1.default.INTEGER, active: sequelize_1.default.BOOLEAN, // Auditni pole create_batch_id: { type: sequelize_1.default.BIGINT }, created_at: { type: sequelize_1.default.DATE }, created_by: { type: sequelize_1.default.STRING(150) }, update_batch_id: { type: sequelize_1.default.BIGINT }, updated_at: { type: sequelize_1.default.DATE }, updated_by: { type: sequelize_1.default.STRING(150) }, address_updated_at: { type: sequelize_1.default.DATE }, // kdy se aktualizovala adresa }; const parkingsFilteredSDMA = { ...parkingSDMA }; const parkingsMeasurementSDMA = { source: { primaryKey: true, allowNull: false, type: sequelize_1.default.STRING, }, source_id: { primaryKey: true, type: sequelize_1.default.STRING, }, parking_id: sequelize_1.default.STRING, available_spot_number: sequelize_1.default.INTEGER, closed_spot_number: sequelize_1.default.INTEGER, occupied_spot_number: sequelize_1.default.INTEGER, total_spot_number: sequelize_1.default.INTEGER, date_modified: { primaryKey: true, type: sequelize_1.default.BIGINT, }, // Auditni pole create_batch_id: { type: sequelize_1.default.BIGINT }, created_at: { type: sequelize_1.default.DATE }, created_by: { type: sequelize_1.default.STRING(150) }, update_batch_id: { type: sequelize_1.default.BIGINT }, updated_at: { type: sequelize_1.default.DATE }, updated_by: { type: sequelize_1.default.STRING(150) }, // Identikace uživatele/procesu, který poslední měnil záznam }; const parkingsMeasurementActualSDMA = { ...parkingsMeasurementSDMA, date_modified: sequelize_1.default.BIGINT, }; const datasourceIPRJSONSchema = { type: "array", items: { type: "object", required: ["geometry", "properties", "type"], additionalProperties: true, properties: { type: { type: "string" }, id: { type: "number" }, geometry: { type: "object", required: ["type", "coordinates"], additionalProperties: false, properties: { type: { type: "string" }, coordinates: { type: "array" }, }, }, properties: { type: "object", required: ["TARIFTAB"], additionalProperties: true, properties: { OBJECTID: { type: "number" }, PS_ZPS: { type: "string" }, SHAPE__Area: { type: "number" }, SHAPE__Length: { type: "number" }, TARIFTAB: { type: "string" }, TYPZONY: { type: "string" }, ZPS_ID: { type: "string" }, }, }, }, }, }; const datasourceTSKJSONSchema = { type: "array", items: { type: "object", required: ["geometry", "properties", "type"], additionalProperties: true, properties: { type: { type: "string" }, geometry: { type: "object", required: ["type", "coordinates"], additionalProperties: false, properties: { type: { type: "string" }, coordinates: { type: "array" }, }, }, properties: { type: "object", required: ["tarifTab", "ps_zps_celkem", "typZony", "tarifName", "platnostOd", "platnostDo"], additionalProperties: true, properties: { tarifTab: { type: "string" }, ps_zps_celkem: { type: "number" }, typZony: { type: "string" }, tarifName: { type: "string" }, platnostOd: { type: "string" }, platnostDo: { type: "string" }, ulice: { type: ["string", "null"] }, TARIF: { type: "number" }, CTARIF: { type: "number" }, }, }, }, }, }; const datasourceTSKTariffJSONSchema = { type: "array", items: { type: "object", required: ["TARIF", "CTARIF", "Day", "PricePerHour", "MaxParkingTime", "MaxPrice", "TimeFrom", "TimeTo", "PayAtHoliday"], additionalProperties: true, properties: { TARIF: { type: "string" }, CTARIF: { type: "string" }, Day: { type: "string" }, PricePerHour: { type: "string" }, MaxParkingTime: { type: "string" }, MaxPrice: { type: "string" }, TimeFrom: { type: "string" }, TimeTo: { type: "string" }, PayAtHoliday: { type: "string" }, }, }, }; const outputLocationJsonSchema = { type: "array", items: { $ref: "#/$defs/Item", }, $defs: { Item: { type: "object", properties: { id: { type: "string", }, source: { type: "string", }, source_id: { type: "string", }, data_provider: { type: "string", }, location: { type: "object", }, centroid: { type: "object", }, address: { type: "object", }, total_spot_number: { oneOf: [ { type: "integer", }, { type: "null", nullable: true, }, ], }, special_access: { oneOf: [ { type: "array", items: { type: "string", }, }, { type: "null", nullable: true, }, ], }, }, required: ["id", "data_provider", "location", "total_spot_number", "source", "source_id"], }, }, }; const outputLocationSDMA = { id: { type: sequelize_1.default.STRING, primaryKey: true, }, source: sequelize_1.default.STRING, source_id: sequelize_1.default.STRING, data_provider: sequelize_1.default.STRING, location: sequelize_1.default.GEOMETRY, centroid: sequelize_1.default.GEOMETRY, address: sequelize_1.default.JSON, total_spot_number: sequelize_1.default.INTEGER, special_access: sequelize_1.default.ARRAY(sequelize_1.default.STRING(50)), // Audit fields create_batch_id: { type: sequelize_1.default.BIGINT }, created_at: { type: sequelize_1.default.DATE }, created_by: { type: sequelize_1.default.STRING(150) }, update_batch_id: { type: sequelize_1.default.BIGINT }, updated_at: { type: sequelize_1.default.DATE }, updated_by: { type: sequelize_1.default.STRING(150) }, address_updated_at: { type: sequelize_1.default.DATE }, }; const forExport = { name: "Parkings", pgSchema: "parkings", ipr: { datasourceJsonSchema: datasourceIPRJSONSchema, name: "IPRParking", }, tsk: { datasourceGeoJsonSchema: datasourceTSKJSONSchema, datasourceTariffJsonSchema: datasourceTSKTariffJSONSchema, name: "TSKParking", }, korid: { datasourceJsonConfSchema: KORIDConfDatasourceJSONSchema, datasourceJsonSchema: KORIDDatasourceJSONSchema, name: "KoridParkings", }, parkings: { outputSequelizeAttributes: parkingSDMA, pgTableName: "parkings", }, parkingsFiltered: { name: "ParkingsFiltered", outputSequelizeAttributes: parkingsFilteredSDMA, pgTableName: "v_parkings_filtered", }, location: { name: "ParkingsLocation", outputJsonSchema: outputLocationJsonSchema, outputSequelizeAttributes: outputLocationSDMA, pgTableName: "parkings_location", }, measurements: { name: "ParkingsMeasurements", outputSequelizeAttributes: parkingsMeasurementSDMA, pgTableName: "parkings_measurements_part", }, measurementsActual: { name: "ParkingsMeasurementsActual", outputSequelizeAttributes: parkingsMeasurementActualSDMA, pgTableName: "parkings_measurements_actual", }, latestMeasurements: { name: "ParkingsLatestMeasurements", outputSequelizeAttributes: parkingsMeasurementSDMA, pgTableName: "v_parkings_latest_measurements", }, }; exports.Parkings = forExport; var Parkomats_1 = require("./Parkomats"); Object.defineProperty(exports, "Parkomats", { enumerable: true, get: function () { return Parkomats_1.Parkomats; } }); //# sourceMappingURL=index.js.map