@golemio/pid 2.6.4 → 2.6.5-dev.834035052
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/db/example/00_clear_test_data.sql +4 -4
- package/db/example/03_ropidgtfs_dump.sql +10 -1
- package/db/example/14_nightDelays.sql +16 -8
- package/db/migrations/postgresql/20230327121511-departure-view.js +53 -0
- package/db/migrations/postgresql/sqls/20220915123941-partitioned-departures-down.sql +2 -0
- package/db/migrations/postgresql/sqls/20230307124639-positions-internal-down.sql +1 -1
- package/db/migrations/postgresql/sqls/20230327121511-departure-view-down.sql +81 -0
- package/db/migrations/postgresql/sqls/20230327121511-departure-view-up.sql +37 -0
- package/dist/integration-engine/queueDefinitions.js +10 -0
- package/dist/integration-engine/queueDefinitions.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/RopidGTFSMetadataModel.d.ts +13 -7
- package/dist/integration-engine/ropid-gtfs/RopidGTFSMetadataModel.js +50 -45
- package/dist/integration-engine/ropid-gtfs/RopidGTFSMetadataModel.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/RopidGTFSWorker.d.ts +4 -3
- package/dist/integration-engine/ropid-gtfs/RopidGTFSWorker.js +50 -18
- package/dist/integration-engine/ropid-gtfs/RopidGTFSWorker.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/data-access/{DeparturesRepository.d.ts → precomputed/DeparturesRepository.d.ts} +2 -1
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js +132 -0
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/MinMaxStopSequencesRepository.d.ts +9 -0
- package/dist/integration-engine/ropid-gtfs/{RopidGTFSMinMaxSequencesModel.js → data-access/precomputed/MinMaxStopSequencesRepository.js} +34 -33
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/MinMaxStopSequencesRepository.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/ServicesCalendarRepository.d.ts +9 -0
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/ServicesCalendarRepository.js +135 -0
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/ServicesCalendarRepository.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/TripScheduleRepository.d.ts +11 -0
- package/dist/integration-engine/ropid-gtfs/{RopidGTFSScheduledTripsModel.js → data-access/precomputed/TripScheduleRepository.js} +27 -26
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/TripScheduleRepository.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/index.d.ts +4 -0
- package/dist/integration-engine/ropid-gtfs/data-access/{index.js → precomputed/index.js} +3 -0
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/index.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/helpers/SourceTableSuffixEnum.d.ts +5 -0
- package/dist/integration-engine/ropid-gtfs/helpers/SourceTableSuffixEnum.js +10 -0
- package/dist/integration-engine/ropid-gtfs/helpers/SourceTableSuffixEnum.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/index.d.ts +0 -3
- package/dist/integration-engine/ropid-gtfs/index.js +0 -3
- package/dist/integration-engine/ropid-gtfs/index.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/utils.js +5 -4
- package/dist/integration-engine/ropid-gtfs/utils.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/VehicleDescriptor.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/VehicleDescriptor.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/interfaces/IGtfsRtFeedEntity.d.ts +3 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/CommonRunsRepository.d.ts +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/CommonRunsRepository.js +3 -3
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/CommonRunsRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/CommonMessageProcessor.js +3 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/CommonMessageProcessor.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-descriptors/data-access/DescriptorRepository.d.ts +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.d.ts +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js +38 -22
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateDelayTask.d.ts +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateDelayTask.js +7 -2
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateDelayTask.js.map +1 -1
- package/dist/output-gateway/departure-boards/DepartureBoardsRouter.js +1 -1
- package/dist/output-gateway/pid/data-access/DeparturesRepository.js +0 -6
- package/dist/output-gateway/pid/data-access/DeparturesRepository.js.map +1 -1
- package/dist/output-gateway/pid/middleware/checkTimeFromMiddleware.js +2 -2
- package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.d.ts +3 -3
- package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.js +15 -15
- package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.d.ts +0 -1
- package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.js +5 -18
- package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/precomputed/interfaces/IDeparturesModel.d.ts +0 -1
- package/docs/implementation_documentation.md +30 -10
- package/docs/openapi-output.yaml +8 -1
- package/package.json +4 -3
- package/db/example/99_precomputed_tables.sql +0 -169
- package/dist/integration-engine/ropid-gtfs/RopidGTFSMinMaxSequencesModel.d.ts +0 -19
- package/dist/integration-engine/ropid-gtfs/RopidGTFSMinMaxSequencesModel.js.map +0 -1
- package/dist/integration-engine/ropid-gtfs/RopidGTFSScheduledTripsModel.d.ts +0 -21
- package/dist/integration-engine/ropid-gtfs/RopidGTFSScheduledTripsModel.js.map +0 -1
- package/dist/integration-engine/ropid-gtfs/RopidGTFSServicesFirst14daysModel.d.ts +0 -19
- package/dist/integration-engine/ropid-gtfs/RopidGTFSServicesFirst14daysModel.js +0 -142
- package/dist/integration-engine/ropid-gtfs/RopidGTFSServicesFirst14daysModel.js.map +0 -1
- package/dist/integration-engine/ropid-gtfs/data-access/DeparturesRepository.js +0 -162
- package/dist/integration-engine/ropid-gtfs/data-access/DeparturesRepository.js.map +0 -1
- package/dist/integration-engine/ropid-gtfs/data-access/index.d.ts +0 -1
- package/dist/integration-engine/ropid-gtfs/data-access/index.js.map +0 -1
|
@@ -46,7 +46,7 @@ Modul slouží k ukládání a poskytování informací o jízdních řádech a
|
|
|
46
46
|
- cron definice:
|
|
47
47
|
- cron.vehicle-positions.ropidgtfs.checkForNewData
|
|
48
48
|
- rabin `0 35 5,12 * * *`
|
|
49
|
-
- prod `0 50
|
|
49
|
+
- prod `0 20 5 * * *`, `0 50 12 * * *`
|
|
50
50
|
- názvy rabbitmq front
|
|
51
51
|
- vehicle-positions.ropidgtfs.checkForNewData
|
|
52
52
|
- vehicle-positions.ropidgtfs.downloadDatasets se zprávou `["PID_GTFS"]`
|
|
@@ -177,7 +177,7 @@ _:warning: Původním záměrem bylo využití OIS číselníku během zpracová
|
|
|
177
177
|
- cron definice:
|
|
178
178
|
- cron.vehicle-positions.vehicledescriptors.refreshDescriptors
|
|
179
179
|
- rabin `0 15 5,12 * * *`
|
|
180
|
-
- prod `0
|
|
180
|
+
- prod `0 10 5,12 * * *`
|
|
181
181
|
- názvy rabbitmq front
|
|
182
182
|
- vehicle-positions.vehicledescriptors.refreshDescriptors
|
|
183
183
|
|
|
@@ -383,6 +383,7 @@ Worker má na starost kontrolu a aktualizaci všech číselníků
|
|
|
383
383
|
- parametry: `["PID_GTFS", "CIS_STOPS", "OIS_MAPPING", "RUN_NUMBERS"]`
|
|
384
384
|
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
|
|
385
385
|
- název: vehicle-positions.ropidgtfs.downloadDatasets
|
|
386
|
+
- název: vehicle-positions.ropidgtfs.refreshPrecomputedTables
|
|
386
387
|
- datové zdroje
|
|
387
388
|
- ROPID FTP
|
|
388
389
|
- transformace
|
|
@@ -401,10 +402,29 @@ Worker má na starost kontrolu a aktualizaci všech číselníků
|
|
|
401
402
|
- RopidGTFSCisStopGroupsModel `ropidgtfs_cis_stop_groups`
|
|
402
403
|
- RopidGTFSOisModel `ropidgtfs_ois`
|
|
403
404
|
- RopidGTFSRunNumbersModel `ropidgtfs_run_numbers`
|
|
404
|
-
-
|
|
405
|
-
-
|
|
406
|
-
-
|
|
407
|
-
-
|
|
405
|
+
- RopidGTFSPrecomputedServicesCalendarModel `ropidgtfs_precomputed_services_calendar`
|
|
406
|
+
- RopidGTFSPrecomputedMinMaxStopSequencesModel `ropidgtfs_precomputed_minmax_stop_sequences`
|
|
407
|
+
- RopidGTFSPrecomputedDeparturesModel `ropidgtfs_precomputed_departures`
|
|
408
|
+
- RopidGTFSPrecomputedTripScheduleModel `ropidgtfs_precomputed_trip_schedule`
|
|
409
|
+
|
|
410
|
+
#### _refreshPrecomputedTables()_
|
|
411
|
+
|
|
412
|
+
- vstupní rabbitmq fronta
|
|
413
|
+
- název: vehicle-positions.ropidgtfs.refreshPrecomputedTables
|
|
414
|
+
- TTL: 59 minut
|
|
415
|
+
- parametry: žádné
|
|
416
|
+
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
|
|
417
|
+
- žádné
|
|
418
|
+
- datové zdroje
|
|
419
|
+
- ROPID FTP
|
|
420
|
+
- transformace
|
|
421
|
+
- žádné
|
|
422
|
+
- data modely
|
|
423
|
+
- RopidGTFSMetadataModel `ropidgtfs_metadata`
|
|
424
|
+
- RopidGTFSPrecomputedServicesCalendarModel `ropidgtfs_precomputed_services_calendar`
|
|
425
|
+
- RopidGTFSPrecomputedMinMaxStopSequencesModel `ropidgtfs_precomputed_minmax_stop_sequences`
|
|
426
|
+
- RopidGTFSPrecomputedDeparturesModel `ropidgtfs_precomputed_departures`
|
|
427
|
+
- RopidGTFSPrecomputedTripScheduleModel `ropidgtfs_precomputed_trip_schedule`
|
|
408
428
|
|
|
409
429
|
#### _checkForNewDeparturesPresets()_
|
|
410
430
|
|
|
@@ -529,7 +549,7 @@ Worker má na starost zpracování a transformaci polohových dat, výpočet zpo
|
|
|
529
549
|
- transformace
|
|
530
550
|
- žádné
|
|
531
551
|
- data modely
|
|
532
|
-
-
|
|
552
|
+
- RopidGTFSPrecomputedTripScheduleModel `ropidgtfs_precomputed_trip_schedule`
|
|
533
553
|
- VPPositionsModel `vehiclepositions_positions`
|
|
534
554
|
|
|
535
555
|
#### _task: UpdateRunsGtfsTripIdTask_
|
|
@@ -546,7 +566,7 @@ Worker má na starost zpracování a transformaci polohových dat, výpočet zpo
|
|
|
546
566
|
- transformace
|
|
547
567
|
- oběh a nalezené GTFS scheduled trips se transformují na trips [TripsMapper.mapCommonRunToDto](../src/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsMapper.ts) a pozice [PositionsMapper.mapCommonRunToDto](../src/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.ts) pro frontu `vehiclepositions.updateDelay`
|
|
548
568
|
- data modely
|
|
549
|
-
-
|
|
569
|
+
- RopidGTFSPrecomputedTripScheduleModel `ropidgtfs_precomputed_trip_schedule`
|
|
550
570
|
- VPTripsModel `vehiclepositions_trips`
|
|
551
571
|
- VPPositionsModel `vehiclepositions_positions`
|
|
552
572
|
|
|
@@ -690,7 +710,7 @@ Worker má na starost zpracování a transformaci TCP oběhů
|
|
|
690
710
|
- [MetroRunsMessageProcessingTransformation](../src/integration-engine/vehicle-positions/workers/runs/tasks/transformations/MetroRunsMessageProcessingTransformation.ts), dále se oběhy a nalezené GTFS scheduled trips transformují na trips [TripsMapper.mapMetroRunToDto](../src/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsMapper.ts)s) a pozice [PositionsMapper.mapMetroRunToDto](../src/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.ts) pro frontu `vehiclepositions.updateDelay`
|
|
691
711
|
- data modely
|
|
692
712
|
- MetroRailtrackGPSModel `ropidgtfs_metro_railtrack_gps`
|
|
693
|
-
- RopidGTFSScheduledTripsModel `
|
|
713
|
+
- RopidGTFSScheduledTripsModel `ropidgtfs_precomputed_trip_schedule`
|
|
694
714
|
- VPPositionsModel `vehiclepositions_positions`
|
|
695
715
|
- VPTripsModel `vehiclepositions_trips`
|
|
696
716
|
- CommonRunsModel `vehiclepositions_runs`
|
|
@@ -924,7 +944,7 @@ Worker má na starost stahování informací o vozidlech (např. dostupnost klim
|
|
|
924
944
|
#### _/pid/departureboards_
|
|
925
945
|
|
|
926
946
|
- zdrojové tabulky
|
|
927
|
-
- `
|
|
947
|
+
- `ropidgtfs_precomputed_departures`, `ropidgtfs_stops`, `ropidgtfs_cis_stops`, `ropidvymi_events`, `ropidvymi_events_stops`, `ropid_departures_directions`, `vehiclepositions_positions`, `vehiclepositions_trips`
|
|
928
948
|
|
|
929
949
|
#### _/pid/infotexts_
|
|
930
950
|
|
package/docs/openapi-output.yaml
CHANGED
|
@@ -530,6 +530,13 @@ paths:
|
|
|
530
530
|
schema:
|
|
531
531
|
type: boolean
|
|
532
532
|
example: true
|
|
533
|
+
- name: includeNotPublic
|
|
534
|
+
in: query
|
|
535
|
+
description: Enrich result dataset with not public trips (trips without run schedule)
|
|
536
|
+
schema:
|
|
537
|
+
type: boolean
|
|
538
|
+
default: false
|
|
539
|
+
example: true
|
|
533
540
|
- name: includePositions
|
|
534
541
|
in: query
|
|
535
542
|
description: Enrich result dataset with positions
|
|
@@ -758,7 +765,7 @@ paths:
|
|
|
758
765
|
example: 60
|
|
759
766
|
- name: timeFrom
|
|
760
767
|
in: query
|
|
761
|
-
description: Set initial timestamp for time interval given by `minutesBefore` and `minutesAfter`. Use to simulate query time different from now. Use ISO 8601 time format and URL encoded symbols - `%3A` for `:`, `%2B` for `.`, `%2F` for `+`. Time zone is set according to the `preferredTimezone` parameter. Applicable range is -6 hours +
|
|
768
|
+
description: Set initial timestamp for time interval given by `minutesBefore` and `minutesAfter`. Use to simulate query time different from now. Use ISO 8601 time format and URL encoded symbols - `%3A` for `:`, `%2B` for `.`, `%2F` for `+`. Time zone is set according to the `preferredTimezone` parameter. Applicable range is -6 hours +2 days from now.
|
|
762
769
|
required: false
|
|
763
770
|
schema:
|
|
764
771
|
type: string
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golemio/pid",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.5-dev.834035052",
|
|
4
4
|
"description": "Golemio PID Module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
"build": "rimraf ./dist && ttsc -p ./tsconfig.build.json",
|
|
9
9
|
"build-minimal": "run-s 'build -- --sourceMap false --declaration false'",
|
|
10
10
|
"build-watch": "run-s 'build -- --watch --preserveWatchOutput'",
|
|
11
|
-
"
|
|
11
|
+
"refresh-precomputed-tables": "cross-env NODE_ENV='test' TS_NODE_COMPILER='ttypescript' TZ='UTC' ts-node -r dotenv/config test/scripts/refresh-precomputed-tables.ts",
|
|
12
|
+
"pretest": "golemio import-db-data && run-s 'refresh-precomputed-tables'",
|
|
12
13
|
"test": "cross-env NODE_ENV='test' TS_NODE_COMPILER='ttypescript' TZ='UTC' mocha --exit --check-leaks --timeout 120000 -r ts-node/register --file 'test/setup.ts' -r dotenv/config 'test/**/*.test.ts'",
|
|
13
14
|
"test-debug": "run-s 'test -- --inspect-brk=9230'",
|
|
14
15
|
"apidocs": "cross-env NODE_ENV=test TS_NODE_COMPILER='ttypescript' ts-node -r dotenv/config test/api-docs/index.ts",
|
|
@@ -84,4 +85,4 @@
|
|
|
84
85
|
"html-entities": "^2.3.3",
|
|
85
86
|
"pg-copy-streams": "^5.1.1"
|
|
86
87
|
}
|
|
87
|
-
}
|
|
88
|
+
}
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
INSERT INTO ropidgtfs_services_first14days_actual
|
|
2
|
-
SELECT dates.date,
|
|
3
|
-
(date_part('day'::text, ((dates.date)::timestamp without time zone - (to_char(timezone('Europe/Prague'::text, now()), 'YYYY-MM-DD'::text))::timestamp without time zone)))::integer AS day_diff,
|
|
4
|
-
ropidgtfs_calendar.service_id
|
|
5
|
-
FROM (( SELECT (date_trunc('day'::text, dd.dd))::date AS date
|
|
6
|
-
FROM generate_series(((( SELECT (CURRENT_TIMESTAMP - '1 day'::interval)))::date)::timestamp with time zone, ((( SELECT (CURRENT_TIMESTAMP + '12 days'::interval)))::date)::timestamp with time zone, '1 day'::interval) dd(dd)) dates
|
|
7
|
-
JOIN ropidgtfs_calendar ON ((1 = 1)))
|
|
8
|
-
WHERE (((dates.date >= (ropidgtfs_calendar.start_date)::date) AND (dates.date <= (ropidgtfs_calendar.end_date)::date) AND (((btrim(to_char((dates.date)::timestamp with time zone, 'day'::text)) = 'monday'::text) AND (ropidgtfs_calendar.monday = 1)) OR ((btrim(to_char((dates.date)::timestamp with time zone, 'day'::text)) = 'tuesday'::text) AND (ropidgtfs_calendar.tuesday = 1)) OR ((btrim(to_char((dates.date)::timestamp with time zone, 'day'::text)) = 'wednesday'::text) AND (ropidgtfs_calendar.wednesday = 1)) OR ((btrim(to_char((dates.date)::timestamp with time zone, 'day'::text)) = 'thursday'::text) AND (ropidgtfs_calendar.thursday = 1)) OR ((btrim(to_char((dates.date)::timestamp with time zone, 'day'::text)) = 'friday'::text) AND (ropidgtfs_calendar.friday = 1)) OR ((btrim(to_char((dates.date)::timestamp with time zone, 'day'::text)) = 'saturday'::text) AND (ropidgtfs_calendar.saturday = 1)) OR ((btrim(to_char((dates.date)::timestamp with time zone, 'day'::text)) = 'sunday'::text) AND (ropidgtfs_calendar.sunday = 1))) AND (NOT ((ropidgtfs_calendar.service_id)::text IN ( SELECT ropidgtfs_calendar_dates.service_id
|
|
9
|
-
FROM ropidgtfs_calendar_dates
|
|
10
|
-
WHERE ((ropidgtfs_calendar_dates.exception_type = 2) AND (dates.date = (ropidgtfs_calendar_dates.date)::date)))))) OR ((ropidgtfs_calendar.service_id)::text IN ( SELECT ropidgtfs_calendar_dates.service_id
|
|
11
|
-
FROM ropidgtfs_calendar_dates
|
|
12
|
-
WHERE ((ropidgtfs_calendar_dates.exception_type = 1) AND (dates.date = (ropidgtfs_calendar_dates.date)::date)))))
|
|
13
|
-
ORDER BY dates.date;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
INSERT INTO ropidgtfs_trips_minmaxsequences_actual
|
|
17
|
-
SELECT ropidgtfs_stop_times.trip_id,
|
|
18
|
-
max(ropidgtfs_stop_times.stop_sequence) AS max_stop_sequence,
|
|
19
|
-
min(ropidgtfs_stop_times.stop_sequence) AS min_stop_sequence,
|
|
20
|
-
(GREATEST(max((ropidgtfs_stop_times.arrival_time)::interval), max((ropidgtfs_stop_times.departure_time)::interval)))::text AS max_stop_time,
|
|
21
|
-
(LEAST(min((ropidgtfs_stop_times.arrival_time)::interval), min((ropidgtfs_stop_times.departure_time)::interval)))::text AS min_stop_time
|
|
22
|
-
FROM ropidgtfs_stop_times
|
|
23
|
-
GROUP BY ropidgtfs_stop_times.trip_id;
|
|
24
|
-
|
|
25
|
-
SELECT departure_part(part_index, split_part(current_setting('search_path'), ',', 1)) FROM
|
|
26
|
-
(SELECT DISTINCT left(stop_id, 4) part_index FROM ropidgtfs_stops) as parts;
|
|
27
|
-
|
|
28
|
-
INSERT INTO ropidgtfs_departures
|
|
29
|
-
SELECT t.stop_sequence,
|
|
30
|
-
t.stop_headsign,
|
|
31
|
-
t.pickup_type,
|
|
32
|
-
t.drop_off_type,
|
|
33
|
-
t.arrival_time,
|
|
34
|
-
CASE
|
|
35
|
-
WHEN (date_part('hour'::text, (t.arrival_time)::interval) > (23)::double precision) THEN make_timestamptz((date_part('year'::text, (t4.date + '1 day'::interval)))::integer, (date_part('month'::text, (t4.date + '1 day'::interval)))::integer, (date_part('day'::text, (t4.date + '1 day'::interval)))::integer, ((date_part('hour'::text, (t.arrival_time)::interval))::integer - 24), (date_part('minute'::text, (t.arrival_time)::interval))::integer, date_part('second'::text, (t.arrival_time)::interval), 'Europe/Prague'::text)
|
|
36
|
-
ELSE make_timestamptz((date_part('year'::text, t4.date))::integer, (date_part('month'::text, t4.date))::integer, (date_part('day'::text, t4.date))::integer, (date_part('hour'::text, (t.arrival_time)::interval))::integer, (date_part('minute'::text, (t.arrival_time)::interval))::integer, date_part('second'::text, (t.arrival_time)::interval), 'Europe/Prague'::text)
|
|
37
|
-
END AS arrival_datetime,
|
|
38
|
-
t.departure_time,
|
|
39
|
-
CASE
|
|
40
|
-
WHEN (date_part('hour'::text, (t.departure_time)::interval) > (23)::double precision) THEN make_timestamptz((date_part('year'::text, (t4.date + '1 day'::interval)))::integer, (date_part('month'::text, (t4.date + '1 day'::interval)))::integer, (date_part('day'::text, (t4.date + '1 day'::interval)))::integer, ((date_part('hour'::text, (t.departure_time)::interval))::integer - 24), (date_part('minute'::text, (t.departure_time)::interval))::integer, date_part('second'::text, (t.departure_time)::interval), 'Europe/Prague'::text)
|
|
41
|
-
ELSE make_timestamptz((date_part('year'::text, t4.date))::integer, (date_part('month'::text, t4.date))::integer, (date_part('day'::text, t4.date))::integer, (date_part('hour'::text, (t.departure_time)::interval))::integer, (date_part('minute'::text, (t.departure_time)::interval))::integer, date_part('second'::text, (t.departure_time)::interval), 'Europe/Prague'::text)
|
|
42
|
-
END AS departure_datetime,
|
|
43
|
-
t0.stop_id,
|
|
44
|
-
t0.stop_name,
|
|
45
|
-
t0.platform_code,
|
|
46
|
-
t0.wheelchair_boarding,
|
|
47
|
-
t1.min_stop_sequence,
|
|
48
|
-
t1.max_stop_sequence,
|
|
49
|
-
t2.trip_id,
|
|
50
|
-
t2.trip_headsign,
|
|
51
|
-
t2.trip_short_name,
|
|
52
|
-
t2.wheelchair_accessible,
|
|
53
|
-
t3.service_id,
|
|
54
|
-
t4.date,
|
|
55
|
-
t5.route_short_name,
|
|
56
|
-
t5.route_type,
|
|
57
|
-
t5.route_id,
|
|
58
|
-
t5.is_night,
|
|
59
|
-
t5.is_regional,
|
|
60
|
-
t5.is_substitute_transport,
|
|
61
|
-
t6.stop_sequence AS next_stop_sequence,
|
|
62
|
-
t6.stop_id AS next_stop_id,
|
|
63
|
-
t7.stop_sequence AS last_stop_sequence,
|
|
64
|
-
t7.stop_id AS last_stop_id,
|
|
65
|
-
left(t0.stop_id, 4) AS part_index
|
|
66
|
-
FROM ((((((((ropidgtfs_stop_times t
|
|
67
|
-
LEFT JOIN ropidgtfs_stops t0 ON (((t.stop_id)::text = (t0.stop_id)::text)))
|
|
68
|
-
LEFT JOIN ropidgtfs_trips t2 ON (((t.trip_id)::text = (t2.trip_id)::text)))
|
|
69
|
-
JOIN ropidgtfs_services_first14days t4 ON (((t2.service_id)::text = (t4.service_id)::text)))
|
|
70
|
-
LEFT JOIN ropidgtfs_trips_minmaxsequences t1 ON (((t.trip_id)::text = (t1.trip_id)::text)))
|
|
71
|
-
LEFT JOIN ropidgtfs_calendar t3 ON (((t2.service_id)::text = (t3.service_id)::text)))
|
|
72
|
-
LEFT JOIN ropidgtfs_routes t5 ON (((t2.route_id)::text = (t5.route_id)::text)))
|
|
73
|
-
LEFT JOIN ropidgtfs_stop_times t6 ON ((((t.trip_id)::text = (t6.trip_id)::text) AND (t6.stop_sequence = (t.stop_sequence + 1)))))
|
|
74
|
-
LEFT JOIN ropidgtfs_stop_times t7 ON ((((t.trip_id)::text = (t7.trip_id)::text) AND (t7.stop_sequence = (t.stop_sequence - 1)))))
|
|
75
|
-
WHERE t0.stop_id IS NOT NULL;
|
|
76
|
-
|
|
77
|
-
INSERT INTO ropidgtfs_scheduled_trips_actual
|
|
78
|
-
SELECT
|
|
79
|
-
t0.origin_route_id,
|
|
80
|
-
t0.trip_id,
|
|
81
|
-
t0.service_id,
|
|
82
|
-
t0.run_number,
|
|
83
|
-
t0.date,
|
|
84
|
-
t0.route_id,
|
|
85
|
-
t0.route_type,
|
|
86
|
-
t0.route_short_name,
|
|
87
|
-
t0.is_regional,
|
|
88
|
-
t0.is_substitute_transport,
|
|
89
|
-
t0.is_night,
|
|
90
|
-
t0.trip_headsign,
|
|
91
|
-
t0.trip_short_name,
|
|
92
|
-
t0.block_id,
|
|
93
|
-
t0.exceptional,
|
|
94
|
-
t0.min_stop_time,
|
|
95
|
-
t0.max_stop_time,
|
|
96
|
-
CASE
|
|
97
|
-
WHEN EXTRACT(HOUR FROM t0.min_stop_time) > 23
|
|
98
|
-
THEN make_timestamptz(
|
|
99
|
-
DATE_PART('year', t0.date + INTERVAL '1 day')::INT,
|
|
100
|
-
DATE_PART('month', t0.date + INTERVAL '1 day')::INT,
|
|
101
|
-
DATE_PART('day', t0.date + INTERVAL '1 day')::INT,
|
|
102
|
-
DATE_PART('hour', t0.min_stop_time)::INT - 24,
|
|
103
|
-
DATE_PART('minute', t0.min_stop_time)::INT,
|
|
104
|
-
DATE_PART('second', t0.min_stop_time),
|
|
105
|
-
'Europe/Prague'
|
|
106
|
-
)
|
|
107
|
-
ELSE make_timestamptz(
|
|
108
|
-
DATE_PART('year', t0.date)::INT,
|
|
109
|
-
DATE_PART('month', t0.date)::INT,
|
|
110
|
-
DATE_PART('day', t0.date)::INT,
|
|
111
|
-
DATE_PART('hour', t0.min_stop_time)::INT,
|
|
112
|
-
DATE_PART('minute', t0.min_stop_time)::INT,
|
|
113
|
-
DATE_PART('second', t0.min_stop_time),
|
|
114
|
-
'Europe/Prague'
|
|
115
|
-
)
|
|
116
|
-
END as start_timestamp,
|
|
117
|
-
CASE
|
|
118
|
-
WHEN EXTRACT(HOUR FROM t0.max_stop_time) > 23
|
|
119
|
-
THEN make_timestamptz(
|
|
120
|
-
DATE_PART('year', t0.date + INTERVAL '1 day')::INT,
|
|
121
|
-
DATE_PART('month', t0.date + INTERVAL '1 day')::INT,
|
|
122
|
-
DATE_PART('day', t0.date + INTERVAL '1 day')::INT,
|
|
123
|
-
DATE_PART('hour', t0.max_stop_time)::INT - 24,
|
|
124
|
-
DATE_PART('minute', t0.max_stop_time)::INT,
|
|
125
|
-
DATE_PART('second', t0.max_stop_time),
|
|
126
|
-
'Europe/Prague'
|
|
127
|
-
)
|
|
128
|
-
ELSE make_timestamptz(
|
|
129
|
-
DATE_PART('year', t0.date)::INT,
|
|
130
|
-
DATE_PART('month', t0.date)::INT,
|
|
131
|
-
DATE_PART('day', t0.date)::INT,
|
|
132
|
-
DATE_PART('hour', t0.max_stop_time)::INT,
|
|
133
|
-
DATE_PART('minute', t0.max_stop_time)::INT,
|
|
134
|
-
DATE_PART('second', t0.max_stop_time),
|
|
135
|
-
'Europe/Prague'
|
|
136
|
-
)
|
|
137
|
-
END as end_timestamp,
|
|
138
|
-
t0.first_stop_id,
|
|
139
|
-
t0.last_stop_id,
|
|
140
|
-
right(t0.origin_route_id, -1) as origin_route_name
|
|
141
|
-
FROM (
|
|
142
|
-
SELECT
|
|
143
|
-
t1.route_id AS origin_route_id,
|
|
144
|
-
t1.trip_id,
|
|
145
|
-
t1.service_id,
|
|
146
|
-
t1.run_number,
|
|
147
|
-
t3.date,
|
|
148
|
-
t7.route_id,
|
|
149
|
-
t7.route_type,
|
|
150
|
-
t7.route_short_name,
|
|
151
|
-
t7.is_regional,
|
|
152
|
-
t7.is_substitute_transport,
|
|
153
|
-
t7.is_night,
|
|
154
|
-
t8.trip_headsign,
|
|
155
|
-
t8.trip_short_name,
|
|
156
|
-
t8.block_id,
|
|
157
|
-
t8.exceptional,
|
|
158
|
-
LEAST(t5.arrival_time::INTERVAL, t5.departure_time::INTERVAL) AS min_stop_time,
|
|
159
|
-
GREATEST(t6.arrival_time::INTERVAL, t6.departure_time::INTERVAL) AS max_stop_time,
|
|
160
|
-
t5.stop_id AS first_stop_id,
|
|
161
|
-
t6.stop_id AS last_stop_id
|
|
162
|
-
FROM ropidgtfs_run_numbers t1
|
|
163
|
-
LEFT JOIN ropidgtfs_services_first14days t3 ON t1.service_id = t3.service_id
|
|
164
|
-
LEFT JOIN ropidgtfs_trips_minmaxsequences t4 ON t1.trip_id = t4.trip_id
|
|
165
|
-
LEFT OUTER JOIN ropidgtfs_stop_times t5 ON t1.trip_id = t5.trip_id AND t5.stop_sequence = t4.min_stop_sequence
|
|
166
|
-
LEFT OUTER JOIN ropidgtfs_stop_times t6 ON t1.trip_id = t6.trip_id AND t6.stop_sequence = t4.max_stop_sequence
|
|
167
|
-
LEFT JOIN ropidgtfs_trips t8 ON t1.trip_id = t8.trip_id
|
|
168
|
-
LEFT JOIN ropidgtfs_routes t7 ON t8.route_id = t7.route_id
|
|
169
|
-
) t0;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { JSONSchemaValidator } from "@golemio/core/dist/shared/golemio-validator";
|
|
2
|
-
import Sequelize, { Transaction } from "@golemio/core/dist/shared/sequelize";
|
|
3
|
-
import { IModel, PostgresModel } from "@golemio/core/dist/integration-engine/models";
|
|
4
|
-
export declare class RopidGTFSMinMaxSequencesModel extends PostgresModel implements IModel {
|
|
5
|
-
/** Model name */
|
|
6
|
-
name: string;
|
|
7
|
-
/** The Sequelize Model */
|
|
8
|
-
sequelizeModel: Sequelize.ModelCtor<any>;
|
|
9
|
-
/** The Sequelize Model for temporary table */
|
|
10
|
-
protected tmpSequelizeModel: Sequelize.ModelCtor<any> | null;
|
|
11
|
-
/** Validation helper */
|
|
12
|
-
protected validator: JSONSchemaValidator;
|
|
13
|
-
/** Type/Strategy of saving the data */
|
|
14
|
-
protected savingType: "insertOnly" | "insertOrUpdate";
|
|
15
|
-
constructor();
|
|
16
|
-
createAndPopulateFromTmp: () => Promise<void>;
|
|
17
|
-
replaceByTmp: (transaction: Transaction) => Promise<void>;
|
|
18
|
-
createIndexes: () => Promise<void>;
|
|
19
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RopidGTFSMinMaxSequencesModel.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-gtfs/RopidGTFSMinMaxSequencesModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { IModel, PostgresModel } from "@golemio/core/dist/integration-engine/models";
|
|
2
|
-
import { JSONSchemaValidator } from "@golemio/core/dist/shared/golemio-validator";
|
|
3
|
-
import Sequelize, { FindOptions, Transaction } from "@golemio/core/dist/shared/sequelize";
|
|
4
|
-
import { IGtfsRunTripCache } from "./interfaces/IGtfsRunTripCache";
|
|
5
|
-
export declare class RopidGTFSScheduledTripsModel extends PostgresModel implements IModel {
|
|
6
|
-
/** Model name */
|
|
7
|
-
name: string;
|
|
8
|
-
/** The Sequelize Model */
|
|
9
|
-
sequelizeModel: Sequelize.ModelCtor<any>;
|
|
10
|
-
/** The Sequelize Model for temporary table */
|
|
11
|
-
protected tmpSequelizeModel: Sequelize.ModelCtor<any> | null;
|
|
12
|
-
/** Validation helper */
|
|
13
|
-
protected validator: JSONSchemaValidator;
|
|
14
|
-
/** Type/Strategy of saving the data */
|
|
15
|
-
protected savingType: "insertOnly" | "insertOrUpdate";
|
|
16
|
-
constructor();
|
|
17
|
-
findAll: (options: FindOptions) => Promise<IGtfsRunTripCache[]>;
|
|
18
|
-
createAndPopulateFromTmp: () => Promise<void>;
|
|
19
|
-
replaceByTmp: (transaction: Transaction) => Promise<void>;
|
|
20
|
-
createIndexes: () => Promise<void>;
|
|
21
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RopidGTFSScheduledTripsModel.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-gtfs/RopidGTFSScheduledTripsModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { JSONSchemaValidator } from "@golemio/core/dist/shared/golemio-validator";
|
|
2
|
-
import Sequelize, { Transaction } from "@golemio/core/dist/shared/sequelize";
|
|
3
|
-
import { IModel, PostgresModel } from "@golemio/core/dist/integration-engine/models";
|
|
4
|
-
export declare class RopidGTFSServicesFirst14daysModel extends PostgresModel implements IModel {
|
|
5
|
-
/** Model name */
|
|
6
|
-
name: string;
|
|
7
|
-
/** The Sequelize Model */
|
|
8
|
-
sequelizeModel: Sequelize.ModelCtor<any>;
|
|
9
|
-
/** The Sequelize Model for temporary table */
|
|
10
|
-
protected tmpSequelizeModel: Sequelize.ModelCtor<any> | null;
|
|
11
|
-
/** Validation helper */
|
|
12
|
-
protected validator: JSONSchemaValidator;
|
|
13
|
-
/** Type/Strategy of saving the data */
|
|
14
|
-
protected savingType: "insertOnly" | "insertOrUpdate";
|
|
15
|
-
constructor();
|
|
16
|
-
createAndPopulateFromTmp: () => Promise<void>;
|
|
17
|
-
replaceByTmp: (transaction: Transaction) => Promise<void>;
|
|
18
|
-
createIndexes: () => Promise<void>;
|
|
19
|
-
}
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.RopidGTFSServicesFirst14daysModel = void 0;
|
|
13
|
-
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
14
|
-
const helpers_1 = require("@golemio/core/dist/integration-engine/helpers");
|
|
15
|
-
const models_1 = require("@golemio/core/dist/integration-engine/models");
|
|
16
|
-
const ropid_gtfs_1 = require("../../schema-definitions/ropid-gtfs");
|
|
17
|
-
const utils_1 = require("./utils");
|
|
18
|
-
class RopidGTFSServicesFirst14daysModel extends models_1.PostgresModel {
|
|
19
|
-
constructor() {
|
|
20
|
-
super(ropid_gtfs_1.RopidGTFS.services_first14days.name + "Model", {
|
|
21
|
-
outputSequelizeAttributes: ropid_gtfs_1.RopidGTFS.services_first14days.outputSequelizeAttributes,
|
|
22
|
-
pgTableName: ropid_gtfs_1.RopidGTFS.services_first14days.pgTableName,
|
|
23
|
-
pgSchema: ropid_gtfs_1.RopidGTFS.pgSchema,
|
|
24
|
-
savingType: "insertOnly",
|
|
25
|
-
attributesToRemove: ["id", "created_at", "updated_at"],
|
|
26
|
-
}, new golemio_validator_1.JSONSchemaValidator(ropid_gtfs_1.RopidGTFS.services_first14days.name + "ModelValidator", ropid_gtfs_1.RopidGTFS.services_first14days.outputJsonSchema));
|
|
27
|
-
this.createAndPopulateFromTmp = () => __awaiter(this, void 0, void 0, function* () {
|
|
28
|
-
const sql = `
|
|
29
|
-
SELECT
|
|
30
|
-
dates.date,
|
|
31
|
-
(
|
|
32
|
-
date_part('day'::text, ((dates.date)::timestamp without time zone - (
|
|
33
|
-
to_char(timezone('Europe/Prague'::text, now()), 'YYYY-MM-DD'::text)
|
|
34
|
-
)::timestamp without time zone))
|
|
35
|
-
)::integer AS day_diff,
|
|
36
|
-
ropidgtfs_calendar_tmp.service_id
|
|
37
|
-
FROM (
|
|
38
|
-
(
|
|
39
|
-
SELECT
|
|
40
|
-
(date_trunc('day'::text, dd.dd))::date AS date
|
|
41
|
-
FROM generate_series(
|
|
42
|
-
((( SELECT (CURRENT_TIMESTAMP - '1 day'::interval)))::date)::timestamp with time zone,
|
|
43
|
-
((( SELECT (CURRENT_TIMESTAMP + '12 days'::interval)))::date)::timestamp with time zone,
|
|
44
|
-
'1 day'::interval
|
|
45
|
-
) dd(dd)
|
|
46
|
-
) dates
|
|
47
|
-
JOIN "${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_calendar_tmp ON ((1 = 1))
|
|
48
|
-
)
|
|
49
|
-
WHERE (
|
|
50
|
-
(
|
|
51
|
-
(dates.date >= (ropidgtfs_calendar_tmp.start_date)::date)
|
|
52
|
-
AND (dates.date <= (ropidgtfs_calendar_tmp.end_date)::date)
|
|
53
|
-
AND (
|
|
54
|
-
(
|
|
55
|
-
(btrim(to_char((dates.date)::timestamp with time zone, 'day'::text)) = 'monday'::text)
|
|
56
|
-
AND (ropidgtfs_calendar_tmp.monday = 1)
|
|
57
|
-
) OR (
|
|
58
|
-
(btrim(to_char((dates.date)::timestamp with time zone, 'day'::text)) = 'tuesday'::text)
|
|
59
|
-
AND (ropidgtfs_calendar_tmp.tuesday = 1)
|
|
60
|
-
) OR (
|
|
61
|
-
(btrim(to_char((dates.date)::timestamp with time zone, 'day'::text)) = 'wednesday'::text)
|
|
62
|
-
AND (ropidgtfs_calendar_tmp.wednesday = 1)
|
|
63
|
-
) OR (
|
|
64
|
-
(btrim(to_char((dates.date)::timestamp with time zone, 'day'::text)) = 'thursday'::text)
|
|
65
|
-
AND (ropidgtfs_calendar_tmp.thursday = 1)
|
|
66
|
-
) OR (
|
|
67
|
-
(btrim(to_char((dates.date)::timestamp with time zone, 'day'::text)) = 'friday'::text)
|
|
68
|
-
AND (ropidgtfs_calendar_tmp.friday = 1)
|
|
69
|
-
) OR (
|
|
70
|
-
(btrim(to_char((dates.date)::timestamp with time zone, 'day'::text)) = 'saturday'::text)
|
|
71
|
-
AND (ropidgtfs_calendar_tmp.saturday = 1)
|
|
72
|
-
) OR (
|
|
73
|
-
(btrim(to_char((dates.date)::timestamp with time zone, 'day'::text)) = 'sunday'::text)
|
|
74
|
-
AND (ropidgtfs_calendar_tmp.sunday = 1)
|
|
75
|
-
)
|
|
76
|
-
) AND (
|
|
77
|
-
NOT ((ropidgtfs_calendar_tmp.service_id)::text IN (
|
|
78
|
-
SELECT ropidgtfs_calendar_dates_tmp.service_id
|
|
79
|
-
FROM "${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_calendar_dates_tmp
|
|
80
|
-
WHERE (
|
|
81
|
-
(ropidgtfs_calendar_dates_tmp.exception_type = 2)
|
|
82
|
-
AND (dates.date = (ropidgtfs_calendar_dates_tmp.date)::date)
|
|
83
|
-
)
|
|
84
|
-
))
|
|
85
|
-
)) OR ((ropidgtfs_calendar_tmp.service_id)::text IN (
|
|
86
|
-
SELECT ropidgtfs_calendar_dates_tmp.service_id
|
|
87
|
-
FROM "${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_calendar_dates_tmp
|
|
88
|
-
WHERE (
|
|
89
|
-
(ropidgtfs_calendar_dates_tmp.exception_type = 1)
|
|
90
|
-
AND (dates.date = (ropidgtfs_calendar_dates_tmp.date)::date)
|
|
91
|
-
))
|
|
92
|
-
)
|
|
93
|
-
)
|
|
94
|
-
ORDER BY dates.date
|
|
95
|
-
`;
|
|
96
|
-
try {
|
|
97
|
-
const tmpTable = ropid_gtfs_1.RopidGTFS.services_first14days.pgTableName + "_tmp";
|
|
98
|
-
yield this.sequelizeModel.sequelize.query(`DROP TABLE IF EXISTS "${ropid_gtfs_1.RopidGTFS.pgSchema}".${tmpTable};
|
|
99
|
-
CREATE TABLE "${ropid_gtfs_1.RopidGTFS.pgSchema}".${tmpTable} (
|
|
100
|
-
LIKE "${ropid_gtfs_1.RopidGTFS.pgSchema}".${ropid_gtfs_1.RopidGTFS.services_first14days.pgTableName}
|
|
101
|
-
);
|
|
102
|
-
INSERT INTO "${ropid_gtfs_1.RopidGTFS.pgSchema}".${tmpTable} ${sql};`);
|
|
103
|
-
}
|
|
104
|
-
catch (err) {
|
|
105
|
-
helpers_1.log.error(err);
|
|
106
|
-
throw err;
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
this.replaceByTmp = (transaction) => __awaiter(this, void 0, void 0, function* () {
|
|
110
|
-
try {
|
|
111
|
-
const pgTableName = ropid_gtfs_1.RopidGTFS.services_first14days.pgTableName;
|
|
112
|
-
const tableNameActual = pgTableName + "_actual";
|
|
113
|
-
const tableNameTmp = pgTableName + "_tmp";
|
|
114
|
-
const indexQuery = (0, utils_1.buildAlterIndexQuery)(ropid_gtfs_1.RopidGTFS.services_first14days.modelIndexOptions);
|
|
115
|
-
yield this.sequelizeModel.sequelize.query(`
|
|
116
|
-
LOCK "${ropid_gtfs_1.RopidGTFS.pgSchema}".${pgTableName} IN EXCLUSIVE MODE;
|
|
117
|
-
ALTER TABLE "${ropid_gtfs_1.RopidGTFS.pgSchema}".${tableNameActual} NO INHERIT "${ropid_gtfs_1.RopidGTFS.pgSchema}".${pgTableName};
|
|
118
|
-
DROP TABLE IF EXISTS "${ropid_gtfs_1.RopidGTFS.pgSchema}".${tableNameActual};
|
|
119
|
-
${indexQuery}
|
|
120
|
-
ALTER TABLE "${ropid_gtfs_1.RopidGTFS.pgSchema}".${tableNameTmp} RENAME TO ${tableNameActual};
|
|
121
|
-
ALTER TABLE "${ropid_gtfs_1.RopidGTFS.pgSchema}".${tableNameActual} INHERIT "${ropid_gtfs_1.RopidGTFS.pgSchema}".${pgTableName};
|
|
122
|
-
`, { transaction });
|
|
123
|
-
}
|
|
124
|
-
catch (err) {
|
|
125
|
-
helpers_1.log.error(err);
|
|
126
|
-
throw err;
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
this.createIndexes = () => __awaiter(this, void 0, void 0, function* () {
|
|
130
|
-
try {
|
|
131
|
-
const indexQuery = (0, utils_1.buildCreateIndexQuery)(ropid_gtfs_1.RopidGTFS.services_first14days.pgTableName, ropid_gtfs_1.RopidGTFS.services_first14days.modelIndexOptions);
|
|
132
|
-
yield this.sequelizeModel.sequelize.query(indexQuery);
|
|
133
|
-
}
|
|
134
|
-
catch (err) {
|
|
135
|
-
helpers_1.log.error(err);
|
|
136
|
-
throw err;
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
exports.RopidGTFSServicesFirst14daysModel = RopidGTFSServicesFirst14daysModel;
|
|
142
|
-
//# sourceMappingURL=RopidGTFSServicesFirst14daysModel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RopidGTFSServicesFirst14daysModel.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-gtfs/RopidGTFSServicesFirst14daysModel.ts"],"names":[],"mappings":"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"}
|