@golemio/rush-hour-aggregation 1.0.0 → 1.0.1
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/README.md +61 -21
- package/db/migrations/postgresql/20220505053742-addMaterialViews.js +53 -0
- package/db/migrations/postgresql/sqls/20220505053742-addMaterialViews-down.sql +10 -0
- package/db/migrations/postgresql/sqls/20220505053742-addMaterialViews-up.sql +565 -0
- package/dist/integration-engine/AggregationWorker.d.ts +2 -0
- package/dist/integration-engine/AggregationWorker.js +14 -2
- package/dist/integration-engine/AggregationWorker.js.map +1 -1
- package/dist/integration-engine/dataAccess/AbstractEventsRepository.d.ts +9 -0
- package/dist/integration-engine/dataAccess/AbstractEventsRepository.js +35 -0
- package/dist/integration-engine/dataAccess/AbstractEventsRepository.js.map +1 -0
- package/dist/integration-engine/dataAccess/FcdEventsRepository.d.ts +4 -2
- package/dist/integration-engine/dataAccess/FcdEventsRepository.js +4 -2
- package/dist/integration-engine/dataAccess/FcdEventsRepository.js.map +1 -1
- package/dist/integration-engine/dataAccess/NdicEventRepository.d.ts +4 -2
- package/dist/integration-engine/dataAccess/NdicEventRepository.js +4 -2
- package/dist/integration-engine/dataAccess/NdicEventRepository.js.map +1 -1
- package/dist/integration-engine/dataAccess/TskEventsRepository.d.ts +4 -2
- package/dist/integration-engine/dataAccess/TskEventsRepository.js +4 -2
- package/dist/integration-engine/dataAccess/TskEventsRepository.js.map +1 -1
- package/dist/integration-engine/dataAccess/WazeJamsRepository.d.ts +4 -2
- package/dist/integration-engine/dataAccess/WazeJamsRepository.js +4 -2
- package/dist/integration-engine/dataAccess/WazeJamsRepository.js.map +1 -1
- package/dist/integration-engine/dataAccess/WazeReconstructionsRepository.d.ts +4 -2
- package/dist/integration-engine/dataAccess/WazeReconstructionsRepository.js +4 -2
- package/dist/integration-engine/dataAccess/WazeReconstructionsRepository.js.map +1 -1
- package/dist/integration-engine/queueDefinitions.js +10 -0
- package/dist/integration-engine/queueDefinitions.js.map +1 -1
- package/dist/integration-engine/service/AggregationFactory.d.ts +2 -2
- package/dist/integration-engine/service/AggregationFactory.js.map +1 -1
- package/dist/integration-engine/service/aggregators/AbstractAggregator.d.ts +7 -3
- package/dist/integration-engine/service/aggregators/AbstractAggregator.js +8 -0
- package/dist/integration-engine/service/aggregators/AbstractAggregator.js.map +1 -1
- package/dist/integration-engine/service/aggregators/FcdEventsAggregator.d.ts +3 -3
- package/dist/integration-engine/service/aggregators/FcdEventsAggregator.js +0 -4
- package/dist/integration-engine/service/aggregators/FcdEventsAggregator.js.map +1 -1
- package/dist/integration-engine/service/aggregators/NdicEventsAggregator.d.ts +3 -3
- package/dist/integration-engine/service/aggregators/NdicEventsAggregator.js +0 -4
- package/dist/integration-engine/service/aggregators/NdicEventsAggregator.js.map +1 -1
- package/dist/integration-engine/service/aggregators/TskEventsAggregator.d.ts +3 -3
- package/dist/integration-engine/service/aggregators/TskEventsAggregator.js +0 -4
- package/dist/integration-engine/service/aggregators/TskEventsAggregator.js.map +1 -1
- package/dist/integration-engine/service/aggregators/WazeJamsAggregator.d.ts +3 -3
- package/dist/integration-engine/service/aggregators/WazeJamsAggregator.js +0 -4
- package/dist/integration-engine/service/aggregators/WazeJamsAggregator.js.map +1 -1
- package/dist/integration-engine/service/aggregators/WazeReconstructionsAggregator.d.ts +3 -3
- package/dist/integration-engine/service/aggregators/WazeReconstructionsAggregator.js +0 -4
- package/dist/integration-engine/service/aggregators/WazeReconstructionsAggregator.js.map +1 -1
- package/dist/integration-engine/service/aggregators/interfaces/IAbstractAggregator.d.ts +6 -0
- package/dist/integration-engine/service/aggregators/interfaces/IAbstractAggregator.js +3 -0
- package/dist/integration-engine/service/aggregators/interfaces/IAbstractAggregator.js.map +1 -0
- package/package.json +2 -2
- package/templates/sqlQueries/FcdEvents.sql +1 -1
- package/templates/sqlQueries/NdicEventsFull.sql +2 -2
|
@@ -0,0 +1,565 @@
|
|
|
1
|
+
--
|
|
2
|
+
-- WAZE
|
|
3
|
+
--
|
|
4
|
+
|
|
5
|
+
CREATE MATERIALIZED VIEW waze_reconstructions_snapshots_history AS WITH config AS (
|
|
6
|
+
SELECT 120000 AS max_period,
|
|
7
|
+
date_part('epoch'::text, date_trunc('day',now(), 'Europe/Prague')) * 1000::double precision AS max_measured_at
|
|
8
|
+
)
|
|
9
|
+
SELECT s.start_measured_at,
|
|
10
|
+
s.end_measured_at,
|
|
11
|
+
to_timestamp((s.start_measured_at / 1000)::double precision) AS start_ts,
|
|
12
|
+
to_timestamp((s.end_measured_at / 1000)::double precision) AS end_ts
|
|
13
|
+
FROM ( SELECT s_1.measured_at AS start_measured_at,
|
|
14
|
+
CASE
|
|
15
|
+
WHEN s_1.is_end IS TRUE THEN s_1.measured_at
|
|
16
|
+
ELSE lead(s_1.measured_at) OVER (ORDER BY s_1.measured_at)
|
|
17
|
+
END + (( SELECT config.max_period
|
|
18
|
+
FROM config)) AS end_measured_at,
|
|
19
|
+
s_1.is_start,
|
|
20
|
+
s_1.is_end
|
|
21
|
+
FROM ( SELECT s_2.measured_at,
|
|
22
|
+
s_2.prev_measured_at,
|
|
23
|
+
s_2.next_measured_at,
|
|
24
|
+
s_2."?column?",
|
|
25
|
+
s_2."?column?_1" AS "?column?",
|
|
26
|
+
s_2.is_start,
|
|
27
|
+
s_2.is_end
|
|
28
|
+
FROM ( SELECT s_3.measured_at,
|
|
29
|
+
s_3.prev_measured_at,
|
|
30
|
+
s_3.next_measured_at,
|
|
31
|
+
s_3.measured_at - s_3.prev_measured_at,
|
|
32
|
+
s_3.measured_at - s_3.next_measured_at,
|
|
33
|
+
CASE
|
|
34
|
+
WHEN s_3.prev_measured_at < (s_3.measured_at - (( SELECT config.max_period
|
|
35
|
+
FROM config))) OR s_3.prev_measured_at IS NULL THEN true
|
|
36
|
+
ELSE false
|
|
37
|
+
END AS is_start,
|
|
38
|
+
CASE
|
|
39
|
+
WHEN s_3.next_measured_at > (s_3.measured_at + (( SELECT config.max_period
|
|
40
|
+
FROM config))) OR s_3.next_measured_at IS NULL THEN true
|
|
41
|
+
ELSE false
|
|
42
|
+
END AS is_end
|
|
43
|
+
FROM ( SELECT s_4.measured_at,
|
|
44
|
+
lag(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS prev_measured_at,
|
|
45
|
+
lead(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS next_measured_at
|
|
46
|
+
FROM ( SELECT DISTINCT waze_reconstructions.measured_at
|
|
47
|
+
FROM waze_reconstructions WHERE waze_reconstructions.measured_at::double precision < (( SELECT config.max_measured_at
|
|
48
|
+
FROM config))) s_4) s_3) s_2(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)
|
|
49
|
+
WHERE s_2.is_start IS TRUE OR s_2.is_end IS TRUE) s_1(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)) s
|
|
50
|
+
WHERE s.is_start IS TRUE;
|
|
51
|
+
|
|
52
|
+
-- Indices -------------------------------------------------------
|
|
53
|
+
|
|
54
|
+
CREATE UNIQUE INDEX waze_reconstructions_snapshots_history_start_measured_at_idx ON waze_reconstructions_snapshots_history(start_measured_at int8_ops);
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
------
|
|
58
|
+
------
|
|
59
|
+
|
|
60
|
+
CREATE MATERIALIZED VIEW waze_reconstructions_snapshots_latest AS WITH config AS (
|
|
61
|
+
SELECT 120000 AS max_period,
|
|
62
|
+
date_part('epoch'::text, date_trunc('day',now(), 'Europe/Prague')) * 1000::double precision AS min_measured_at
|
|
63
|
+
)
|
|
64
|
+
SELECT s.start_measured_at,
|
|
65
|
+
s.end_measured_at,
|
|
66
|
+
to_timestamp((s.start_measured_at / 1000)::double precision) AS start_ts,
|
|
67
|
+
to_timestamp((s.end_measured_at / 1000)::double precision) AS end_ts
|
|
68
|
+
FROM ( SELECT s_1.measured_at AS start_measured_at,
|
|
69
|
+
CASE
|
|
70
|
+
WHEN s_1.is_end IS TRUE THEN s_1.measured_at
|
|
71
|
+
ELSE lead(s_1.measured_at) OVER (ORDER BY s_1.measured_at)
|
|
72
|
+
END + (( SELECT config.max_period
|
|
73
|
+
FROM config)) AS end_measured_at,
|
|
74
|
+
s_1.is_start,
|
|
75
|
+
s_1.is_end
|
|
76
|
+
FROM ( SELECT s_2.measured_at,
|
|
77
|
+
s_2.prev_measured_at,
|
|
78
|
+
s_2.next_measured_at,
|
|
79
|
+
s_2."?column?",
|
|
80
|
+
s_2."?column?_1" AS "?column?",
|
|
81
|
+
s_2.is_start,
|
|
82
|
+
s_2.is_end
|
|
83
|
+
FROM ( SELECT s_3.measured_at,
|
|
84
|
+
s_3.prev_measured_at,
|
|
85
|
+
s_3.next_measured_at,
|
|
86
|
+
s_3.measured_at - s_3.prev_measured_at,
|
|
87
|
+
s_3.measured_at - s_3.next_measured_at,
|
|
88
|
+
CASE
|
|
89
|
+
WHEN s_3.prev_measured_at < (s_3.measured_at - (( SELECT config.max_period
|
|
90
|
+
FROM config))) OR s_3.prev_measured_at IS NULL THEN true
|
|
91
|
+
ELSE false
|
|
92
|
+
END AS is_start,
|
|
93
|
+
CASE
|
|
94
|
+
WHEN s_3.next_measured_at > (s_3.measured_at + (( SELECT config.max_period
|
|
95
|
+
FROM config))) OR s_3.next_measured_at IS NULL THEN true
|
|
96
|
+
ELSE false
|
|
97
|
+
END AS is_end
|
|
98
|
+
FROM ( SELECT s_4.measured_at,
|
|
99
|
+
lag(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS prev_measured_at,
|
|
100
|
+
lead(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS next_measured_at
|
|
101
|
+
FROM ( SELECT DISTINCT waze_reconstructions.measured_at
|
|
102
|
+
FROM waze_reconstructions WHERE waze_reconstructions.measured_at::double precision >= (( SELECT config.min_measured_at
|
|
103
|
+
FROM config))) s_4) s_3) s_2(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)
|
|
104
|
+
WHERE s_2.is_start IS TRUE OR s_2.is_end IS TRUE) s_1(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)) s
|
|
105
|
+
WHERE s.is_start IS TRUE;
|
|
106
|
+
|
|
107
|
+
-- Indices -------------------------------------------------------
|
|
108
|
+
CREATE UNIQUE INDEX waze_reconstructions_snapshots_latest_start_measured_at_idx ON waze_reconstructions_snapshots_latest(start_measured_at int8_ops);
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
-- Table Definition ----------------------------------------------
|
|
116
|
+
|
|
117
|
+
CREATE MATERIALIZED VIEW waze_jams_snapshots_history AS WITH config AS (
|
|
118
|
+
SELECT 120000 AS max_period,
|
|
119
|
+
date_part('epoch'::text, date_trunc('day',now(), 'Europe/Prague')) * 1000::double precision AS max_measured_at
|
|
120
|
+
)
|
|
121
|
+
SELECT s.start_measured_at,
|
|
122
|
+
s.end_measured_at,
|
|
123
|
+
to_timestamp((s.start_measured_at / 1000)::double precision) AS start_ts,
|
|
124
|
+
to_timestamp((s.end_measured_at / 1000)::double precision) AS end_ts
|
|
125
|
+
FROM ( SELECT s_1.measured_at AS start_measured_at,
|
|
126
|
+
CASE
|
|
127
|
+
WHEN s_1.is_end IS TRUE THEN s_1.measured_at
|
|
128
|
+
ELSE lead(s_1.measured_at) OVER (ORDER BY s_1.measured_at)
|
|
129
|
+
END + (( SELECT config.max_period
|
|
130
|
+
FROM config)) AS end_measured_at,
|
|
131
|
+
s_1.is_start,
|
|
132
|
+
s_1.is_end
|
|
133
|
+
FROM ( SELECT s_2.measured_at,
|
|
134
|
+
s_2.prev_measured_at,
|
|
135
|
+
s_2.next_measured_at,
|
|
136
|
+
s_2."?column?",
|
|
137
|
+
s_2."?column?_1" AS "?column?",
|
|
138
|
+
s_2.is_start,
|
|
139
|
+
s_2.is_end
|
|
140
|
+
FROM ( SELECT s_3.measured_at,
|
|
141
|
+
s_3.prev_measured_at,
|
|
142
|
+
s_3.next_measured_at,
|
|
143
|
+
s_3.measured_at - s_3.prev_measured_at,
|
|
144
|
+
s_3.measured_at - s_3.next_measured_at,
|
|
145
|
+
CASE
|
|
146
|
+
WHEN s_3.prev_measured_at < (s_3.measured_at - (( SELECT config.max_period
|
|
147
|
+
FROM config))) OR s_3.prev_measured_at IS NULL THEN true
|
|
148
|
+
ELSE false
|
|
149
|
+
END AS is_start,
|
|
150
|
+
CASE
|
|
151
|
+
WHEN s_3.next_measured_at > (s_3.measured_at + (( SELECT config.max_period
|
|
152
|
+
FROM config))) OR s_3.next_measured_at IS NULL THEN true
|
|
153
|
+
ELSE false
|
|
154
|
+
END AS is_end
|
|
155
|
+
FROM ( SELECT s_4.measured_at,
|
|
156
|
+
lag(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS prev_measured_at,
|
|
157
|
+
lead(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS next_measured_at
|
|
158
|
+
FROM ( SELECT DISTINCT waze_jams.measured_at
|
|
159
|
+
FROM waze_jams WHERE waze_jams.measured_at::double precision < (( SELECT config.max_measured_at
|
|
160
|
+
FROM config))) s_4) s_3) s_2(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)
|
|
161
|
+
WHERE s_2.is_start IS TRUE OR s_2.is_end IS TRUE) s_1(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)) s
|
|
162
|
+
WHERE s.is_start IS TRUE;
|
|
163
|
+
|
|
164
|
+
-- Indices -------------------------------------------------------
|
|
165
|
+
|
|
166
|
+
CREATE UNIQUE INDEX waze_jams_snapshots_history_start_measured_at_idx ON waze_jams_snapshots_history(start_measured_at int8_ops);
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
-- Table Definition ----------------------------------------------
|
|
170
|
+
|
|
171
|
+
CREATE MATERIALIZED VIEW waze_jams_snapshots_latest AS WITH config AS (
|
|
172
|
+
SELECT 120000 AS max_period,
|
|
173
|
+
date_part('epoch'::text, date_trunc('day',now(), 'Europe/Prague')) * 1000::double precision AS min_measured_at
|
|
174
|
+
)
|
|
175
|
+
SELECT s.start_measured_at,
|
|
176
|
+
s.end_measured_at,
|
|
177
|
+
to_timestamp((s.start_measured_at / 1000)::double precision) AS start_ts,
|
|
178
|
+
to_timestamp((s.end_measured_at / 1000)::double precision) AS end_ts
|
|
179
|
+
FROM ( SELECT s_1.measured_at AS start_measured_at,
|
|
180
|
+
CASE
|
|
181
|
+
WHEN s_1.is_end IS TRUE THEN s_1.measured_at
|
|
182
|
+
ELSE lead(s_1.measured_at) OVER (ORDER BY s_1.measured_at)
|
|
183
|
+
END + (( SELECT config.max_period
|
|
184
|
+
FROM config)) AS end_measured_at,
|
|
185
|
+
s_1.is_start,
|
|
186
|
+
s_1.is_end
|
|
187
|
+
FROM ( SELECT s_2.measured_at,
|
|
188
|
+
s_2.prev_measured_at,
|
|
189
|
+
s_2.next_measured_at,
|
|
190
|
+
s_2."?column?",
|
|
191
|
+
s_2."?column?_1" AS "?column?",
|
|
192
|
+
s_2.is_start,
|
|
193
|
+
s_2.is_end
|
|
194
|
+
FROM ( SELECT s_3.measured_at,
|
|
195
|
+
s_3.prev_measured_at,
|
|
196
|
+
s_3.next_measured_at,
|
|
197
|
+
s_3.measured_at - s_3.prev_measured_at,
|
|
198
|
+
s_3.measured_at - s_3.next_measured_at,
|
|
199
|
+
CASE
|
|
200
|
+
WHEN s_3.prev_measured_at < (s_3.measured_at - (( SELECT config.max_period
|
|
201
|
+
FROM config))) OR s_3.prev_measured_at IS NULL THEN true
|
|
202
|
+
ELSE false
|
|
203
|
+
END AS is_start,
|
|
204
|
+
CASE
|
|
205
|
+
WHEN s_3.next_measured_at > (s_3.measured_at + (( SELECT config.max_period
|
|
206
|
+
FROM config))) OR s_3.next_measured_at IS NULL THEN true
|
|
207
|
+
ELSE false
|
|
208
|
+
END AS is_end
|
|
209
|
+
FROM ( SELECT s_4.measured_at,
|
|
210
|
+
lag(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS prev_measured_at,
|
|
211
|
+
lead(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS next_measured_at
|
|
212
|
+
FROM ( SELECT DISTINCT waze_jams.measured_at
|
|
213
|
+
FROM waze_jams WHERE waze_jams.measured_at::double precision >= (( SELECT config.min_measured_at
|
|
214
|
+
FROM config))) s_4) s_3) s_2(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)
|
|
215
|
+
WHERE s_2.is_start IS TRUE OR s_2.is_end IS TRUE) s_1(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)) s
|
|
216
|
+
WHERE s.is_start IS TRUE;
|
|
217
|
+
|
|
218
|
+
-- Indices -------------------------------------------------------
|
|
219
|
+
|
|
220
|
+
CREATE UNIQUE INDEX waze_jams_snapshots_latest_start_measured_at_idx ON waze_jams_snapshots_latest(start_measured_at int8_ops);
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
---
|
|
226
|
+
--- TSK STD
|
|
227
|
+
---
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
-- Table Definition ----------------------------------------------
|
|
231
|
+
|
|
232
|
+
CREATE MATERIALIZED VIEW tsk_std_last_30min_snapshots_history AS WITH config AS (
|
|
233
|
+
SELECT 300000 AS max_period,
|
|
234
|
+
date_part('epoch'::text, date_trunc('day',now(), 'Europe/Prague')) * 1000::double precision AS max_measured_at
|
|
235
|
+
)
|
|
236
|
+
SELECT s.start_measured_at,
|
|
237
|
+
s.end_measured_at,
|
|
238
|
+
to_timestamp((s.start_measured_at / 1000)::double precision) AS start_ts,
|
|
239
|
+
to_timestamp((s.end_measured_at / 1000)::double precision) AS end_ts
|
|
240
|
+
FROM ( SELECT s_1.measured_at AS start_measured_at,
|
|
241
|
+
CASE
|
|
242
|
+
WHEN s_1.is_end IS TRUE THEN s_1.measured_at
|
|
243
|
+
ELSE lead(s_1.measured_at) OVER (ORDER BY s_1.measured_at)
|
|
244
|
+
END + (( SELECT config.max_period
|
|
245
|
+
FROM config)) AS end_measured_at,
|
|
246
|
+
s_1.is_start,
|
|
247
|
+
s_1.is_end
|
|
248
|
+
FROM ( SELECT s_2.measured_at,
|
|
249
|
+
s_2.prev_measured_at,
|
|
250
|
+
s_2.next_measured_at,
|
|
251
|
+
s_2."?column?",
|
|
252
|
+
s_2."?column?_1" AS "?column?",
|
|
253
|
+
s_2.is_start,
|
|
254
|
+
s_2.is_end
|
|
255
|
+
FROM ( SELECT s_3.measured_at,
|
|
256
|
+
s_3.prev_measured_at,
|
|
257
|
+
s_3.next_measured_at,
|
|
258
|
+
s_3.measured_at - s_3.prev_measured_at,
|
|
259
|
+
s_3.measured_at - s_3.next_measured_at,
|
|
260
|
+
CASE
|
|
261
|
+
WHEN s_3.prev_measured_at < (s_3.measured_at - (( SELECT config.max_period
|
|
262
|
+
FROM config))) OR s_3.prev_measured_at IS NULL THEN true
|
|
263
|
+
ELSE false
|
|
264
|
+
END AS is_start,
|
|
265
|
+
CASE
|
|
266
|
+
WHEN s_3.next_measured_at > (s_3.measured_at + (( SELECT config.max_period
|
|
267
|
+
FROM config))) OR s_3.next_measured_at IS NULL THEN true
|
|
268
|
+
ELSE false
|
|
269
|
+
END AS is_end
|
|
270
|
+
FROM ( SELECT s_4.measured_at,
|
|
271
|
+
lag(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS prev_measured_at,
|
|
272
|
+
lead(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS next_measured_at
|
|
273
|
+
FROM ( SELECT DISTINCT tsk_std_last_30min.measured_at
|
|
274
|
+
FROM tsk_std_last_30min WHERE tsk_std_last_30min.measured_at::double precision < (( SELECT config.max_measured_at
|
|
275
|
+
FROM config))) s_4) s_3) s_2(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)
|
|
276
|
+
WHERE s_2.is_start IS TRUE OR s_2.is_end IS TRUE) s_1(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)) s
|
|
277
|
+
WHERE s.is_start IS TRUE;
|
|
278
|
+
|
|
279
|
+
-- Indices -------------------------------------------------------
|
|
280
|
+
|
|
281
|
+
CREATE UNIQUE INDEX tsk_std_last_30min_snapshots_history_start_measured_at_idx ON tsk_std_last_30min_snapshots_history(start_measured_at int8_ops);
|
|
282
|
+
|
|
283
|
+
-- Table Definition ----------------------------------------------
|
|
284
|
+
|
|
285
|
+
CREATE MATERIALIZED VIEW tsk_std_last_30min_snapshots_latest AS WITH config AS (
|
|
286
|
+
SELECT 300000 AS max_period,
|
|
287
|
+
date_part('epoch'::text, date_trunc('day',now(), 'Europe/Prague')) * 1000::double precision AS min_measured_at
|
|
288
|
+
)
|
|
289
|
+
SELECT s.start_measured_at,
|
|
290
|
+
s.end_measured_at,
|
|
291
|
+
to_timestamp((s.start_measured_at / 1000)::double precision) AS start_ts,
|
|
292
|
+
to_timestamp((s.end_measured_at / 1000)::double precision) AS end_ts
|
|
293
|
+
FROM ( SELECT s_1.measured_at AS start_measured_at,
|
|
294
|
+
CASE
|
|
295
|
+
WHEN s_1.is_end IS TRUE THEN s_1.measured_at
|
|
296
|
+
ELSE lead(s_1.measured_at) OVER (ORDER BY s_1.measured_at)
|
|
297
|
+
END + (( SELECT config.max_period
|
|
298
|
+
FROM config)) AS end_measured_at,
|
|
299
|
+
s_1.is_start,
|
|
300
|
+
s_1.is_end
|
|
301
|
+
FROM ( SELECT s_2.measured_at,
|
|
302
|
+
s_2.prev_measured_at,
|
|
303
|
+
s_2.next_measured_at,
|
|
304
|
+
s_2."?column?",
|
|
305
|
+
s_2."?column?_1" AS "?column?",
|
|
306
|
+
s_2.is_start,
|
|
307
|
+
s_2.is_end
|
|
308
|
+
FROM ( SELECT s_3.measured_at,
|
|
309
|
+
s_3.prev_measured_at,
|
|
310
|
+
s_3.next_measured_at,
|
|
311
|
+
s_3.measured_at - s_3.prev_measured_at,
|
|
312
|
+
s_3.measured_at - s_3.next_measured_at,
|
|
313
|
+
CASE
|
|
314
|
+
WHEN s_3.prev_measured_at < (s_3.measured_at - (( SELECT config.max_period
|
|
315
|
+
FROM config))) OR s_3.prev_measured_at IS NULL THEN true
|
|
316
|
+
ELSE false
|
|
317
|
+
END AS is_start,
|
|
318
|
+
CASE
|
|
319
|
+
WHEN s_3.next_measured_at > (s_3.measured_at + (( SELECT config.max_period
|
|
320
|
+
FROM config))) OR s_3.next_measured_at IS NULL THEN true
|
|
321
|
+
ELSE false
|
|
322
|
+
END AS is_end
|
|
323
|
+
FROM ( SELECT s_4.measured_at,
|
|
324
|
+
lag(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS prev_measured_at,
|
|
325
|
+
lead(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS next_measured_at
|
|
326
|
+
FROM ( SELECT DISTINCT tsk_std_last_30min.measured_at
|
|
327
|
+
FROM tsk_std_last_30min WHERE tsk_std_last_30min.measured_at::double precision >= (( SELECT config.min_measured_at
|
|
328
|
+
FROM config))) s_4) s_3) s_2(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)
|
|
329
|
+
WHERE s_2.is_start IS TRUE OR s_2.is_end IS TRUE) s_1(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)) s
|
|
330
|
+
WHERE s.is_start IS TRUE;
|
|
331
|
+
|
|
332
|
+
-- Indices -------------------------------------------------------
|
|
333
|
+
|
|
334
|
+
CREATE UNIQUE INDEX tsk_std_last_30min_snapshots_latest_start_measured_at_idx ON tsk_std_last_30min_snapshots_latest(start_measured_at int8_ops);
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
--
|
|
341
|
+
--
|
|
342
|
+
-- NDIC
|
|
343
|
+
--
|
|
344
|
+
--
|
|
345
|
+
|
|
346
|
+
-- Table Definition ----------------------------------------------
|
|
347
|
+
|
|
348
|
+
CREATE MATERIALIZED VIEW ndic_events_full_snapshots_history AS WITH config AS (
|
|
349
|
+
SELECT 1800000 AS max_period,
|
|
350
|
+
date_part('epoch'::text, date_trunc('day',now(), 'Europe/Prague')) * 1000::double precision AS max_measured_at
|
|
351
|
+
)
|
|
352
|
+
SELECT s.start_measured_at,
|
|
353
|
+
s.end_measured_at,
|
|
354
|
+
to_timestamp((s.start_measured_at / 1000)::double precision) AS start_ts,
|
|
355
|
+
to_timestamp((s.end_measured_at / 1000)::double precision) AS end_ts
|
|
356
|
+
FROM ( SELECT s_1.measured_at AS start_measured_at,
|
|
357
|
+
CASE
|
|
358
|
+
WHEN s_1.is_end IS TRUE THEN s_1.measured_at
|
|
359
|
+
ELSE lead(s_1.measured_at) OVER (ORDER BY s_1.measured_at)
|
|
360
|
+
END + (( SELECT config.max_period
|
|
361
|
+
FROM config)) AS end_measured_at,
|
|
362
|
+
s_1.is_start,
|
|
363
|
+
s_1.is_end
|
|
364
|
+
FROM ( SELECT s_2.measured_at,
|
|
365
|
+
s_2.prev_measured_at,
|
|
366
|
+
s_2.next_measured_at,
|
|
367
|
+
s_2."?column?",
|
|
368
|
+
s_2."?column?_1" AS "?column?",
|
|
369
|
+
s_2.is_start,
|
|
370
|
+
s_2.is_end
|
|
371
|
+
FROM ( SELECT s_3.measured_at,
|
|
372
|
+
s_3.prev_measured_at,
|
|
373
|
+
s_3.next_measured_at,
|
|
374
|
+
s_3.measured_at - s_3.prev_measured_at,
|
|
375
|
+
s_3.measured_at - s_3.next_measured_at,
|
|
376
|
+
CASE
|
|
377
|
+
WHEN s_3.prev_measured_at < (s_3.measured_at - (( SELECT config.max_period
|
|
378
|
+
FROM config))) OR s_3.prev_measured_at IS NULL THEN true
|
|
379
|
+
ELSE false
|
|
380
|
+
END AS is_start,
|
|
381
|
+
CASE
|
|
382
|
+
WHEN s_3.next_measured_at > (s_3.measured_at + (( SELECT config.max_period
|
|
383
|
+
FROM config))) OR s_3.next_measured_at IS NULL THEN true
|
|
384
|
+
ELSE false
|
|
385
|
+
END AS is_end
|
|
386
|
+
FROM ( SELECT s_4.measured_at,
|
|
387
|
+
lag(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS prev_measured_at,
|
|
388
|
+
lead(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS next_measured_at
|
|
389
|
+
FROM ( SELECT DISTINCT ndic_events_full.measured_at
|
|
390
|
+
FROM ndic_events_full WHERE ndic_events_full.measured_at::double precision < (( SELECT config.max_measured_at
|
|
391
|
+
FROM config))) s_4) s_3) s_2(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)
|
|
392
|
+
WHERE s_2.is_start IS TRUE OR s_2.is_end IS TRUE) s_1(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)) s
|
|
393
|
+
WHERE s.is_start IS TRUE;
|
|
394
|
+
|
|
395
|
+
-- Indices -------------------------------------------------------
|
|
396
|
+
|
|
397
|
+
CREATE UNIQUE INDEX ndic_events_full_snapshots_history_start_measured_at_idx ON ndic_events_full_snapshots_history(start_measured_at int8_ops);
|
|
398
|
+
|
|
399
|
+
-- Table Definition ----------------------------------------------
|
|
400
|
+
|
|
401
|
+
CREATE MATERIALIZED VIEW ndic_events_full_snapshots_latest AS WITH config AS (
|
|
402
|
+
SELECT 1800000 AS max_period,
|
|
403
|
+
date_part('epoch'::text, date_trunc('day',now(), 'Europe/Prague')) * 1000::double precision AS min_measured_at
|
|
404
|
+
)
|
|
405
|
+
SELECT s.start_measured_at,
|
|
406
|
+
s.end_measured_at,
|
|
407
|
+
to_timestamp((s.start_measured_at / 1000)::double precision) AS start_ts,
|
|
408
|
+
to_timestamp((s.end_measured_at / 1000)::double precision) AS end_ts
|
|
409
|
+
FROM ( SELECT s_1.measured_at AS start_measured_at,
|
|
410
|
+
CASE
|
|
411
|
+
WHEN s_1.is_end IS TRUE THEN s_1.measured_at
|
|
412
|
+
ELSE lead(s_1.measured_at) OVER (ORDER BY s_1.measured_at)
|
|
413
|
+
END + (( SELECT config.max_period
|
|
414
|
+
FROM config)) AS end_measured_at,
|
|
415
|
+
s_1.is_start,
|
|
416
|
+
s_1.is_end
|
|
417
|
+
FROM ( SELECT s_2.measured_at,
|
|
418
|
+
s_2.prev_measured_at,
|
|
419
|
+
s_2.next_measured_at,
|
|
420
|
+
s_2."?column?",
|
|
421
|
+
s_2."?column?_1" AS "?column?",
|
|
422
|
+
s_2.is_start,
|
|
423
|
+
s_2.is_end
|
|
424
|
+
FROM ( SELECT s_3.measured_at,
|
|
425
|
+
s_3.prev_measured_at,
|
|
426
|
+
s_3.next_measured_at,
|
|
427
|
+
s_3.measured_at - s_3.prev_measured_at,
|
|
428
|
+
s_3.measured_at - s_3.next_measured_at,
|
|
429
|
+
CASE
|
|
430
|
+
WHEN s_3.prev_measured_at < (s_3.measured_at - (( SELECT config.max_period
|
|
431
|
+
FROM config))) OR s_3.prev_measured_at IS NULL THEN true
|
|
432
|
+
ELSE false
|
|
433
|
+
END AS is_start,
|
|
434
|
+
CASE
|
|
435
|
+
WHEN s_3.next_measured_at > (s_3.measured_at + (( SELECT config.max_period
|
|
436
|
+
FROM config))) OR s_3.next_measured_at IS NULL THEN true
|
|
437
|
+
ELSE false
|
|
438
|
+
END AS is_end
|
|
439
|
+
FROM ( SELECT s_4.measured_at,
|
|
440
|
+
lag(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS prev_measured_at,
|
|
441
|
+
lead(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS next_measured_at
|
|
442
|
+
FROM ( SELECT DISTINCT ndic_events_full.measured_at
|
|
443
|
+
FROM ndic_events_full WHERE ndic_events_full.measured_at::double precision >= (( SELECT config.min_measured_at
|
|
444
|
+
FROM config))) s_4) s_3) s_2(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)
|
|
445
|
+
WHERE s_2.is_start IS TRUE OR s_2.is_end IS TRUE) s_1(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)) s
|
|
446
|
+
WHERE s.is_start IS TRUE;
|
|
447
|
+
|
|
448
|
+
-- Indices -------------------------------------------------------
|
|
449
|
+
|
|
450
|
+
CREATE UNIQUE INDEX ndic_events_full_snapshots_latest_start_measured_at_idx ON ndic_events_full_snapshots_latest(start_measured_at int8_ops);
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
--
|
|
456
|
+
--
|
|
457
|
+
-- FCD
|
|
458
|
+
--
|
|
459
|
+
--
|
|
460
|
+
|
|
461
|
+
-- Table Definition ----------------------------------------------
|
|
462
|
+
|
|
463
|
+
CREATE MATERIALIZED VIEW fcd_events_snapshots_history AS WITH config AS (
|
|
464
|
+
SELECT 60000 AS max_period,
|
|
465
|
+
(date_part('epoch'::text, date_trunc('day',now(), 'Europe/Prague')) * 1000)::int8 AS max_measured_at
|
|
466
|
+
)
|
|
467
|
+
SELECT s.start_measured_at,
|
|
468
|
+
s.end_measured_at,
|
|
469
|
+
to_timestamp((s.start_measured_at / 1000)::double precision) AS start_ts,
|
|
470
|
+
to_timestamp((s.end_measured_at / 1000)::double precision) AS end_ts
|
|
471
|
+
FROM ( SELECT s_1.measured_at AS start_measured_at,
|
|
472
|
+
CASE
|
|
473
|
+
WHEN s_1.is_end IS TRUE THEN s_1.measured_at
|
|
474
|
+
ELSE lead(s_1.measured_at) OVER (ORDER BY s_1.measured_at)
|
|
475
|
+
END + (( SELECT config.max_period
|
|
476
|
+
FROM config)) AS end_measured_at,
|
|
477
|
+
s_1.is_start,
|
|
478
|
+
s_1.is_end
|
|
479
|
+
FROM ( SELECT s_2.measured_at,
|
|
480
|
+
s_2.prev_measured_at,
|
|
481
|
+
s_2.next_measured_at,
|
|
482
|
+
s_2."?column?",
|
|
483
|
+
s_2."?column?_1" AS "?column?",
|
|
484
|
+
s_2.is_start,
|
|
485
|
+
s_2.is_end
|
|
486
|
+
FROM ( SELECT s_3.measured_at,
|
|
487
|
+
s_3.prev_measured_at,
|
|
488
|
+
s_3.next_measured_at,
|
|
489
|
+
s_3.measured_at - s_3.prev_measured_at,
|
|
490
|
+
s_3.measured_at - s_3.next_measured_at,
|
|
491
|
+
CASE
|
|
492
|
+
WHEN s_3.prev_measured_at < (s_3.measured_at - (( SELECT config.max_period
|
|
493
|
+
FROM config))) OR s_3.prev_measured_at IS NULL THEN true
|
|
494
|
+
ELSE false
|
|
495
|
+
END AS is_start,
|
|
496
|
+
CASE
|
|
497
|
+
WHEN s_3.next_measured_at > (s_3.measured_at + (( SELECT config.max_period
|
|
498
|
+
FROM config))) OR s_3.next_measured_at IS NULL THEN true
|
|
499
|
+
ELSE false
|
|
500
|
+
END AS is_end
|
|
501
|
+
FROM ( SELECT s_4.measured_at,
|
|
502
|
+
lag(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS prev_measured_at,
|
|
503
|
+
lead(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS next_measured_at
|
|
504
|
+
FROM ( SELECT DISTINCT fcd_events.measured_at
|
|
505
|
+
FROM fcd_events WHERE fcd_events.measured_at < (( SELECT config.max_measured_at
|
|
506
|
+
FROM config))) s_4) s_3) s_2(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)
|
|
507
|
+
WHERE s_2.is_start IS TRUE OR s_2.is_end IS TRUE) s_1(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)) s
|
|
508
|
+
WHERE s.is_start IS TRUE;
|
|
509
|
+
|
|
510
|
+
-- Indices -------------------------------------------------------
|
|
511
|
+
|
|
512
|
+
CREATE UNIQUE INDEX fcd_events_snapshots_history_start_measured_at_idx ON fcd_events_snapshots_history(start_measured_at int8_ops);
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
-- Table Definition ----------------------------------------------
|
|
516
|
+
|
|
517
|
+
CREATE MATERIALIZED VIEW fcd_events_snapshots_latest AS WITH config AS (
|
|
518
|
+
SELECT 60000 AS max_period,
|
|
519
|
+
(date_part('epoch'::text, date_trunc('day',now(), 'Europe/Prague')) * 1000)::int8 AS min_measured_at
|
|
520
|
+
)
|
|
521
|
+
SELECT s.start_measured_at,
|
|
522
|
+
s.end_measured_at,
|
|
523
|
+
to_timestamp((s.start_measured_at / 1000)::double precision) AS start_ts,
|
|
524
|
+
to_timestamp((s.end_measured_at / 1000)::double precision) AS end_ts
|
|
525
|
+
FROM ( SELECT s_1.measured_at AS start_measured_at,
|
|
526
|
+
CASE
|
|
527
|
+
WHEN s_1.is_end IS TRUE THEN s_1.measured_at
|
|
528
|
+
ELSE lead(s_1.measured_at) OVER (ORDER BY s_1.measured_at)
|
|
529
|
+
END + (( SELECT config.max_period
|
|
530
|
+
FROM config)) AS end_measured_at,
|
|
531
|
+
s_1.is_start,
|
|
532
|
+
s_1.is_end
|
|
533
|
+
FROM ( SELECT s_2.measured_at,
|
|
534
|
+
s_2.prev_measured_at,
|
|
535
|
+
s_2.next_measured_at,
|
|
536
|
+
s_2."?column?",
|
|
537
|
+
s_2."?column?_1" AS "?column?",
|
|
538
|
+
s_2.is_start,
|
|
539
|
+
s_2.is_end
|
|
540
|
+
FROM ( SELECT s_3.measured_at,
|
|
541
|
+
s_3.prev_measured_at,
|
|
542
|
+
s_3.next_measured_at,
|
|
543
|
+
s_3.measured_at - s_3.prev_measured_at,
|
|
544
|
+
s_3.measured_at - s_3.next_measured_at,
|
|
545
|
+
CASE
|
|
546
|
+
WHEN s_3.prev_measured_at < (s_3.measured_at - (( SELECT config.max_period
|
|
547
|
+
FROM config))) OR s_3.prev_measured_at IS NULL THEN true
|
|
548
|
+
ELSE false
|
|
549
|
+
END AS is_start,
|
|
550
|
+
CASE
|
|
551
|
+
WHEN s_3.next_measured_at > (s_3.measured_at + (( SELECT config.max_period
|
|
552
|
+
FROM config))) OR s_3.next_measured_at IS NULL THEN true
|
|
553
|
+
ELSE false
|
|
554
|
+
END AS is_end
|
|
555
|
+
FROM ( SELECT s_4.measured_at,
|
|
556
|
+
lag(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS prev_measured_at,
|
|
557
|
+
lead(s_4.measured_at) OVER (ORDER BY s_4.measured_at) AS next_measured_at
|
|
558
|
+
FROM ( SELECT DISTINCT fcd_events.measured_at
|
|
559
|
+
FROM fcd_events WHERE fcd_events.measured_at >= (( SELECT config.min_measured_at
|
|
560
|
+
FROM config))) s_4) s_3) s_2(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)
|
|
561
|
+
WHERE s_2.is_start IS TRUE OR s_2.is_end IS TRUE) s_1(measured_at, prev_measured_at, next_measured_at, "?column?", "?column?_1", is_start, is_end)) s
|
|
562
|
+
WHERE s.is_start IS TRUE;
|
|
563
|
+
-- Indices -------------------------------------------------------
|
|
564
|
+
|
|
565
|
+
CREATE UNIQUE INDEX fcd_events_snapshots_latest_start_measured_at_idx ON fcd_events_snapshots_latest(start_measured_at int8_ops);
|
|
@@ -4,10 +4,12 @@ export declare class AggregationWorker extends BaseWorker {
|
|
|
4
4
|
static queuePrefix: string;
|
|
5
5
|
static queueName: string;
|
|
6
6
|
static aggregationMethodName: string;
|
|
7
|
+
static refreshHistoricViewsMethodName: string;
|
|
7
8
|
private aggregationFactory;
|
|
8
9
|
private refreshIntervalInMinutes;
|
|
9
10
|
constructor();
|
|
10
11
|
aggregateData: (message: Message) => Promise<void>;
|
|
12
|
+
refreshHistoricViews: (message: Message) => Promise<void>;
|
|
11
13
|
private isTaskEmpty;
|
|
12
14
|
private isDateRangeBig;
|
|
13
15
|
private handleEmptyTask;
|
|
@@ -40,6 +40,17 @@ class AggregationWorker extends integration_engine_1.BaseWorker {
|
|
|
40
40
|
throw new errors_1.CustomError(`Unable to process task: ${JSON.stringify(task)}.`, true, this.constructor.name);
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
|
+
this.refreshHistoricViews = (message) => __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
for (const type in AggregationTaskType_1.AggregationTaskType) {
|
|
45
|
+
try {
|
|
46
|
+
const aggregator = this.aggregationFactory.get(type.toUpperCase());
|
|
47
|
+
yield aggregator.refreshHistoricMaterialView();
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
integration_engine_1.log.error(`Unable to refresh historic material view for: ${type}. Error stack: ${err.stack}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
43
54
|
this.handleEmptyTask = () => __awaiter(this, void 0, void 0, function* () {
|
|
44
55
|
const to = new Date();
|
|
45
56
|
const from = luxon_1.DateTime.fromJSDate(to).minus({ minutes: this.refreshIntervalInMinutes }).toJSDate();
|
|
@@ -49,8 +60,8 @@ class AggregationWorker extends integration_engine_1.BaseWorker {
|
|
|
49
60
|
});
|
|
50
61
|
this.processTask = (type, from, to, updateOnDuplicate) => __awaiter(this, void 0, void 0, function* () {
|
|
51
62
|
try {
|
|
52
|
-
const
|
|
53
|
-
yield
|
|
63
|
+
const aggregator = this.aggregationFactory.get(type.toUpperCase());
|
|
64
|
+
yield aggregator.aggregateAndSave(from, to, updateOnDuplicate);
|
|
54
65
|
}
|
|
55
66
|
catch (err) {
|
|
56
67
|
integration_engine_1.log.error(`Unable to process task: ${type} from: ${from} to: ${to}. Error stack: ${err.stack}`);
|
|
@@ -80,4 +91,5 @@ exports.AggregationWorker = AggregationWorker;
|
|
|
80
91
|
AggregationWorker.queuePrefix = config_1.config.RABBIT_EXCHANGE_NAME + "." + "rush-hour-aggregation";
|
|
81
92
|
AggregationWorker.queueName = "rush-hour-aggregation";
|
|
82
93
|
AggregationWorker.aggregationMethodName = "aggregateData";
|
|
94
|
+
AggregationWorker.refreshHistoricViewsMethodName = "refreshHistoricViews";
|
|
83
95
|
//# sourceMappingURL=AggregationWorker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AggregationWorker.js","sourceRoot":"","sources":["../../src/integration-engine/AggregationWorker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,8EAAwE;AACxE,yEAAsE;AACtE,2DAAqE;AACrE,4CAA8C;AAE9C,2FAAwF;AAExF,sFAA8D;AAC9D,kEAA0C;AAE1C,MAAa,iBAAkB,SAAQ,+BAAU;
|
|
1
|
+
{"version":3,"file":"AggregationWorker.js","sourceRoot":"","sources":["../../src/integration-engine/AggregationWorker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,8EAAwE;AACxE,yEAAsE;AACtE,2DAAqE;AACrE,4CAA8C;AAE9C,2FAAwF;AAExF,sFAA8D;AAC9D,kEAA0C;AAE1C,MAAa,iBAAkB,SAAQ,+BAAU;IAQ7C;QACI,KAAK,EAAE,CAAC;QAHJ,6BAAwB,GAAW,EAAE,CAAC;QAOvC,kBAAa,GAAG,CAAO,OAAgB,EAAE,EAAE;YAC9C,MAAM,IAAI,GAAG,sBAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAChD,wBAAG,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;gBACxB,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;aAChC;iBAAM,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;gBAClC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;aACrC;iBAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE;gBAC1C,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACjF;iBAAM;gBACH,MAAM,IAAI,oBAAW,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAC1G;QACL,CAAC,CAAA,CAAC;QAEK,yBAAoB,GAAG,CAAO,OAAgB,EAAE,EAAE;YACrD,KAAK,MAAM,IAAI,IAAI,yCAAmB,EAAE;gBACpC,IAAI;oBACA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAyB,CAAC,CAAC;oBAC1F,MAAM,UAAU,CAAC,2BAA2B,EAAE,CAAC;iBAClD;gBAAC,OAAO,GAAG,EAAE;oBACV,wBAAG,CAAC,KAAK,CAAC,iDAAiD,IAAI,kBAAkB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;iBACjG;aACJ;QACL,CAAC,CAAA,CAAC;QAiBM,oBAAe,GAAG,GAAwB,EAAE;YAChD,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,gBAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;YAClG,KAAK,MAAM,IAAI,IAAI,yCAAmB,EAAE;gBACpC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;aAChD;QACL,CAAC,CAAA,CAAC;QAEM,gBAAW,GAAG,CAAO,IAAY,EAAE,IAAU,EAAE,EAAQ,EAAE,iBAA0B,EAAiB,EAAE;YAC1G,IAAI;gBACA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAyB,CAAC,CAAC;gBAC1F,MAAM,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;aAClE;YAAC,OAAO,GAAG,EAAE;gBACV,wBAAG,CAAC,KAAK,CAAC,2BAA2B,IAAI,UAAU,IAAI,QAAQ,EAAE,kBAAkB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;aACnG;QACL,CAAC,CAAA,CAAC;QAEM,qBAAgB,GAAG,CAAO,IAAqB,EAAiB,EAAE;YACtE,MAAM,QAAQ,GAAG,sBAAY,CAAC,eAAe,CACzC,gBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAK,CAAC,EAC/B,gBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAG,CAAC,EAC7B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,cAAc,EAAE,EACxD,IAAI,CAAC,IAAK,EACV,IAAI,CAAC,iBAAiB,EACtB,EAAE,CACL,CAAC;YAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;gBAC5B,MAAM,IAAI,CAAC,qBAAqB,CAC5B,UAAU,GAAG,iBAAiB,CAAC,WAAW,GAAG,GAAG,GAAG,iBAAiB,CAAC,qBAAqB,EAC1F,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAC1B,CAAC;aACL;QACL,CAAC,CAAA,CAAC;QA5EE,IAAI,CAAC,kBAAkB,GAAG,IAAI,4BAAkB,EAAE,CAAC;IACvD,CAAC;IA2BO,WAAW,CAAC,IAAqB;QACrC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAChD,CAAC;IAEO,cAAc,CAAC,IAAqB;QACxC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;YACnC,MAAM,WAAW,GAAG,gBAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;YACvG,MAAM,UAAU,GAAG,gBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YAE9F,OAAO,UAAU,IAAI,UAAU,GAAG,WAAW,CAAC;SACjD;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;;AAnDL,8CAuFC;AAtFiB,6BAAW,GAAG,eAAM,CAAC,oBAAoB,GAAG,GAAG,GAAG,uBAAuB,CAAC;AAC1E,2BAAS,GAAG,uBAAuB,CAAC;AACpC,uCAAqB,GAAG,eAAe,CAAC;AACxC,gDAA8B,GAAG,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IModel, PostgresModel } from "@golemio/core/dist/integration-engine";
|
|
2
|
+
export default abstract class EventsRepository<T> extends PostgresModel implements IModel {
|
|
3
|
+
protected abstract materializedViewNameLatest: string;
|
|
4
|
+
protected abstract materializedViewNameHistoric: string;
|
|
5
|
+
abstract saveData(data: T[], updateOnDuplicate: boolean): Promise<void>;
|
|
6
|
+
refreshLatestMaterializedView: () => Promise<void>;
|
|
7
|
+
refreshHistoricMaterializedView: () => Promise<void>;
|
|
8
|
+
private refreshMaterializedView;
|
|
9
|
+
}
|