@golemio/pid 2.6.6 → 2.6.7-dev.834780584

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 (70) 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/runs/data-access/CommonRunsRepository.d.ts +1 -1
  41. package/dist/integration-engine/vehicle-positions/workers/runs/data-access/CommonRunsRepository.js +3 -3
  42. package/dist/integration-engine/vehicle-positions/workers/runs/data-access/CommonRunsRepository.js.map +1 -1
  43. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js +18 -18
  44. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js.map +1 -1
  45. package/dist/output-gateway/departure-boards/DepartureBoardsRouter.js +1 -1
  46. package/dist/output-gateway/pid/data-access/DeparturesRepository.js +0 -6
  47. package/dist/output-gateway/pid/data-access/DeparturesRepository.js.map +1 -1
  48. package/dist/output-gateway/pid/middleware/checkTimeFromMiddleware.js +2 -2
  49. package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.d.ts +3 -3
  50. package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.js +15 -15
  51. package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.js.map +1 -1
  52. package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.d.ts +0 -1
  53. package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.js +5 -18
  54. package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.js.map +1 -1
  55. package/dist/schema-definitions/ropid-gtfs/models/precomputed/interfaces/IDeparturesModel.d.ts +0 -1
  56. package/docs/implementation_documentation.md +30 -10
  57. package/docs/openapi-output.yaml +1 -1
  58. package/package.json +4 -3
  59. package/db/example/99_precomputed_tables.sql +0 -169
  60. package/dist/integration-engine/ropid-gtfs/RopidGTFSMinMaxSequencesModel.d.ts +0 -19
  61. package/dist/integration-engine/ropid-gtfs/RopidGTFSMinMaxSequencesModel.js.map +0 -1
  62. package/dist/integration-engine/ropid-gtfs/RopidGTFSScheduledTripsModel.d.ts +0 -21
  63. package/dist/integration-engine/ropid-gtfs/RopidGTFSScheduledTripsModel.js.map +0 -1
  64. package/dist/integration-engine/ropid-gtfs/RopidGTFSServicesFirst14daysModel.d.ts +0 -19
  65. package/dist/integration-engine/ropid-gtfs/RopidGTFSServicesFirst14daysModel.js +0 -142
  66. package/dist/integration-engine/ropid-gtfs/RopidGTFSServicesFirst14daysModel.js.map +0 -1
  67. package/dist/integration-engine/ropid-gtfs/data-access/DeparturesRepository.js +0 -162
  68. package/dist/integration-engine/ropid-gtfs/data-access/DeparturesRepository.js.map +0 -1
  69. package/dist/integration-engine/ropid-gtfs/data-access/index.d.ts +0 -1
  70. package/dist/integration-engine/ropid-gtfs/data-access/index.js.map +0 -1
