@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.
Files changed (80) hide show
  1. package/db/example/00_clear_test_data.sql +4 -4
  2. package/db/example/03_ropidgtfs_dump.sql +10 -1
  3. package/db/example/14_nightDelays.sql +16 -8
  4. package/db/migrations/postgresql/20230327121511-departure-view.js +53 -0
  5. package/db/migrations/postgresql/sqls/20220915123941-partitioned-departures-down.sql +2 -0
  6. package/db/migrations/postgresql/sqls/20230307124639-positions-internal-down.sql +1 -1
  7. package/db/migrations/postgresql/sqls/20230327121511-departure-view-down.sql +81 -0
  8. package/db/migrations/postgresql/sqls/20230327121511-departure-view-up.sql +37 -0
  9. package/dist/integration-engine/queueDefinitions.js +10 -0
  10. package/dist/integration-engine/queueDefinitions.js.map +1 -1
  11. package/dist/integration-engine/ropid-gtfs/RopidGTFSMetadataModel.d.ts +13 -7
  12. package/dist/integration-engine/ropid-gtfs/RopidGTFSMetadataModel.js +50 -45
  13. package/dist/integration-engine/ropid-gtfs/RopidGTFSMetadataModel.js.map +1 -1
  14. package/dist/integration-engine/ropid-gtfs/RopidGTFSWorker.d.ts +4 -3
  15. package/dist/integration-engine/ropid-gtfs/RopidGTFSWorker.js +50 -18
  16. package/dist/integration-engine/ropid-gtfs/RopidGTFSWorker.js.map +1 -1
  17. package/dist/integration-engine/ropid-gtfs/data-access/{DeparturesRepository.d.ts → precomputed/DeparturesRepository.d.ts} +2 -1
  18. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js +132 -0
  19. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js.map +1 -0
  20. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/MinMaxStopSequencesRepository.d.ts +9 -0
  21. package/dist/integration-engine/ropid-gtfs/{RopidGTFSMinMaxSequencesModel.js → data-access/precomputed/MinMaxStopSequencesRepository.js} +34 -33
  22. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/MinMaxStopSequencesRepository.js.map +1 -0
  23. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/ServicesCalendarRepository.d.ts +9 -0
  24. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/ServicesCalendarRepository.js +135 -0
  25. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/ServicesCalendarRepository.js.map +1 -0
  26. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/TripScheduleRepository.d.ts +11 -0
  27. package/dist/integration-engine/ropid-gtfs/{RopidGTFSScheduledTripsModel.js → data-access/precomputed/TripScheduleRepository.js} +27 -26
  28. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/TripScheduleRepository.js.map +1 -0
  29. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/index.d.ts +4 -0
  30. package/dist/integration-engine/ropid-gtfs/data-access/{index.js → precomputed/index.js} +3 -0
  31. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/index.js.map +1 -0
  32. package/dist/integration-engine/ropid-gtfs/helpers/SourceTableSuffixEnum.d.ts +5 -0
  33. package/dist/integration-engine/ropid-gtfs/helpers/SourceTableSuffixEnum.js +10 -0
  34. package/dist/integration-engine/ropid-gtfs/helpers/SourceTableSuffixEnum.js.map +1 -0
  35. package/dist/integration-engine/ropid-gtfs/index.d.ts +0 -3
  36. package/dist/integration-engine/ropid-gtfs/index.js +0 -3
  37. package/dist/integration-engine/ropid-gtfs/index.js.map +1 -1
  38. package/dist/integration-engine/ropid-gtfs/utils.js +5 -4
  39. package/dist/integration-engine/ropid-gtfs/utils.js.map +1 -1
  40. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/VehicleDescriptor.js +3 -0
  41. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/VehicleDescriptor.js.map +1 -1
  42. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/interfaces/IGtfsRtFeedEntity.d.ts +3 -0
  43. package/dist/integration-engine/vehicle-positions/workers/runs/data-access/CommonRunsRepository.d.ts +1 -1
  44. package/dist/integration-engine/vehicle-positions/workers/runs/data-access/CommonRunsRepository.js +3 -3
  45. package/dist/integration-engine/vehicle-positions/workers/runs/data-access/CommonRunsRepository.js.map +1 -1
  46. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/CommonMessageProcessor.js +3 -1
  47. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/CommonMessageProcessor.js.map +1 -1
  48. package/dist/integration-engine/vehicle-positions/workers/vehicle-descriptors/data-access/DescriptorRepository.d.ts +1 -1
  49. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.d.ts +1 -0
  50. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js +38 -22
  51. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js.map +1 -1
  52. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateDelayTask.d.ts +1 -0
  53. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateDelayTask.js +7 -2
  54. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateDelayTask.js.map +1 -1
  55. package/dist/output-gateway/departure-boards/DepartureBoardsRouter.js +1 -1
  56. package/dist/output-gateway/pid/data-access/DeparturesRepository.js +0 -6
  57. package/dist/output-gateway/pid/data-access/DeparturesRepository.js.map +1 -1
  58. package/dist/output-gateway/pid/middleware/checkTimeFromMiddleware.js +2 -2
  59. package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.d.ts +3 -3
  60. package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.js +15 -15
  61. package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.js.map +1 -1
  62. package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.d.ts +0 -1
  63. package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.js +5 -18
  64. package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.js.map +1 -1
  65. package/dist/schema-definitions/ropid-gtfs/models/precomputed/interfaces/IDeparturesModel.d.ts +0 -1
  66. package/docs/implementation_documentation.md +30 -10
  67. package/docs/openapi-output.yaml +8 -1
  68. package/package.json +4 -3
  69. package/db/example/99_precomputed_tables.sql +0 -169
  70. package/dist/integration-engine/ropid-gtfs/RopidGTFSMinMaxSequencesModel.d.ts +0 -19
  71. package/dist/integration-engine/ropid-gtfs/RopidGTFSMinMaxSequencesModel.js.map +0 -1
  72. package/dist/integration-engine/ropid-gtfs/RopidGTFSScheduledTripsModel.d.ts +0 -21
  73. package/dist/integration-engine/ropid-gtfs/RopidGTFSScheduledTripsModel.js.map +0 -1
  74. package/dist/integration-engine/ropid-gtfs/RopidGTFSServicesFirst14daysModel.d.ts +0 -19
  75. package/dist/integration-engine/ropid-gtfs/RopidGTFSServicesFirst14daysModel.js +0 -142
  76. package/dist/integration-engine/ropid-gtfs/RopidGTFSServicesFirst14daysModel.js.map +0 -1
  77. package/dist/integration-engine/ropid-gtfs/data-access/DeparturesRepository.js +0 -162
  78. package/dist/integration-engine/ropid-gtfs/data-access/DeparturesRepository.js.map +0 -1
  79. package/dist/integration-engine/ropid-gtfs/data-access/index.d.ts +0 -1
  80. 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 5,12 * * *`
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 30 5,12 * * *`
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
- - RopidGTFSServicesModel `ropidgtfs_services_first14days`
405
- - RopidGTFSTripsMinMaxSequencesModel `ropidgtfs_trips_minmaxsequences`
406
- - RopidGTFSDeparturesModel `ropidgtfs_departures`
407
- - RopidGTFSScheduledTripsModel `ropidgtfs_scheduled_trips`
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
- - RopidGTFSScheduledTripsModel `ropidgtfs_scheduled_trips`
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
- - RopidGTFSScheduledTripsModel `ropidgtfs_scheduled_trips`
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 `ropidgtfs_scheduled_trips`
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
- - `ropidgtfs_departures`, `ropidgtfs_stops`, `ropidgtfs_cis_stops`, `ropidvymi_events`, `ropidvymi_events_stops`, `ropid_departures_directions`, `vehiclepositions_positions`, `vehiclepositions_trips`
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
 
@@ -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 +7 days from now.
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.4",
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
- "pretest": "golemio import-db-data",
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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"}