@golemio/waze-ccp 1.1.7 → 1.1.8-dev.1078494126
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/db/migrations/postgresql/20231108112825-new-alerts.js +53 -0
- package/db/migrations/postgresql/sqls/20231108112825-new-alerts-down.sql +25 -0
- package/db/migrations/postgresql/sqls/20231108112825-new-alerts-up.sql +65 -0
- package/dist/integration-engine/WazeCCPAlertsAlternativeTransformation.d.ts +10 -0
- package/dist/integration-engine/WazeCCPAlertsAlternativeTransformation.js +67 -0
- package/dist/integration-engine/WazeCCPAlertsAlternativeTransformation.js.map +1 -0
- package/dist/integration-engine/WazeCCPAlertsTransformation.d.ts +6 -8
- package/dist/integration-engine/WazeCCPAlertsTransformation.js +21 -45
- package/dist/integration-engine/WazeCCPAlertsTransformation.js.map +1 -1
- package/dist/integration-engine/WazeCCPWorker.d.ts +3 -1
- package/dist/integration-engine/WazeCCPWorker.js +18 -4
- package/dist/integration-engine/WazeCCPWorker.js.map +1 -1
- package/dist/integration-engine/helpers/AlertsIdHelper.d.ts +6 -0
- package/dist/integration-engine/helpers/AlertsIdHelper.js +43 -0
- package/dist/integration-engine/helpers/AlertsIdHelper.js.map +1 -0
- package/dist/integration-engine/index.d.ts +1 -0
- package/dist/integration-engine/index.js +1 -0
- package/dist/integration-engine/index.js.map +1 -1
- package/dist/integration-engine/interfaces/WazeAlertsAlternativeInterface.d.ts +24 -0
- package/dist/integration-engine/interfaces/WazeAlertsAlternativeInterface.js +3 -0
- package/dist/integration-engine/interfaces/WazeAlertsAlternativeInterface.js.map +1 -0
- package/dist/integration-engine/interfaces/WazeAlertsInterface.d.ts +3 -23
- package/dist/integration-engine/queueDefinitions.js +11 -1
- package/dist/integration-engine/queueDefinitions.js.map +1 -1
- package/dist/integration-engine/repositories/WazeAlertsAlternativeRepository.d.ts +7 -0
- package/dist/integration-engine/repositories/WazeAlertsAlternativeRepository.js +57 -0
- package/dist/integration-engine/repositories/WazeAlertsAlternativeRepository.js.map +1 -0
- package/dist/integration-engine/repositories/WazeAlertsRepository.js +7 -12
- package/dist/integration-engine/repositories/WazeAlertsRepository.js.map +1 -1
- package/dist/schema-definitions/datasources/InputAlertsJsonSchema.d.ts +3 -0
- package/dist/schema-definitions/datasources/InputAlertsJsonSchema.js +47 -0
- package/dist/schema-definitions/datasources/InputAlertsJsonSchema.js.map +1 -0
- package/dist/schema-definitions/datasources/InputIrregularitiesJsonSchema.d.ts +116 -0
- package/dist/schema-definitions/datasources/InputIrregularitiesJsonSchema.js +55 -0
- package/dist/schema-definitions/datasources/InputIrregularitiesJsonSchema.js.map +1 -0
- package/dist/schema-definitions/datasources/InputJamsJsonSchema.d.ts +92 -0
- package/dist/schema-definitions/datasources/InputJamsJsonSchema.js +51 -0
- package/dist/schema-definitions/datasources/InputJamsJsonSchema.js.map +1 -0
- package/dist/schema-definitions/datasources/interfaces/IInputAlerts.d.ts +29 -0
- package/dist/schema-definitions/datasources/interfaces/IInputAlerts.js +3 -0
- package/dist/schema-definitions/datasources/interfaces/IInputAlerts.js.map +1 -0
- package/dist/schema-definitions/index.d.ts +1 -301
- package/dist/schema-definitions/index.js +12 -138
- package/dist/schema-definitions/index.js.map +1 -1
- package/dist/schema-definitions/interfaces/IAlertAlternativeDto.d.ts +25 -0
- package/dist/schema-definitions/interfaces/IAlertAlternativeDto.js +3 -0
- package/dist/schema-definitions/interfaces/IAlertAlternativeDto.js.map +1 -0
- package/dist/schema-definitions/interfaces/IAlertDto.d.ts +4 -24
- package/dist/schema-definitions/models/AlertAlternativeDto.d.ts +30 -0
- package/dist/schema-definitions/models/AlertAlternativeDto.js +65 -0
- package/dist/schema-definitions/models/AlertAlternativeDto.js.map +1 -0
- package/dist/schema-definitions/models/AlertDto.d.ts +3 -1
- package/dist/schema-definitions/models/AlertDto.js +6 -2
- package/dist/schema-definitions/models/AlertDto.js.map +1 -1
- package/package.json +2 -2
- package/dist/integration-engine/helpers/AlertsHelper.d.ts +0 -4
- package/dist/integration-engine/helpers/AlertsHelper.js +0 -22
- package/dist/integration-engine/helpers/AlertsHelper.js.map +0 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var dbm;
|
|
4
|
+
var type;
|
|
5
|
+
var seed;
|
|
6
|
+
var fs = require('fs');
|
|
7
|
+
var path = require('path');
|
|
8
|
+
var Promise;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* We receive the dbmigrate dependency from dbmigrate initially.
|
|
12
|
+
* This enables us to not have to rely on NODE_PATH.
|
|
13
|
+
*/
|
|
14
|
+
exports.setup = function(options, seedLink) {
|
|
15
|
+
dbm = options.dbmigrate;
|
|
16
|
+
type = dbm.dataType;
|
|
17
|
+
seed = seedLink;
|
|
18
|
+
Promise = options.Promise;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
exports.up = function(db) {
|
|
22
|
+
var filePath = path.join(__dirname, 'sqls', '20231108112825-new-alerts-up.sql');
|
|
23
|
+
return new Promise( function( resolve, reject ) {
|
|
24
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
25
|
+
if (err) return reject(err);
|
|
26
|
+
console.log('received data: ' + data);
|
|
27
|
+
|
|
28
|
+
resolve(data);
|
|
29
|
+
});
|
|
30
|
+
})
|
|
31
|
+
.then(function(data) {
|
|
32
|
+
return db.runSql(data);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
exports.down = function(db) {
|
|
37
|
+
var filePath = path.join(__dirname, 'sqls', '20231108112825-new-alerts-down.sql');
|
|
38
|
+
return new Promise( function( resolve, reject ) {
|
|
39
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
40
|
+
if (err) return reject(err);
|
|
41
|
+
console.log('received data: ' + data);
|
|
42
|
+
|
|
43
|
+
resolve(data);
|
|
44
|
+
});
|
|
45
|
+
})
|
|
46
|
+
.then(function(data) {
|
|
47
|
+
return db.runSql(data);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
exports._meta = {
|
|
52
|
+
"version": 1
|
|
53
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
-- wazeccp_alerts_backup -> wazeccp_alerts
|
|
2
|
+
DROP VIEW v_waze_potholes_last_days;
|
|
3
|
+
DROP TABLE wazeccp_alerts;
|
|
4
|
+
|
|
5
|
+
CALL meta.rename_partitioned_table('wazeccp_alerts_alternative', 'wazeccp_alerts');
|
|
6
|
+
|
|
7
|
+
ALTER INDEX wazeccp_alerts_alternative_pkey RENAME TO wazeccp_alerts_pkey;
|
|
8
|
+
ALTER INDEX wazeccp_alerts_alternative_idx RENAME TO wazeccp_alerts_idx;
|
|
9
|
+
ALTER INDEX wazeccp_alerts_alternative_downloaded_at_idx RENAME TO wazeccp_alerts_downloaded_at_idx;
|
|
10
|
+
|
|
11
|
+
CREATE VIEW v_waze_potholes_last_days
|
|
12
|
+
AS SELECT DISTINCT ON (wa.uuid) wa.uuid,
|
|
13
|
+
wa.city,
|
|
14
|
+
wa.location #>> '{}' as location,
|
|
15
|
+
wa.street,
|
|
16
|
+
wa.road_type,
|
|
17
|
+
wa.magvar AS event_direction,
|
|
18
|
+
timezone('Europe/Prague'::text, wa.pub_utc_date) AS published_at,
|
|
19
|
+
timezone('Europe/Prague'::text, wa.created_at) AS last_reported,
|
|
20
|
+
wa.reliability,
|
|
21
|
+
wa.report_rating,
|
|
22
|
+
wa.confidence
|
|
23
|
+
FROM wazeccp_alerts wa
|
|
24
|
+
WHERE wa.subtype = 'HAZARD_ON_ROAD_POT_HOLE'::text AND wa.pub_utc_date > (now()::date - '7 days'::interval)
|
|
25
|
+
ORDER BY wa.uuid, wa.pub_utc_date, wa.created_at DESC;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
-- -- wazeccp_alerts -> wazeccp_alerts_alternative
|
|
2
|
+
CALL meta.rename_partitioned_table('wazeccp_alerts', 'wazeccp_alerts_alternative');
|
|
3
|
+
|
|
4
|
+
ALTER INDEX wazeccp_alerts_pkey RENAME TO wazeccp_alerts_alternative_pkey;
|
|
5
|
+
ALTER INDEX wazeccp_alerts_idx RENAME TO wazeccp_alerts_alternative_idx;
|
|
6
|
+
ALTER INDEX wazeccp_alerts_downloaded_at_idx RENAME TO wazeccp_alerts_alternative_downloaded_at_idx;
|
|
7
|
+
|
|
8
|
+
CREATE TABLE wazeccp_alerts (
|
|
9
|
+
id uuid NOT NULL,
|
|
10
|
+
uuid text NOT NULL,
|
|
11
|
+
pub_millis int8 NOT NULL,
|
|
12
|
+
pub_utc_date timestamp NULL,
|
|
13
|
+
road_type int4 NULL,
|
|
14
|
+
"location" jsonb NULL,
|
|
15
|
+
street text NULL,
|
|
16
|
+
city text NULL,
|
|
17
|
+
country text NULL,
|
|
18
|
+
magvar int4 NULL,
|
|
19
|
+
reliability int4 NULL,
|
|
20
|
+
report_description text NULL,
|
|
21
|
+
report_rating int4 NULL,
|
|
22
|
+
confidence int4 NULL,
|
|
23
|
+
"type" text NULL,
|
|
24
|
+
subtype text NULL,
|
|
25
|
+
report_by_municipality_user bool NULL,
|
|
26
|
+
thumbs_up int4 NULL,
|
|
27
|
+
jam_uuid text NULL,
|
|
28
|
+
valid_from timestamptz NOT NULL,
|
|
29
|
+
downloaded_at timestamptz NOT NULL,
|
|
30
|
+
duplicate_count int4 NOT NULL DEFAULT 0,
|
|
31
|
+
-- audit
|
|
32
|
+
create_batch_id int8 NULL,
|
|
33
|
+
created_at timestamptz NULL,
|
|
34
|
+
created_by varchar(150) NULL,
|
|
35
|
+
update_batch_id int8 NULL,
|
|
36
|
+
updated_at timestamptz NULL,
|
|
37
|
+
updated_by varchar(150) NULL,
|
|
38
|
+
CONSTRAINT wazeccp_alerts_pkey PRIMARY KEY (id,uuid,pub_utc_date)
|
|
39
|
+
) partition by range(pub_utc_date);
|
|
40
|
+
|
|
41
|
+
CREATE INDEX wazeccp_alerts_idx ON wazeccp_alerts USING btree (subtype, pub_utc_date);
|
|
42
|
+
CREATE INDEX wazeccp_alerts_downloaded_at_idx ON wazeccp_alerts (downloaded_at);
|
|
43
|
+
|
|
44
|
+
COMMENT ON COLUMN wazeccp_alerts.id IS '
|
|
45
|
+
uuid generated from md5 hash of columns:
|
|
46
|
+
pub_millis, road_type, location, street, city, country, type, subtype, report_by_municipality_user, jam_uuid
|
|
47
|
+
';
|
|
48
|
+
|
|
49
|
+
CALL meta.create_yearly_partitions('wazeccp_alerts', '2019-01-01'::date, '2027-01-01'::date);
|
|
50
|
+
|
|
51
|
+
CREATE OR REPLACE VIEW v_waze_potholes_last_days
|
|
52
|
+
AS SELECT DISTINCT ON (wa.uuid) wa.uuid,
|
|
53
|
+
wa.city,
|
|
54
|
+
wa.location #>> '{}' as location,
|
|
55
|
+
wa.street,
|
|
56
|
+
wa.road_type,
|
|
57
|
+
wa.magvar AS event_direction,
|
|
58
|
+
timezone('Europe/Prague'::text, wa.pub_utc_date) AS published_at,
|
|
59
|
+
timezone('Europe/Prague'::text, wa.created_at) AS last_reported,
|
|
60
|
+
wa.reliability,
|
|
61
|
+
wa.report_rating,
|
|
62
|
+
wa.confidence
|
|
63
|
+
FROM wazeccp_alerts wa
|
|
64
|
+
WHERE wa.subtype = 'HAZARD_ON_ROAD_POT_HOLE'::text AND wa.pub_utc_date > (now()::date - '7 days'::interval)
|
|
65
|
+
ORDER BY wa.uuid, wa.pub_utc_date, wa.created_at DESC;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseTransformation, ITransformation } from "@golemio/core/dist/integration-engine/transformations";
|
|
2
|
+
import { IWazeAlertsAlternative } from "./interfaces/WazeAlertsAlternativeInterface";
|
|
3
|
+
export declare class WazeCCPAlertsAlternativeTransformation extends BaseTransformation implements ITransformation {
|
|
4
|
+
name: string;
|
|
5
|
+
/**
|
|
6
|
+
* Transform the whole collection or one single element
|
|
7
|
+
*/
|
|
8
|
+
transform: (data: any | any[]) => Promise<IWazeAlertsAlternative[]>;
|
|
9
|
+
protected transformElement: (alert: any) => IWazeAlertsAlternative;
|
|
10
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
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.WazeCCPAlertsAlternativeTransformation = void 0;
|
|
13
|
+
const helpers_1 = require("@golemio/core/dist/integration-engine/helpers");
|
|
14
|
+
const transformations_1 = require("@golemio/core/dist/integration-engine/transformations");
|
|
15
|
+
const index_1 = require("../schema-definitions/index");
|
|
16
|
+
class WazeCCPAlertsAlternativeTransformation extends transformations_1.BaseTransformation {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this.name = index_1.WazeCCP.alertsAlternative.name + "Transformation";
|
|
20
|
+
/**
|
|
21
|
+
* Transform the whole collection or one single element
|
|
22
|
+
*/
|
|
23
|
+
this.transform = (data) => __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
const downloadedAt = data.downloadedAt;
|
|
25
|
+
if (!data.alerts) {
|
|
26
|
+
helpers_1.log.warn(`${this.name}: Data source returned empty data.`);
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
const results = [];
|
|
30
|
+
data.alerts.forEach((element) => {
|
|
31
|
+
const res = this.transformElement(Object.assign(Object.assign({}, element), { downloadedAt }));
|
|
32
|
+
if (res) {
|
|
33
|
+
results.push(res);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
return results;
|
|
37
|
+
});
|
|
38
|
+
this.transformElement = (alert) => {
|
|
39
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
40
|
+
const downloadedAt = alert.downloadedAt;
|
|
41
|
+
delete alert.downloadedAt;
|
|
42
|
+
return {
|
|
43
|
+
city: (_a = alert.city) !== null && _a !== void 0 ? _a : null,
|
|
44
|
+
confidence: (_b = alert.confidence) !== null && _b !== void 0 ? _b : null,
|
|
45
|
+
country: (_c = alert.country) !== null && _c !== void 0 ? _c : null,
|
|
46
|
+
downloaded_at: downloadedAt,
|
|
47
|
+
jam_uuid: (_d = alert.jamUuid) !== null && _d !== void 0 ? _d : null,
|
|
48
|
+
location: alert.location,
|
|
49
|
+
magvar: (_e = alert.magvar) !== null && _e !== void 0 ? _e : null,
|
|
50
|
+
pub_millis: (_f = alert.pubMillis) === null || _f === void 0 ? void 0 : _f.toString(),
|
|
51
|
+
pub_utc_date: new Date(+alert.pubMillis),
|
|
52
|
+
reliability: (_g = alert.reliability) !== null && _g !== void 0 ? _g : null,
|
|
53
|
+
report_by_municipality_user: alert.reportByMunicipalityUser === "true",
|
|
54
|
+
report_description: (_h = alert.reportDescription) !== null && _h !== void 0 ? _h : null,
|
|
55
|
+
report_rating: (_j = alert.reportRating) !== null && _j !== void 0 ? _j : null,
|
|
56
|
+
road_type: (_k = alert.roadType) !== null && _k !== void 0 ? _k : null,
|
|
57
|
+
street: (_l = alert.street) !== null && _l !== void 0 ? _l : null,
|
|
58
|
+
subtype: (_m = alert.subtype) !== null && _m !== void 0 ? _m : null,
|
|
59
|
+
thumbs_up: (_o = alert.nThumbsUp) !== null && _o !== void 0 ? _o : null,
|
|
60
|
+
type: (_p = alert.type) !== null && _p !== void 0 ? _p : null,
|
|
61
|
+
uuid: alert.uuid,
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.WazeCCPAlertsAlternativeTransformation = WazeCCPAlertsAlternativeTransformation;
|
|
67
|
+
//# sourceMappingURL=WazeCCPAlertsAlternativeTransformation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WazeCCPAlertsAlternativeTransformation.js","sourceRoot":"","sources":["../../src/integration-engine/WazeCCPAlertsAlternativeTransformation.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2EAAoE;AACpE,2FAA4G;AAC5G,uDAAqC;AAGrC,MAAa,sCAAuC,SAAQ,oCAAkB;IAA9E;;QACW,SAAI,GAAG,eAAO,CAAC,iBAAiB,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAEhE;;WAEG;QACI,cAAS,GAAG,CAAO,IAAiB,EAAqC,EAAE;YAC9E,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YAEvC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACd,aAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,oCAAoC,CAAC,CAAC;gBAC3D,OAAO,EAAE,CAAC;aACb;YAED,MAAM,OAAO,GAAU,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAY,EAAE,EAAE;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,iCAC1B,OAAO,KACV,YAAY,IACd,CAAC;gBACH,IAAI,GAAG,EAAE;oBACL,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACrB;YACL,CAAC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QACnB,CAAC,CAAA,CAAC;QAEQ,qBAAgB,GAAG,CAAC,KAAU,EAA0B,EAAE;;YAChE,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YACxC,OAAO,KAAK,CAAC,YAAY,CAAC;YAE1B,OAAO;gBACH,IAAI,EAAE,MAAA,KAAK,CAAC,IAAI,mCAAI,IAAI;gBACxB,UAAU,EAAE,MAAA,KAAK,CAAC,UAAU,mCAAI,IAAI;gBACpC,OAAO,EAAE,MAAA,KAAK,CAAC,OAAO,mCAAI,IAAI;gBAC9B,aAAa,EAAE,YAAY;gBAC3B,QAAQ,EAAE,MAAA,KAAK,CAAC,OAAO,mCAAI,IAAI;gBAC/B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM,EAAE,MAAA,KAAK,CAAC,MAAM,mCAAI,IAAI;gBAC5B,UAAU,EAAE,MAAA,KAAK,CAAC,SAAS,0CAAE,QAAQ,EAAE;gBACvC,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;gBACxC,WAAW,EAAE,MAAA,KAAK,CAAC,WAAW,mCAAI,IAAI;gBACtC,2BAA2B,EAAE,KAAK,CAAC,wBAAwB,KAAK,MAAM;gBACtE,kBAAkB,EAAE,MAAA,KAAK,CAAC,iBAAiB,mCAAI,IAAI;gBACnD,aAAa,EAAE,MAAA,KAAK,CAAC,YAAY,mCAAI,IAAI;gBACzC,SAAS,EAAE,MAAA,KAAK,CAAC,QAAQ,mCAAI,IAAI;gBACjC,MAAM,EAAE,MAAA,KAAK,CAAC,MAAM,mCAAI,IAAI;gBAC5B,OAAO,EAAE,MAAA,KAAK,CAAC,OAAO,mCAAI,IAAI;gBAC9B,SAAS,EAAE,MAAA,KAAK,CAAC,SAAS,mCAAI,IAAI;gBAClC,IAAI,EAAE,MAAA,KAAK,CAAC,IAAI,mCAAI,IAAI;gBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;aACnB,CAAC;QACN,CAAC,CAAC;IACN,CAAC;CAAA;AArDD,wFAqDC"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractTransformation } from "@golemio/core/dist/helpers/transformation/AbstractTransformation";
|
|
2
2
|
import { IWazeAlerts } from "./interfaces/WazeAlertsInterface";
|
|
3
|
-
|
|
3
|
+
import { IInputAlertsInfo } from "../schema-definitions/datasources/interfaces/IInputAlerts";
|
|
4
|
+
export declare class WazeCCPAlertsTransformation extends AbstractTransformation<IInputAlertsInfo, IWazeAlerts> {
|
|
4
5
|
name: string;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*/
|
|
9
|
-
transform: (data: any | any[]) => Promise<IWazeAlerts[]>;
|
|
10
|
-
protected transformElement: (alert: any) => IWazeAlerts;
|
|
6
|
+
private readonly downloadedAt;
|
|
7
|
+
constructor(timestamp: Date);
|
|
8
|
+
protected transformInternal: (alert: IInputAlertsInfo) => IWazeAlerts;
|
|
11
9
|
}
|
|
@@ -1,66 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
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
|
-
});
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
4
|
};
|
|
11
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
6
|
exports.WazeCCPAlertsTransformation = void 0;
|
|
13
|
-
const
|
|
14
|
-
const transformations_1 = require("@golemio/core/dist/integration-engine/transformations");
|
|
7
|
+
const AbstractTransformation_1 = require("@golemio/core/dist/helpers/transformation/AbstractTransformation");
|
|
15
8
|
const index_1 = require("../schema-definitions/index");
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
const AlertsIdHelper_1 = __importDefault(require("./helpers/AlertsIdHelper"));
|
|
10
|
+
class WazeCCPAlertsTransformation extends AbstractTransformation_1.AbstractTransformation {
|
|
11
|
+
constructor(timestamp) {
|
|
18
12
|
super();
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.transform = (data) => __awaiter(this, void 0, void 0, function* () {
|
|
23
|
-
const downloadedAt = data.downloadedAt;
|
|
24
|
-
if (!data.alerts) {
|
|
25
|
-
helpers_1.log.warn(`${this.name}: Data source returned empty data.`);
|
|
26
|
-
return [];
|
|
27
|
-
}
|
|
28
|
-
const results = [];
|
|
29
|
-
data.alerts.forEach((element) => {
|
|
30
|
-
const res = this.transformElement(Object.assign(Object.assign({}, element), { downloadedAt }));
|
|
31
|
-
if (res) {
|
|
32
|
-
results.push(res);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
return results;
|
|
36
|
-
});
|
|
37
|
-
this.transformElement = (alert) => {
|
|
38
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
39
|
-
const downloadedAt = alert.downloadedAt;
|
|
40
|
-
delete alert.downloadedAt;
|
|
13
|
+
this.name = index_1.WazeCCP.alerts.name + "Transformation";
|
|
14
|
+
this.transformInternal = (alert) => {
|
|
15
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
41
16
|
return {
|
|
42
17
|
city: (_a = alert.city) !== null && _a !== void 0 ? _a : null,
|
|
43
18
|
confidence: (_b = alert.confidence) !== null && _b !== void 0 ? _b : null,
|
|
44
19
|
country: (_c = alert.country) !== null && _c !== void 0 ? _c : null,
|
|
45
|
-
downloaded_at: downloadedAt,
|
|
20
|
+
downloaded_at: this.downloadedAt,
|
|
21
|
+
id: AlertsIdHelper_1.default.GenerateUuid(alert),
|
|
46
22
|
jam_uuid: (_d = alert.jamUuid) !== null && _d !== void 0 ? _d : null,
|
|
47
23
|
location: alert.location,
|
|
48
24
|
magvar: (_e = alert.magvar) !== null && _e !== void 0 ? _e : null,
|
|
49
|
-
pub_millis: alert.pubMillis,
|
|
25
|
+
pub_millis: (_f = alert.pubMillis) === null || _f === void 0 ? void 0 : _f.toString(),
|
|
50
26
|
pub_utc_date: new Date(+alert.pubMillis),
|
|
51
|
-
reliability: (
|
|
27
|
+
reliability: (_g = alert.reliability) !== null && _g !== void 0 ? _g : null,
|
|
52
28
|
report_by_municipality_user: alert.reportByMunicipalityUser === "true",
|
|
53
|
-
report_description: (
|
|
54
|
-
report_rating: (
|
|
55
|
-
road_type: (
|
|
56
|
-
street: (
|
|
57
|
-
subtype: (
|
|
58
|
-
thumbs_up: (
|
|
59
|
-
type: (
|
|
29
|
+
report_description: (_h = alert.reportDescription) !== null && _h !== void 0 ? _h : null,
|
|
30
|
+
report_rating: (_j = alert.reportRating) !== null && _j !== void 0 ? _j : null,
|
|
31
|
+
road_type: (_k = alert.roadType) !== null && _k !== void 0 ? _k : null,
|
|
32
|
+
street: (_l = alert.street) !== null && _l !== void 0 ? _l : null,
|
|
33
|
+
subtype: (_m = alert.subtype) !== null && _m !== void 0 ? _m : null,
|
|
34
|
+
thumbs_up: (_o = alert.nThumbsUp) !== null && _o !== void 0 ? _o : null,
|
|
35
|
+
type: (_p = alert.type) !== null && _p !== void 0 ? _p : null,
|
|
60
36
|
uuid: alert.uuid,
|
|
61
37
|
};
|
|
62
38
|
};
|
|
63
|
-
this.
|
|
39
|
+
this.downloadedAt = timestamp;
|
|
64
40
|
}
|
|
65
41
|
}
|
|
66
42
|
exports.WazeCCPAlertsTransformation = WazeCCPAlertsTransformation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WazeCCPAlertsTransformation.js","sourceRoot":"","sources":["../../src/integration-engine/WazeCCPAlertsTransformation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WazeCCPAlertsTransformation.js","sourceRoot":"","sources":["../../src/integration-engine/WazeCCPAlertsTransformation.ts"],"names":[],"mappings":";;;;;;AAAA,6GAA0G;AAC1G,uDAAqC;AAGrC,8EAAwD;AAExD,MAAa,2BAA4B,SAAQ,+CAAqD;IAIlG,YAAY,SAAe;QACvB,KAAK,EAAE,CAAC;QAJL,SAAI,GAAG,eAAO,CAAC,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAQ3C,sBAAiB,GAAG,CAAC,KAAuB,EAAe,EAAE;;YACnE,OAAO;gBACH,IAAI,EAAE,MAAA,KAAK,CAAC,IAAI,mCAAI,IAAI;gBACxB,UAAU,EAAE,MAAA,KAAK,CAAC,UAAU,mCAAI,IAAI;gBACpC,OAAO,EAAE,MAAA,KAAK,CAAC,OAAO,mCAAI,IAAI;gBAC9B,aAAa,EAAE,IAAI,CAAC,YAAY;gBAChC,EAAE,EAAE,wBAAc,CAAC,YAAY,CAAC,KAAK,CAAC;gBACtC,QAAQ,EAAE,MAAA,KAAK,CAAC,OAAO,mCAAI,IAAI;gBAC/B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM,EAAE,MAAA,KAAK,CAAC,MAAM,mCAAI,IAAI;gBAC5B,UAAU,EAAE,MAAA,KAAK,CAAC,SAAS,0CAAE,QAAQ,EAAE;gBACvC,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;gBACxC,WAAW,EAAE,MAAA,KAAK,CAAC,WAAW,mCAAI,IAAI;gBACtC,2BAA2B,EAAE,KAAK,CAAC,wBAAwB,KAAK,MAAM;gBACtE,kBAAkB,EAAE,MAAA,KAAK,CAAC,iBAAiB,mCAAI,IAAI;gBACnD,aAAa,EAAE,MAAA,KAAK,CAAC,YAAY,mCAAI,IAAI;gBACzC,SAAS,EAAE,MAAA,KAAK,CAAC,QAAQ,mCAAI,IAAI;gBACjC,MAAM,EAAE,MAAA,KAAK,CAAC,MAAM,mCAAI,IAAI;gBAC5B,OAAO,EAAE,MAAA,KAAK,CAAC,OAAO,mCAAI,IAAI;gBAC9B,SAAS,EAAE,MAAA,KAAK,CAAC,SAAS,mCAAI,IAAI;gBAClC,IAAI,EAAE,MAAA,KAAK,CAAC,IAAI,mCAAI,IAAI;gBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;aACnB,CAAC;QACN,CAAC,CAAC;QA1BE,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAClC,CAAC;CA0BJ;AAjCD,kEAiCC"}
|
|
@@ -4,13 +4,15 @@ export declare class WazeCCPWorker extends BaseWorker {
|
|
|
4
4
|
private dataSourceIrregularities;
|
|
5
5
|
private dataSourceJams;
|
|
6
6
|
private modelAlerts;
|
|
7
|
+
private modelAlertsAlternative;
|
|
7
8
|
private modelIrregularities;
|
|
8
9
|
private modelJams;
|
|
9
|
-
private
|
|
10
|
+
private transformationAlertsAlternative;
|
|
10
11
|
private transformationIrregularities;
|
|
11
12
|
private transformationJams;
|
|
12
13
|
private queuePrefix;
|
|
13
14
|
constructor();
|
|
15
|
+
refreshAlertsAlternativeInDB: (msg: any) => Promise<void>;
|
|
14
16
|
refreshAlertsInDB: (msg: any) => Promise<void>;
|
|
15
17
|
refreshIrregularitiesInDB: (msg: any) => Promise<void>;
|
|
16
18
|
refreshJamsInDB: (msg: any) => Promise<void>;
|
|
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.WazeCCPWorker = void 0;
|
|
13
|
+
const WazeAlertsAlternativeRepository_1 = require("./repositories/WazeAlertsAlternativeRepository");
|
|
13
14
|
const WazeAlertsRepository_1 = require("./repositories/WazeAlertsRepository");
|
|
14
15
|
const index_1 = require("../schema-definitions/index");
|
|
15
16
|
const IrregularityDto_1 = require("../schema-definitions/models/IrregularityDto");
|
|
@@ -23,11 +24,18 @@ const _1 = require("./");
|
|
|
23
24
|
class WazeCCPWorker extends workers_1.BaseWorker {
|
|
24
25
|
constructor() {
|
|
25
26
|
super();
|
|
26
|
-
this.
|
|
27
|
+
this.refreshAlertsAlternativeInDB = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
27
28
|
const data = yield this.dataSourceAlerts.getAll();
|
|
28
29
|
// enrich data by downloadedAt unix timestamp
|
|
29
30
|
const dataWithDownloadAt = Object.assign(Object.assign({}, data), { downloadedAt: new Date() });
|
|
30
|
-
const transformedData = yield this.
|
|
31
|
+
const transformedData = yield this.transformationAlertsAlternative.transform(dataWithDownloadAt);
|
|
32
|
+
yield this.modelAlertsAlternative.saveAlerts(transformedData);
|
|
33
|
+
});
|
|
34
|
+
this.refreshAlertsInDB = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
const data = yield this.dataSourceAlerts.getAll();
|
|
36
|
+
const now = new Date();
|
|
37
|
+
const transformationAlerts = new _1.WazeCCPAlertsTransformation(now);
|
|
38
|
+
const transformedData = transformationAlerts.transformArray(data.alerts);
|
|
31
39
|
yield this.modelAlerts.saveAlerts(transformedData);
|
|
32
40
|
});
|
|
33
41
|
this.refreshIrregularitiesInDB = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -45,7 +53,12 @@ class WazeCCPWorker extends workers_1.BaseWorker {
|
|
|
45
53
|
yield this.modelJams.saveBySqlFunction(transformedData, ["id", "pub_utc_date"]);
|
|
46
54
|
});
|
|
47
55
|
this.refreshAllDataInDB = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
48
|
-
const queueNames = [
|
|
56
|
+
const queueNames = [
|
|
57
|
+
"refreshAlertsInDB",
|
|
58
|
+
"refreshAlertsAlternativeInDB",
|
|
59
|
+
"refreshIrregularitiesInDB",
|
|
60
|
+
"refreshJamsInDB",
|
|
61
|
+
];
|
|
49
62
|
yield Promise.all(queueNames.map((queueName) => {
|
|
50
63
|
return this.sendMessageToExchange("workers." + this.queuePrefix + "." + queueName, "Just do it!");
|
|
51
64
|
}));
|
|
@@ -65,10 +78,11 @@ class WazeCCPWorker extends workers_1.BaseWorker {
|
|
|
65
78
|
method: "GET",
|
|
66
79
|
url: config_1.config.datasources.WazeCCP + "&types=traffic",
|
|
67
80
|
}), new datasources_1.JSONDataTypeStrategy({ resultsPath: "" }), new golemio_validator_1.JSONSchemaValidator(index_1.WazeCCP.jams.name + "DataSource", index_1.WazeCCP.jams.datasourceJsonSchema));
|
|
68
|
-
this.
|
|
81
|
+
this.transformationAlertsAlternative = new _1.WazeCCPAlertsAlternativeTransformation();
|
|
69
82
|
this.transformationIrregularities = new _1.WazeCCPIrregularitiesTransformation();
|
|
70
83
|
this.transformationJams = new _1.WazeCCPJamsTransformation();
|
|
71
84
|
this.modelAlerts = new WazeAlertsRepository_1.WazeAlertsRepository();
|
|
85
|
+
this.modelAlertsAlternative = new WazeAlertsAlternativeRepository_1.WazeAlertsAlternativeRepository();
|
|
72
86
|
this.modelIrregularities = new models_1.PostgresModel(index_1.WazeCCP.irregularities.name + "Model", {
|
|
73
87
|
outputSequelizeAttributes: IrregularityDto_1.IrregularitiesDto.attributeModel,
|
|
74
88
|
pgTableName: index_1.WazeCCP.irregularities.pgTableName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WazeCCPWorker.js","sourceRoot":"","sources":["../../src/integration-engine/WazeCCPWorker.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8EAA6E;AAC7E,uDAAqC;AACrC,kFAAgE;AAChE,gEAA4C;AAC5C,yEAAsE;AACtE,mFAA2H;AAC3H,yEAA6E;AAC7E,2EAA2E;AAC3E,mFAAkF;AAClF,
|
|
1
|
+
{"version":3,"file":"WazeCCPWorker.js","sourceRoot":"","sources":["../../src/integration-engine/WazeCCPWorker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
7
|
+
class AlertsIdHelper {
|
|
8
|
+
// PSQL:
|
|
9
|
+
// md5(concat_ws(
|
|
10
|
+
// ',', pub_millis, road_type, location->>'x', location->>'y', street, city, country,
|
|
11
|
+
// type, subtype, report_by_municipality_user::text,jam_uuid
|
|
12
|
+
// ))::uuid
|
|
13
|
+
static GenerateUuid(alert) {
|
|
14
|
+
var _a, _b, _c;
|
|
15
|
+
const hashString = [
|
|
16
|
+
(_a = alert.pubMillis) === null || _a === void 0 ? void 0 : _a.toString(),
|
|
17
|
+
alert.roadType,
|
|
18
|
+
(_b = alert.location) === null || _b === void 0 ? void 0 : _b.x,
|
|
19
|
+
(_c = alert.location) === null || _c === void 0 ? void 0 : _c.y,
|
|
20
|
+
alert.street,
|
|
21
|
+
alert.city,
|
|
22
|
+
alert.country,
|
|
23
|
+
alert.type,
|
|
24
|
+
alert.subtype,
|
|
25
|
+
alert.reportByMunicipalityUser === "true",
|
|
26
|
+
alert.jamUuid,
|
|
27
|
+
]
|
|
28
|
+
.filter((el) => el !== undefined)
|
|
29
|
+
.join(",");
|
|
30
|
+
const md5 = this.getMd5(hashString);
|
|
31
|
+
return this.formatAsUuid(md5);
|
|
32
|
+
}
|
|
33
|
+
static getMd5(text) {
|
|
34
|
+
return crypto_1.default.createHash("md5").update(text).digest("hex");
|
|
35
|
+
}
|
|
36
|
+
static formatAsUuid(text) {
|
|
37
|
+
if (text.length !== 32)
|
|
38
|
+
throw new Error(`AlertsIdHelper: Unable to format string '${text}' as uuid.`);
|
|
39
|
+
return `${text.slice(0, 8)}-${text.slice(8, 12)}-${text.slice(12, 16)}-${text.slice(16, 20)}-${text.slice(20)}`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.default = AlertsIdHelper;
|
|
43
|
+
//# sourceMappingURL=AlertsIdHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AlertsIdHelper.js","sourceRoot":"","sources":["../../../src/integration-engine/helpers/AlertsIdHelper.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAG5B,MAAqB,cAAc;IAC/B,QAAQ;IACR,iBAAiB;IACjB,yFAAyF;IACzF,gEAAgE;IAChE,WAAW;IACJ,MAAM,CAAC,YAAY,CAAC,KAAuB;;QAC9C,MAAM,UAAU,GAAG;YACf,MAAA,KAAK,CAAC,SAAS,0CAAE,QAAQ,EAAE;YAC3B,KAAK,CAAC,QAAQ;YACd,MAAA,KAAK,CAAC,QAAQ,0CAAE,CAAC;YACjB,MAAA,KAAK,CAAC,QAAQ,0CAAE,CAAC;YACjB,KAAK,CAAC,MAAM;YACZ,KAAK,CAAC,IAAI;YACV,KAAK,CAAC,OAAO;YACb,KAAK,CAAC,IAAI;YACV,KAAK,CAAC,OAAO;YACb,KAAK,CAAC,wBAAwB,KAAK,MAAM;YACzC,KAAK,CAAC,OAAO;SAChB;aACI,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC;aAChC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAEO,MAAM,CAAC,MAAM,CAAC,IAAY;QAC9B,OAAO,gBAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,IAAY;QACpC,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,YAAY,CAAC,CAAC;QACtG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IACpH,CAAC;CACJ;AAlCD,iCAkCC"}
|
|
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
/* ie/index.ts */
|
|
18
18
|
__exportStar(require("./WazeCCPAlertsTransformation"), exports);
|
|
19
|
+
__exportStar(require("./WazeCCPAlertsAlternativeTransformation"), exports);
|
|
19
20
|
__exportStar(require("./WazeCCPIrregularitiesTransformation"), exports);
|
|
20
21
|
__exportStar(require("./WazeCCPJamsTransformation"), exports);
|
|
21
22
|
__exportStar(require("./WazeCCPUtils"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integration-engine/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iBAAiB;AACjB,gEAA8C;AAC9C,wEAAsD;AACtD,8DAA4C;AAC5C,iDAA+B;AAC/B,kDAAgC;AAChC,qDAAmC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integration-engine/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iBAAiB;AACjB,gEAA8C;AAC9C,2EAAyD;AACzD,wEAAsD;AACtD,8DAA4C;AAC5C,iDAA+B;AAC/B,kDAAgC;AAChC,qDAAmC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface IWazeAlertsAlternative {
|
|
2
|
+
city: string | null;
|
|
3
|
+
confidence: number | null;
|
|
4
|
+
country: string | null;
|
|
5
|
+
downloaded_at: Date;
|
|
6
|
+
jam_uuid: string | null;
|
|
7
|
+
location: {
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
};
|
|
11
|
+
magvar: number | null;
|
|
12
|
+
pub_millis: string;
|
|
13
|
+
pub_utc_date: Date;
|
|
14
|
+
reliability: number | null;
|
|
15
|
+
report_by_municipality_user: boolean;
|
|
16
|
+
report_description: string | null;
|
|
17
|
+
report_rating: number | null;
|
|
18
|
+
road_type: number | null;
|
|
19
|
+
street: string | null;
|
|
20
|
+
subtype: string | null;
|
|
21
|
+
thumbs_up: number | null;
|
|
22
|
+
type: string | null;
|
|
23
|
+
uuid: string;
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WazeAlertsAlternativeInterface.js","sourceRoot":"","sources":["../../../src/integration-engine/interfaces/WazeAlertsAlternativeInterface.ts"],"names":[],"mappings":""}
|
|
@@ -1,24 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
country: string | null;
|
|
5
|
-
downloaded_at: Date;
|
|
6
|
-
jam_uuid: string | null;
|
|
7
|
-
location: {
|
|
8
|
-
x: number;
|
|
9
|
-
y: number;
|
|
10
|
-
};
|
|
11
|
-
magvar: number | null;
|
|
12
|
-
pub_millis: string;
|
|
13
|
-
pub_utc_date: Date | string;
|
|
14
|
-
reliability: number | null;
|
|
15
|
-
report_by_municipality_user: boolean;
|
|
16
|
-
report_description: string | null;
|
|
17
|
-
report_rating: number | null;
|
|
18
|
-
road_type: number | null;
|
|
19
|
-
street: string | null;
|
|
20
|
-
subtype: string | null;
|
|
21
|
-
thumbs_up: number | null;
|
|
22
|
-
type: string | null;
|
|
23
|
-
uuid: string;
|
|
1
|
+
import { IWazeAlertsAlternative } from "./WazeAlertsAlternativeInterface";
|
|
2
|
+
export interface IWazeAlerts extends IWazeAlertsAlternative {
|
|
3
|
+
id: string;
|
|
24
4
|
}
|
|
@@ -24,11 +24,21 @@ const queueDefinitions = [
|
|
|
24
24
|
options: {
|
|
25
25
|
deadLetterExchange: config_1.config.RABBIT_EXCHANGE_NAME,
|
|
26
26
|
deadLetterRoutingKey: "dead",
|
|
27
|
-
messageTtl:
|
|
27
|
+
messageTtl: 90 * 1000, // 90 seconds
|
|
28
28
|
},
|
|
29
29
|
worker: WazeCCPWorker_1.WazeCCPWorker,
|
|
30
30
|
workerMethod: "refreshAlertsInDB",
|
|
31
31
|
},
|
|
32
|
+
{
|
|
33
|
+
name: "refreshAlertsAlternativeInDB",
|
|
34
|
+
options: {
|
|
35
|
+
deadLetterExchange: config_1.config.RABBIT_EXCHANGE_NAME,
|
|
36
|
+
deadLetterRoutingKey: "dead",
|
|
37
|
+
messageTtl: 90 * 1000, // 90 seconds
|
|
38
|
+
},
|
|
39
|
+
worker: WazeCCPWorker_1.WazeCCPWorker,
|
|
40
|
+
workerMethod: "refreshAlertsAlternativeInDB",
|
|
41
|
+
},
|
|
32
42
|
{
|
|
33
43
|
name: "refreshIrregularitiesInDB",
|
|
34
44
|
options: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queueDefinitions.js","sourceRoot":"","sources":["../../src/integration-engine/queueDefinitions.ts"],"names":[],"mappings":";;;AAAA,yEAAsE;AAEtE,uDAAqC;AACrC,mDAAkD;AAElD,MAAM,gBAAgB,GAAuB;IACzC;QACI,IAAI,EAAE,eAAO,CAAC,IAAI;QAClB,WAAW,EAAE,eAAM,CAAC,oBAAoB,GAAG,GAAG,GAAG,eAAO,CAAC,IAAI,CAAC,WAAW,EAAE;QAC3E,MAAM,EAAE;YACJ;gBACI,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE;oBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;oBAC/C,oBAAoB,EAAE,MAAM;oBAC5B,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;iBAC1C;gBACD,MAAM,EAAE,6BAAa;gBACrB,YAAY,EAAE,oBAAoB;aACrC;YACD;gBACI,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE;oBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;oBAC/C,oBAAoB,EAAE,MAAM;oBAC5B,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"queueDefinitions.js","sourceRoot":"","sources":["../../src/integration-engine/queueDefinitions.ts"],"names":[],"mappings":";;;AAAA,yEAAsE;AAEtE,uDAAqC;AACrC,mDAAkD;AAElD,MAAM,gBAAgB,GAAuB;IACzC;QACI,IAAI,EAAE,eAAO,CAAC,IAAI;QAClB,WAAW,EAAE,eAAM,CAAC,oBAAoB,GAAG,GAAG,GAAG,eAAO,CAAC,IAAI,CAAC,WAAW,EAAE;QAC3E,MAAM,EAAE;YACJ;gBACI,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE;oBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;oBAC/C,oBAAoB,EAAE,MAAM;oBAC5B,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;iBAC1C;gBACD,MAAM,EAAE,6BAAa;gBACrB,YAAY,EAAE,oBAAoB;aACrC;YACD;gBACI,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE;oBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;oBAC/C,oBAAoB,EAAE,MAAM;oBAC5B,UAAU,EAAE,EAAE,GAAG,IAAI,EAAE,aAAa;iBACvC;gBACD,MAAM,EAAE,6BAAa;gBACrB,YAAY,EAAE,mBAAmB;aACpC;YACD;gBACI,IAAI,EAAE,8BAA8B;gBACpC,OAAO,EAAE;oBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;oBAC/C,oBAAoB,EAAE,MAAM;oBAC5B,UAAU,EAAE,EAAE,GAAG,IAAI,EAAE,aAAa;iBACvC;gBACD,MAAM,EAAE,6BAAa;gBACrB,YAAY,EAAE,8BAA8B;aAC/C;YACD;gBACI,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE;oBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;oBAC/C,oBAAoB,EAAE,MAAM;oBAC5B,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;iBAC1C;gBACD,MAAM,EAAE,6BAAa;gBACrB,YAAY,EAAE,2BAA2B;aAC5C;YACD;gBACI,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE;oBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;oBAC/C,oBAAoB,EAAE,MAAM;oBAC5B,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;iBAC1C;gBACD,MAAM,EAAE,6BAAa;gBACrB,YAAY,EAAE,iBAAiB;aAClC;SACJ;KACJ;CACJ,CAAC;AAEO,4CAAgB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IWazeAlertsAlternative } from "../interfaces/WazeAlertsAlternativeInterface";
|
|
2
|
+
import { IModel, PostgresModel } from "@golemio/core/dist/integration-engine/models";
|
|
3
|
+
export declare class WazeAlertsAlternativeRepository extends PostgresModel implements IModel {
|
|
4
|
+
constructor();
|
|
5
|
+
saveAlerts: (data: IWazeAlertsAlternative[]) => Promise<void>;
|
|
6
|
+
private saveAlert;
|
|
7
|
+
}
|