@@ -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":";;;;;;;;;;;;AAAA,mFAAkF;AAElF,2EAAoE;AACpE,oEAA4C;AAC5C,yEAAqF;AACrF,mCAAmF;AAEnF,MAAa,6BAA8B,SAAQ,sBAAa;IAY5D;QACI,KAAK,CACD,sBAAS,CAAC,eAAe,CAAC,IAAI,GAAG,OAAO,EACxC;YACI,yBAAyB,EAAE,sBAAS,CAAC,eAAe,CAAC,yBAAyB;YAC9E,WAAW,EAAE,sBAAS,CAAC,eAAe,CAAC,WAAW;YAClD,QAAQ,EAAE,sBAAS,CAAC,QAAQ;YAC5B,UAAU,EAAE,YAAY;YACxB,kBAAkB,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC;SACzD,EACD,IAAI,uCAAmB,CAAC,sBAAS,CAAC,eAAe,CAAC,IAAI,GAAG,gBAAgB,EAAE,sBAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC,CACzH,CAAC;QAGC,6BAAwB,GAAG,GAAwB,EAAE;YACxD,MAAM,GAAG,GAAG;;;;;;;;;;;;;oBAaA,sBAAS,CAAC,QAAQ;;SAE7B,CAAC;YAEF,IAAI;gBACA,MAAM,QAAQ,GAAG,sBAAS,CAAC,eAAe,CAAC,WAAW,GAAG,MAAM,CAAC;gBAEhE,MAAM,IAAI,CAAC,cAAc,CAAC,SAAU,CAAC,KAAK,CACtC,yBAAyB,sBAAS,CAAC,QAAQ,MAAM,QAAQ;gCACzC,sBAAS,CAAC,QAAQ,MAAM,QAAQ;4BACpC,sBAAS,CAAC,QAAQ,MAAM,sBAAS,CAAC,eAAe,CAAC,WAAW;;+BAE1D,sBAAS,CAAC,QAAQ,MAAM,QAAQ,KAAK,GAAG,GAAG,CAC7D,CAAC;aACL;YAAC,OAAO,GAAG,EAAE;gBACV,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM,GAAG,CAAC;aACb;QACL,CAAC,CAAA,CAAC;QAEK,iBAAY,GAAG,CAAO,WAAwB,EAAiB,EAAE;YACpE,IAAI;gBACA,MAAM,WAAW,GAAG,sBAAS,CAAC,eAAe,CAAC,WAAW,CAAC;gBAC1D,MAAM,eAAe,GAAG,WAAW,GAAG,SAAS,CAAC;gBAChD,MAAM,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC;gBAE1C,MAAM,UAAU,GAAG,IAAA,4BAAoB,EAAC,sBAAS,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;gBAErF,MAAM,IAAI,CAAC,cAAc,CAAC,SAAU,CAAC,KAAK,CACtC;wBACQ,sBAAS,CAAC,QAAQ,KAAK,WAAW;+BAC3B,sBAAS,CAAC,QAAQ,KAAK,eAAe,gBAAgB,sBAAS,CAAC,QAAQ,KAAK,WAAW;wCAC/E,sBAAS,CAAC,QAAQ,MAAM,eAAe;kBAC7D,UAAU;+BACG,sBAAS,CAAC,QAAQ,MAAM,YAAY,eAAe,eAAe;+BAClE,sBAAS,CAAC,QAAQ,MAAM,eAAe,cAAc,sBAAS,CAAC,QAAQ,MAAM,WAAW;iBACtG,EACD,EAAE,WAAW,EAAE,CAClB,CAAC;aACL;YAAC,OAAO,GAAG,EAAE;gBACV,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM,GAAG,CAAC;aACb;QACL,CAAC,CAAA,CAAC;QAEK,kBAAa,GAAG,GAAwB,EAAE;YAC7C,IAAI;gBACA,MAAM,OAAO,GAAG,sBAAS,CAAC,eAAe,CAAC,iBAAiB,CAAC;gBAE5D,MAAM,UAAU,GAAG,IAAA,6BAAqB,EAAC,sBAAS,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAEzF,MAAM,IAAI,CAAC,cAAc,CAAC,SAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;aAC1D;YAAC,OAAO,GAAG,EAAE;gBACV,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM,GAAG,CAAC;aACb;QACL,CAAC,CAAA,CAAC;IAxEF,CAAC;CAyEJ;AAjGD,sEAiGC"}
@@ -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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"}
@@ -1,162 +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.DeparturesRepository = void 0;
13
- const utils_1 = require("../utils");
14
- const ropid_gtfs_1 = require("../../../schema-definitions/ropid-gtfs");
15
- const precomputed_1 = require("../../../schema-definitions/ropid-gtfs/models/precomputed");
16
- const helpers_1 = require("@golemio/core/dist/integration-engine/helpers");
17
- const models_1 = require("@golemio/core/dist/integration-engine/models");
18
- const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
19
- class DeparturesRepository extends models_1.PostgresModel {
20
- constructor() {
21
- super("DeparturesRepository", {
22
- pgTableName: precomputed_1.DeparturesModel.TABLE_NAME,
23
- pgSchema: ropid_gtfs_1.RopidGTFS.pgSchema,
24
- outputSequelizeAttributes: precomputed_1.DeparturesModel.attributeModel,
25
- attributesToRemove: ["id", "created_at", "updated_at"],
26
- savingType: "insertOnly",
27
- }, new golemio_validator_1.JSONSchemaValidator("DeparturesRepository", precomputed_1.DeparturesModel.jsonSchema));
28
- this.createAndPopulateFromTmp = () => __awaiter(this, void 0, void 0, function* () {
29
- /* eslint-disable max-len */
30
- const sql = `
31
- SELECT t.stop_sequence,
32
- t.stop_headsign,
33
- t.pickup_type,
34
- t.drop_off_type,
35
- t.arrival_time,
36
- CASE
37
- WHEN (date_part('hour'::text, (t.arrival_time)::interval) > (23)::double precision)
38
- THEN make_timestamptz(
39
- (date_part('year'::text, (t4.date + '1 day'::interval)))::integer,
40
- (date_part('month'::text, (t4.date + '1 day'::interval)))::integer,
41
- (date_part('day'::text, (t4.date + '1 day'::interval)))::integer,
42
- ((date_part('hour'::text, (t.arrival_time)::interval))::integer - 24),
43
- (date_part('minute'::text, (t.arrival_time)::interval))::integer,
44
- date_part('second'::text, (t.arrival_time)::interval), 'Europe/Prague'::text)
45
- ELSE make_timestamptz((date_part('year'::text, t4.date))::integer,
46
- (date_part('month'::text, t4.date))::integer, (date_part('day'::text, t4.date))::integer,
47
- (date_part('hour'::text, (t.arrival_time)::interval))::integer,
48
- (date_part('minute'::text, (t.arrival_time)::interval))::integer,
49
- date_part('second'::text, (t.arrival_time)::interval), 'Europe/Prague'::text)
50
- END AS arrival_datetime,
51
- t.departure_time,
52
- CASE
53
- WHEN (date_part('hour'::text, (t.departure_time)::interval) > (23)::double precision)
54
- THEN make_timestamptz(
55
- (date_part('year'::text, (t4.date + '1 day'::interval)))::integer,
56
- (date_part('month'::text, (t4.date + '1 day'::interval)))::integer,
57
- (date_part('day'::text, (t4.date + '1 day'::interval)))::integer,
58
- ((date_part('hour'::text, (t.departure_time)::interval))::integer - 24),
59
- (date_part('minute'::text, (t.departure_time)::interval))::integer,
60
- date_part('second'::text, (t.departure_time)::interval), 'Europe/Prague'::text)
61
- ELSE make_timestamptz(
62
- (date_part('year'::text, t4.date))::integer,
63
- (date_part('month'::text, t4.date))::integer, (date_part('day'::text, t4.date))::integer,
64
- (date_part('hour'::text, (t.departure_time)::interval))::integer,
65
- (date_part('minute'::text, (t.departure_time)::interval))::integer,
66
- date_part('second'::text, (t.departure_time)::interval), 'Europe/Prague'::text)
67
- END AS departure_datetime,
68
- t0.stop_id,
69
- t0.stop_name,
70
- t0.platform_code,
71
- t0.wheelchair_boarding,
72
- t1.min_stop_sequence,
73
- t1.max_stop_sequence,
74
- t2.trip_id,
75
- t2.trip_headsign,
76
- t2.trip_short_name,
77
- t2.wheelchair_accessible,
78
- t3.service_id,
79
- t4.date,
80
- t5.route_short_name,
81
- t5.route_type,
82
- t5.route_id,
83
- t5.is_night,
84
- t5.is_regional,
85
- t5.is_substitute_transport,
86
- t6.stop_sequence AS next_stop_sequence,
87
- t6.stop_id AS next_stop_id,
88
- t7.stop_sequence AS last_stop_sequence,
89
- t7.stop_id AS last_stop_id,
90
- left(t0.stop_id, 4) AS part_index
91
- FROM (((((((("${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_stop_times_tmp t
92
- LEFT JOIN "${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_stops_tmp t0 ON (((t.stop_id)::text = (t0.stop_id)::text)))
93
- LEFT JOIN "${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_trips_tmp t2 ON (((t.trip_id)::text = (t2.trip_id)::text)))
94
- JOIN "${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_services_first14days_tmp t4 ON (((t2.service_id)::text = (t4.service_id)::text)))
95
- LEFT JOIN "${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_trips_minmaxsequences_tmp t1 ON (((t.trip_id)::text = (t1.trip_id)::text)))
96
- LEFT JOIN "${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_calendar_tmp t3 ON (((t2.service_id)::text = (t3.service_id)::text)))
97
- LEFT JOIN "${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_routes_tmp t5 ON (((t2.route_id)::text = (t5.route_id)::text)))
98
- LEFT JOIN "${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_stop_times_tmp t6 ON (
99
- (((t.trip_id)::text = (t6.trip_id)::text) AND (t6.stop_sequence = (t.stop_sequence + 1)))))
100
- LEFT JOIN "${ropid_gtfs_1.RopidGTFS.pgSchema}".ropidgtfs_stop_times_tmp t7 ON (
101
- (((t.trip_id)::text = (t7.trip_id)::text) AND (t7.stop_sequence = (t.stop_sequence - 1)))))
102
- WHERE t0.stop_id IS NOT NULL`;
103
- /* eslint-enable max-len */
104
- try {
105
- const tableName = precomputed_1.DeparturesModel.TABLE_NAME;
106
- const tmpTableName = tableName + "_tmp";
107
- yield this.sequelizeModel.sequelize.query(`
108
- SET LOCAL search_path TO ${ropid_gtfs_1.RopidGTFS.pgSchema};
109
- DROP TABLE IF EXISTS ${tmpTableName};
110
- CREATE TABLE ${tmpTableName} (LIKE ${tableName}) PARTITION BY list(part_index);
111
- SELECT departure_part(part_index, split_part(current_setting('search_path'), ',', 1), true)
112
- FROM (SELECT DISTINCT left(stop_id, 4) part_index FROM ropidgtfs_stops_tmp) as parts;
113
- INSERT INTO ${tmpTableName} ${sql};`);
114
- }
115
- catch (err) {
116
- helpers_1.log.error(err);
117
- throw err;
118
- }
119
- });
120
- this.replaceByTmp = (transaction) => __awaiter(this, void 0, void 0, function* () {
121
- try {
122
- const tableName = precomputed_1.DeparturesModel.TABLE_NAME;
123
- const tmpTableName = tableName + "_tmp";
124
- const dropTableName = tableName + "_drop";
125
- const indexQuery = (0, utils_1.buildAlterIndexQuery)(precomputed_1.DeparturesModel.indexesOptions);
126
- yield this.sequelizeModel.sequelize.query(`
127
- SET LOCAL search_path TO ${ropid_gtfs_1.RopidGTFS.pgSchema};
128
- LOCK ${tableName} IN EXCLUSIVE MODE;
129
- ALTER TABLE ${tableName} RENAME TO ${dropTableName};
130
- ALTER TABLE ${tmpTableName} RENAME TO ${tableName};
131
- DROP TABLE ${dropTableName} CASCADE;
132
- ${indexQuery}`, { transaction });
133
- }
134
- catch (err) {
135
- helpers_1.log.error(err);
136
- throw err;
137
- }
138
- });
139
- this.analyze = () => __awaiter(this, void 0, void 0, function* () {
140
- try {
141
- yield this.sequelizeModel.sequelize.query(`analyze ${ropid_gtfs_1.RopidGTFS.pgSchema}.${precomputed_1.DeparturesModel.TABLE_NAME}_tmp;`);
142
- }
143
- catch (err) {
144
- helpers_1.log.error(err);
145
- throw err;
146
- }
147
- });
148
- this.createIndexes = () => __awaiter(this, void 0, void 0, function* () {
149
- try {
150
- const indexes = precomputed_1.DeparturesModel.indexesOptions;
151
- const indexQuery = (0, utils_1.buildCreateIndexQuery)(precomputed_1.DeparturesModel.TABLE_NAME, indexes);
152
- yield this.sequelizeModel.sequelize.query(indexQuery);
153
- }
154
- catch (err) {
155
- helpers_1.log.error(err);
156
- throw err;
157
- }
158
- });
159
- }
160
- }
161
- exports.DeparturesRepository = DeparturesRepository;
162
- //# sourceMappingURL=DeparturesRepository.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeparturesRepository.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/data-access/DeparturesRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oCAAmF;AACnF,uEAA4C;AAC5C,2FAAqE;AACrE,2EAAoE;AACpE,yEAAqF;AACrF,mFAAkF;AAGlF,MAAa,oBAAqB,SAAQ,sBAAa;IACnD;QACI,KAAK,CACD,sBAAsB,EACtB;YACI,WAAW,EAAE,6BAAe,CAAC,UAAU;YACvC,QAAQ,EAAE,sBAAS,CAAC,QAAQ;YAC5B,yBAAyB,EAAE,6BAAe,CAAC,cAAc;YACzD,kBAAkB,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC;YACtD,UAAU,EAAE,YAAY;SAC3B,EACD,IAAI,uCAAmB,CAAC,sBAAsB,EAAE,6BAAe,CAAC,UAAU,CAAC,CAC9E,CAAC;QAGC,6BAAwB,GAAG,GAAwB,EAAE;YACxD,4BAA4B;YAC5B,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA6DO,sBAAS,CAAC,QAAQ;0BACnB,sBAAS,CAAC,QAAQ;0BAClB,sBAAS,CAAC,QAAQ;qBACvB,sBAAS,CAAC,QAAQ;0BACb,sBAAS,CAAC,QAAQ;0BAClB,sBAAS,CAAC,QAAQ;0BAClB,sBAAS,CAAC,QAAQ;0BAClB,sBAAS,CAAC,QAAQ;;0BAElB,sBAAS,CAAC,QAAQ;;yCAEH,CAAC;YAClC,2BAA2B;YAE3B,IAAI;gBACA,MAAM,SAAS,GAAG,6BAAe,CAAC,UAAU,CAAC;gBAC7C,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;gBAExC,MAAM,IAAI,CAAC,cAAc,CAAC,SAAU,CAAC,KAAK,CACtC;2CAC2B,sBAAS,CAAC,QAAQ;uCACtB,YAAY;+BACpB,YAAY,UAAU,SAAS;;;8BAGhC,YAAY,IAAI,GAAG,GAAG,CACvC,CAAC;aACL;YAAC,OAAO,GAAG,EAAE;gBACV,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM,GAAG,CAAC;aACb;QACL,CAAC,CAAA,CAAC;QAEK,iBAAY,GAAG,CAAO,WAAwB,EAAiB,EAAE;YACpE,IAAI;gBACA,MAAM,SAAS,GAAG,6BAAe,CAAC,UAAU,CAAC;gBAC7C,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;gBACxC,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;gBAE1C,MAAM,UAAU,GAAG,IAAA,4BAAoB,EAAC,6BAAe,CAAC,cAAc,CAAC,CAAC;gBACxE,MAAM,IAAI,CAAC,cAAc,CAAC,SAAU,CAAC,KAAK,CACtC;2CAC2B,sBAAS,CAAC,QAAQ;uBACtC,SAAS;8BACF,SAAS,cAAc,aAAa;8BACpC,YAAY,cAAc,SAAS;6BACpC,aAAa;kBACxB,UAAU,EAAE,EACd,EAAE,WAAW,EAAE,CAClB,CAAC;aACL;YAAC,OAAO,GAAG,EAAE;gBACV,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM,GAAG,CAAC;aACb;QACL,CAAC,CAAA,CAAC;QAEK,YAAO,GAAG,GAAwB,EAAE;YACvC,IAAI;gBACA,MAAM,IAAI,CAAC,cAAc,CAAC,SAAU,CAAC,KAAK,CAAC,WAAW,sBAAS,CAAC,QAAQ,IAAI,6BAAe,CAAC,UAAU,OAAO,CAAC,CAAC;aAClH;YAAC,OAAO,GAAG,EAAE;gBACV,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM,GAAG,CAAC;aACb;QACL,CAAC,CAAA,CAAC;QAEK,kBAAa,GAAG,GAAwB,EAAE;YAC7C,IAAI;gBACA,MAAM,OAAO,GAAG,6BAAe,CAAC,cAAc,CAAC;gBAC/C,MAAM,UAAU,GAAG,IAAA,6BAAqB,EAAC,6BAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAE9E,MAAM,IAAI,CAAC,cAAc,CAAC,SAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;aAC1D;YAAC,OAAO,GAAG,EAAE;gBACV,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM,GAAG,CAAC;aACb;QACL,CAAC,CAAA,CAAC;IA5IF,CAAC;CA6IJ;AA1JD,oDA0JC"}
@@ -1 +0,0 @@
1
- export * from "./DeparturesRepository";
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/data-access/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC"}