@golemio/microclimate 1.2.9-dev.1564558258 → 1.2.9-dev.2088099729
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/dist/integration-engine/repositories/MeasurementsRepository.js +4 -13
- package/dist/integration-engine/repositories/MeasurementsRepository.js.map +1 -1
- package/dist/integration-engine/repositories/SensorDevicesRepository.js +4 -13
- package/dist/integration-engine/repositories/SensorDevicesRepository.js.map +1 -1
- package/dist/integration-engine/transformations/MeasurementsTransformation.js +5 -14
- package/dist/integration-engine/transformations/MeasurementsTransformation.js.map +1 -1
- package/dist/integration-engine/transformations/SensorDevicesTransformation.js +5 -14
- package/dist/integration-engine/transformations/SensorDevicesTransformation.js.map +1 -1
- package/dist/integration-engine/workers/tasks/RefreshMeasurementsByIdTask.js +19 -30
- package/dist/integration-engine/workers/tasks/RefreshMeasurementsByIdTask.js.map +1 -1
- package/dist/integration-engine/workers/tasks/RefreshMeasurementsTask.js +45 -56
- package/dist/integration-engine/workers/tasks/RefreshMeasurementsTask.js.map +1 -1
- package/dist/integration-engine/workers/tasks/RefreshSensorDevicesTask.js +4 -15
- package/dist/integration-engine/workers/tasks/RefreshSensorDevicesTask.js.map +1 -1
- package/dist/integration-engine/workers/tasks/RefreshSensorViewsTask.js +30 -41
- package/dist/integration-engine/workers/tasks/RefreshSensorViewsTask.js.map +1 -1
- package/dist/output-gateway/MicroclimateRouter.js +23 -29
- package/dist/output-gateway/MicroclimateRouter.js.map +1 -1
- package/dist/output-gateway/repositories/SensorDevicesImportRepository.js +2 -11
- package/dist/output-gateway/repositories/SensorDevicesImportRepository.js.map +1 -1
- package/dist/output-gateway/repositories/SensorMeasurementsViewRepository.js +11 -16
- package/dist/output-gateway/repositories/SensorMeasurementsViewRepository.js.map +1 -1
- package/dist/output-gateway/repositories/SensorPointsViewRepository.js +2 -11
- package/dist/output-gateway/repositories/SensorPointsViewRepository.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.MeasurementsRepository = void 0;
|
|
13
4
|
const models_1 = require("@golemio/core/dist/integration-engine/models");
|
|
@@ -22,17 +13,17 @@ class MeasurementsRepository extends models_1.PostgresModel {
|
|
|
22
13
|
pgSchema: _sch_1.Microclimate.pgSchema,
|
|
23
14
|
savingType: "insertOrUpdate",
|
|
24
15
|
}, new golemio_validator_1.JSONSchemaValidator("MeasurementsRepositoryValidator", MeasurementsModel_1.MeasurementsModel.jsonSchema));
|
|
25
|
-
this.saveBulk = (data) =>
|
|
26
|
-
if (data && data.length && (
|
|
16
|
+
this.saveBulk = async (data) => {
|
|
17
|
+
if (data && data.length && (await this.validate(data))) {
|
|
27
18
|
const fieldsToUpdate = Object.getOwnPropertyNames(data[0])
|
|
28
19
|
.filter((el) => el !== "id")
|
|
29
20
|
.map((el) => el);
|
|
30
21
|
fieldsToUpdate.push("updated_at");
|
|
31
|
-
|
|
22
|
+
await this.sequelizeModel.bulkCreate(data, {
|
|
32
23
|
updateOnDuplicate: fieldsToUpdate,
|
|
33
24
|
});
|
|
34
25
|
}
|
|
35
|
-
}
|
|
26
|
+
};
|
|
36
27
|
}
|
|
37
28
|
}
|
|
38
29
|
exports.MeasurementsRepository = MeasurementsRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeasurementsRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/repositories/MeasurementsRepository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MeasurementsRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/repositories/MeasurementsRepository.ts"],"names":[],"mappings":";;;AAAA,yEAAqF;AACrF,mFAAkF;AAClF,mDAAoC;AAEpC,yFAAkE;AAElE,MAAa,sBAAuB,SAAQ,sBAAa;IACrD;QACI,KAAK,CACD,wBAAwB,EACxB;YACI,yBAAyB,EAAE,qCAAiB,CAAC,cAAc;YAC3D,WAAW,EAAE,mBAAY,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW;YAC9D,QAAQ,EAAE,mBAAY,CAAC,QAAQ;YAC/B,UAAU,EAAE,gBAAgB;SAC/B,EACD,IAAI,uCAAmB,CAAC,iCAAiC,EAAE,qCAAiB,CAAC,UAAU,CAAC,CAC3F,CAAC;QAGC,aAAQ,GAAG,KAAK,EAAE,IAAqB,EAAE,EAAE;YAC9C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;gBACpD,MAAM,cAAc,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBACrD,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;qBAC3B,GAAG,CAAsB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAyB,CAAC,CAAC;gBACjE,cAAc,CAAC,IAAI,CAAC,YAAmB,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAoB,IAAI,EAAE;oBAC1D,iBAAiB,EAAE,cAAc;iBACpC,CAAC,CAAC;aACN;QACL,CAAC,CAAC;IAZF,CAAC;CAaJ;AAzBD,wDAyBC"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.SensorDevicesRepository = void 0;
|
|
13
4
|
const models_1 = require("@golemio/core/dist/integration-engine/models");
|
|
@@ -22,17 +13,17 @@ class SensorDevicesRepository extends models_1.PostgresModel {
|
|
|
22
13
|
pgSchema: _sch_1.Microclimate.pgSchema,
|
|
23
14
|
savingType: "insertOrUpdate",
|
|
24
15
|
}, new golemio_validator_1.JSONSchemaValidator("SensorDevicesRepositoryValidator", SensorDevicesModel_1.SensorDevicesModel.jsonSchema));
|
|
25
|
-
this.saveBulk = (data) =>
|
|
26
|
-
if (data && data.length && (
|
|
16
|
+
this.saveBulk = async (data) => {
|
|
17
|
+
if (data && data.length && (await this.validate(data))) {
|
|
27
18
|
const fieldsToUpdate = Object.getOwnPropertyNames(data[0])
|
|
28
19
|
.filter((el) => el !== "id")
|
|
29
20
|
.map((el) => el);
|
|
30
21
|
fieldsToUpdate.push("updated_at");
|
|
31
|
-
|
|
22
|
+
await this.sequelizeModel.bulkCreate(data, {
|
|
32
23
|
updateOnDuplicate: fieldsToUpdate,
|
|
33
24
|
});
|
|
34
25
|
}
|
|
35
|
-
}
|
|
26
|
+
};
|
|
36
27
|
}
|
|
37
28
|
}
|
|
38
29
|
exports.SensorDevicesRepository = SensorDevicesRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SensorDevicesRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/repositories/SensorDevicesRepository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SensorDevicesRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/repositories/SensorDevicesRepository.ts"],"names":[],"mappings":";;;AAAA,yEAAqF;AACrF,mFAAkF;AAClF,mDAAoC;AAEpC,2FAAoE;AAEpE,MAAa,uBAAwB,SAAQ,sBAAa;IACtD;QACI,KAAK,CACD,yBAAyB,EACzB;YACI,yBAAyB,EAAE,uCAAkB,CAAC,cAAc;YAC5D,WAAW,EAAE,mBAAY,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW;YAC/D,QAAQ,EAAE,mBAAY,CAAC,QAAQ;YAC/B,UAAU,EAAE,gBAAgB;SAC/B,EACD,IAAI,uCAAmB,CAAC,kCAAkC,EAAE,uCAAkB,CAAC,UAAU,CAAC,CAC7F,CAAC;QAGC,aAAQ,GAAG,KAAK,EAAE,IAAqB,EAAE,EAAE;YAC9C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;gBACpD,MAAM,cAAc,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBACrD,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;qBAC3B,GAAG,CAAsB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAyB,CAAC,CAAC;gBACjE,cAAc,CAAC,IAAI,CAAC,YAAmB,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAqB,IAAI,EAAE;oBAC3D,iBAAiB,EAAE,cAAc;iBACpC,CAAC,CAAC;aACN;QACL,CAAC,CAAC;IAZF,CAAC;CAaJ;AAzBD,0DAyBC"}
|
|
@@ -1,27 +1,18 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.MeasurementsTransformation = void 0;
|
|
13
4
|
const Measurements_1 = require("../../schema-definitions/Measurements");
|
|
14
5
|
class MeasurementsTransformation {
|
|
15
6
|
constructor() {
|
|
16
|
-
this.transform = (data, sensor_id) =>
|
|
7
|
+
this.transform = async (data, sensor_id) => {
|
|
17
8
|
const measurementsArr = [];
|
|
18
9
|
for (const item of data) {
|
|
19
|
-
const transformedData =
|
|
10
|
+
const transformedData = await this.transformElement(item, sensor_id);
|
|
20
11
|
measurementsArr.push(transformedData);
|
|
21
12
|
}
|
|
22
13
|
return measurementsArr;
|
|
23
|
-
}
|
|
24
|
-
this.transformElement = (element, sensor_id) =>
|
|
14
|
+
};
|
|
15
|
+
this.transformElement = async (element, sensor_id) => {
|
|
25
16
|
const res = {
|
|
26
17
|
sensor_id,
|
|
27
18
|
measurement_id: element.id,
|
|
@@ -40,7 +31,7 @@ class MeasurementsTransformation {
|
|
|
40
31
|
soil_temp: element.data.temp1,
|
|
41
32
|
};
|
|
42
33
|
return res;
|
|
43
|
-
}
|
|
34
|
+
};
|
|
44
35
|
this.name = Measurements_1.measurements.name;
|
|
45
36
|
}
|
|
46
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeasurementsTransformation.js","sourceRoot":"","sources":["../../../src/integration-engine/transformations/MeasurementsTransformation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MeasurementsTransformation.js","sourceRoot":"","sources":["../../../src/integration-engine/transformations/MeasurementsTransformation.ts"],"names":[],"mappings":";;;AACA,wEAAgE;AAEhE,MAAa,0BAA0B;IAGnC;QAIO,cAAS,GAAG,KAAK,EAAE,IAAyB,EAAE,SAAiB,EAA4B,EAAE;YAChG,MAAM,eAAe,GAAoB,EAAE,CAAC;YAE5C,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;gBACrB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBACrE,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACzC;YAED,OAAO,eAAe,CAAC;QAC3B,CAAC,CAAC;QAEQ,qBAAgB,GAAG,KAAK,EAAE,OAA0B,EAAE,SAAiB,EAA0B,EAAE;YACzG,MAAM,GAAG,GAAkB;gBACvB,SAAS;gBACT,cAAc,EAAE,OAAO,CAAC,EAAE;gBAC1B,WAAW,EAAE,OAAO,CAAC,IAAI;gBACzB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ;gBAC/B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;gBAC7B,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ;gBAC/B,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;gBAC9B,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS;gBAClC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU;gBACpC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU;gBAC/B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG;gBACzB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU;gBACpC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU;gBACpC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ;gBAChC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;aAChC,CAAC;YAEF,OAAO,GAAG,CAAC;QACf,CAAC,CAAC;QAlCE,IAAI,CAAC,IAAI,GAAG,2BAAY,CAAC,IAAI,CAAC;IAClC,CAAC;CAkCJ;AAvCD,gEAuCC"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.SensorDevicesTransformation = void 0;
|
|
13
4
|
const transformations_1 = require("@golemio/core/dist/integration-engine/transformations");
|
|
@@ -15,15 +6,15 @@ const SensorDevices_1 = require("../../schema-definitions/SensorDevices");
|
|
|
15
6
|
class SensorDevicesTransformation extends transformations_1.BaseTransformation {
|
|
16
7
|
constructor() {
|
|
17
8
|
super();
|
|
18
|
-
this.transform = (data) =>
|
|
9
|
+
this.transform = async (data) => {
|
|
19
10
|
const devices = [];
|
|
20
11
|
for (const item of data) {
|
|
21
|
-
const transformedData =
|
|
12
|
+
const transformedData = await this.transformElement(item);
|
|
22
13
|
devices.push(transformedData);
|
|
23
14
|
}
|
|
24
15
|
return devices;
|
|
25
|
-
}
|
|
26
|
-
this.transformElement = (element) =>
|
|
16
|
+
};
|
|
17
|
+
this.transformElement = async (element) => {
|
|
27
18
|
const res = {
|
|
28
19
|
whole_name: element.name,
|
|
29
20
|
sensor_id: element.address,
|
|
@@ -33,7 +24,7 @@ class SensorDevicesTransformation extends transformations_1.BaseTransformation {
|
|
|
33
24
|
res.coordinate_lng = element.location.lng;
|
|
34
25
|
}
|
|
35
26
|
return res;
|
|
36
|
-
}
|
|
27
|
+
};
|
|
37
28
|
this.name = SensorDevices_1.sensorDevices.name;
|
|
38
29
|
}
|
|
39
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SensorDevicesTransformation.js","sourceRoot":"","sources":["../../../src/integration-engine/transformations/SensorDevicesTransformation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SensorDevicesTransformation.js","sourceRoot":"","sources":["../../../src/integration-engine/transformations/SensorDevicesTransformation.ts"],"names":[],"mappings":";;;AAAA,2FAA4G;AAE5G,0EAAkE;AAElE,MAAa,2BAA4B,SAAQ,oCAAkB;IAG/D;QACI,KAAK,EAAE,CAAC;QAIL,cAAS,GAAG,KAAK,EAAE,IAAoB,EAA4B,EAAE;YACxE,MAAM,OAAO,GAAoB,EAAE,CAAC;YAEpC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;gBACrB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBAC1D,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACjC;YAED,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC;QAEQ,qBAAgB,GAAG,KAAK,EAAE,OAAqB,EAA0B,EAAE;YACjF,MAAM,GAAG,GAAkB;gBACvB,UAAU,EAAE,OAAO,CAAC,IAAI;gBACxB,SAAS,EAAE,OAAO,CAAC,OAAO;aAC7B,CAAC;YAEF,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE;gBAC9C,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC1C,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;aAC7C;YAED,OAAO,GAAG,CAAC;QACf,CAAC,CAAC;QA1BE,IAAI,CAAC,IAAI,GAAG,6BAAa,CAAC,IAAI,CAAC;IACnC,CAAC;CA0BJ;AAhCD,kEAgCC"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.RefreshMeasurementsByIdTask = void 0;
|
|
13
4
|
const const_1 = require("../../const");
|
|
@@ -28,27 +19,25 @@ class RefreshMeasurementsByIdTask extends integration_engine_1.AbstractTask {
|
|
|
28
19
|
this.repository = new repositories_1.MeasurementsRepository();
|
|
29
20
|
this.microclimateRedisChannel = Di_1.MicroclimateContainer.resolve(ModuleContainerToken_1.ModuleContainerToken.RedisPubSubChannel);
|
|
30
21
|
}
|
|
31
|
-
execute(msg, msgProperties) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
});
|
|
22
|
+
async execute(msg, msgProperties) {
|
|
23
|
+
let errorMessage = null;
|
|
24
|
+
try {
|
|
25
|
+
const dataSource = MeasurementsDataSourceFactory_1.MeasurementsDataSourceFactory.getDataSource(msg);
|
|
26
|
+
const data = await dataSource.getAll();
|
|
27
|
+
const transformedData = await this.transformation.transform(data, msg.sensorAddr);
|
|
28
|
+
await this.repository.saveBulk(transformedData);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
errorMessage = err.message;
|
|
32
|
+
}
|
|
33
|
+
if (msgProperties?.headers && msgProperties?.headers[const_1.ORIGIN_HOSTNAME_HEADER]) {
|
|
34
|
+
await this.microclimateRedisChannel.publishMessage(`${errorMessage ?? "OK"}`, {
|
|
35
|
+
channelSuffix: msgProperties.headers[const_1.ORIGIN_HOSTNAME_HEADER],
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
if (errorMessage) {
|
|
39
|
+
throw new golemio_errors_1.GeneralError(errorMessage, this.constructor.name);
|
|
40
|
+
}
|
|
52
41
|
}
|
|
53
42
|
}
|
|
54
43
|
exports.RefreshMeasurementsByIdTask = RefreshMeasurementsByIdTask;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefreshMeasurementsByIdTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/RefreshMeasurementsByIdTask.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RefreshMeasurementsByIdTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/RefreshMeasurementsByIdTask.ts"],"names":[],"mappings":";;;AAAA,uCAAmD;AACnD,mGAA8F;AAC9F,qCAAmD;AACnD,yEAAoE;AACpE,qDAA0D;AAC1D,sGAAiG;AACjG,iGAA4F;AAE5F,8EAAqE;AAErE,6EAAwE;AAGxE,MAAa,2BAA4B,SAAQ,iCAA0C;IAQvF,YAAY,WAAmB;QAC3B,KAAK,CAAC,WAAW,CAAC,CAAC;QARP,cAAS,GAAG,yBAAyB,CAAC;QACtC,WAAM,GAAG,qEAAiC,CAAC;QAQvD,IAAI,CAAC,cAAc,GAAG,IAAI,uDAA0B,EAAE,CAAC;QACvD,IAAI,CAAC,UAAU,GAAG,IAAI,qCAAsB,EAAE,CAAC;QAC/C,IAAI,CAAC,wBAAwB,GAAG,0BAAqB,CAAC,OAAO,CACzD,2CAAoB,CAAC,kBAAkB,CAC1C,CAAC;IACN,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,GAAiC,EAAE,aAAiC;QACxF,IAAI,YAAY,GAAkB,IAAI,CAAC;QAEvC,IAAI;YACA,MAAM,UAAU,GAAG,6DAA6B,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACpE,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;YAClF,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;SACnD;QAAC,OAAO,GAAG,EAAE;YACV,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC;SAC9B;QAED,IAAI,aAAa,EAAE,OAAO,IAAI,aAAa,EAAE,OAAO,CAAC,8BAAsB,CAAC,EAAE;YAC1E,MAAM,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,GAAG,YAAY,IAAI,IAAI,EAAE,EAAE;gBAC1E,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,8BAAsB,CAAC;aAC/D,CAAC,CAAC;SACN;QAED,IAAI,YAAY,EAAE;YACd,MAAM,IAAI,6BAAY,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC/D;IACL,CAAC;CACJ;AAvCD,kEAuCC"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -31,56 +22,54 @@ class RefreshMeasurementsTask extends integration_engine_1.AbstractEmptyTask {
|
|
|
31
22
|
this.logger = Di_1.MicroclimateContainer.resolve(CoreToken_1.CoreToken.Logger);
|
|
32
23
|
this.microclimateRedisChannel = Di_1.MicroclimateContainer.resolve(ModuleContainerToken_1.ModuleContainerToken.RedisPubSubChannel);
|
|
33
24
|
}
|
|
34
|
-
execute() {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
25
|
+
async execute() {
|
|
26
|
+
const sensorDevicesFromDB = await this.repository.find({
|
|
27
|
+
attributes: ["sensor_id"],
|
|
28
|
+
raw: true,
|
|
29
|
+
});
|
|
30
|
+
if (sensorDevicesFromDB.length === 0) {
|
|
31
|
+
this.logger.warn("SensorMeasurements: no sensor devices found");
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const subscriber = this.microclimateRedisChannel.createSubscriber({
|
|
35
|
+
channelSuffix: node_os_1.default.hostname(),
|
|
36
|
+
maxMessageCount: sensorDevicesFromDB.length,
|
|
37
|
+
});
|
|
38
|
+
await subscriber.subscribe();
|
|
39
|
+
for (const sensorIdObject of sensorDevicesFromDB) {
|
|
40
|
+
const msg = {
|
|
41
|
+
sensorAddr: sensorIdObject.sensor_id,
|
|
42
|
+
dateRange: Measurements_1.DateRange.TODAY,
|
|
43
|
+
};
|
|
44
|
+
integration_engine_1.QueueManager.sendMessageToExchange(this.queuePrefix, "refreshMeasurementsById", msg, {
|
|
45
|
+
headers: {
|
|
46
|
+
[const_1.ORIGIN_HOSTNAME_HEADER]: node_os_1.default.hostname(),
|
|
47
|
+
},
|
|
47
48
|
});
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
[const_1.ORIGIN_HOSTNAME_HEADER]: node_os_1.default.hostname(),
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
// Listen for messages from workers and wait for all of them to finish
|
|
61
|
-
// before continuing to the next step (refresh sensor views)
|
|
62
|
-
try {
|
|
63
|
-
yield subscriber.listen(({ message, messageCount, isFinal }) => {
|
|
64
|
-
this.logger.info(`SensorMeasurements: received message: ${message} (${messageCount}/${sensorDevicesFromDB.length})`);
|
|
65
|
-
if (!message.startsWith("OK")) {
|
|
66
|
-
this.logger.error(`SensorMeasurements: subscription error: ${message}`);
|
|
67
|
-
}
|
|
68
|
-
if (isFinal) {
|
|
69
|
-
this.logger.info("SensorMeasurements: all messages received");
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
catch (err) {
|
|
74
|
-
if (err instanceof golemio_errors_1.AbstractGolemioError) {
|
|
75
|
-
throw err;
|
|
49
|
+
}
|
|
50
|
+
// Listen for messages from workers and wait for all of them to finish
|
|
51
|
+
// before continuing to the next step (refresh sensor views)
|
|
52
|
+
try {
|
|
53
|
+
await subscriber.listen(({ message, messageCount, isFinal }) => {
|
|
54
|
+
this.logger.info(`SensorMeasurements: received message: ${message} (${messageCount}/${sensorDevicesFromDB.length})`);
|
|
55
|
+
if (!message.startsWith("OK")) {
|
|
56
|
+
this.logger.error(`SensorMeasurements: subscription error: ${message}`);
|
|
76
57
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
58
|
+
if (isFinal) {
|
|
59
|
+
this.logger.info("SensorMeasurements: all messages received");
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
if (err instanceof golemio_errors_1.AbstractGolemioError) {
|
|
65
|
+
throw err;
|
|
82
66
|
}
|
|
83
|
-
|
|
67
|
+
throw new golemio_errors_1.GeneralError("Error while listening for messages", this.constructor.name, err);
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
await subscriber.unsubscribe();
|
|
71
|
+
integration_engine_1.QueueManager.sendMessageToExchange(this.queuePrefix, "refreshSensorViews", {});
|
|
72
|
+
}
|
|
84
73
|
}
|
|
85
74
|
}
|
|
86
75
|
exports.RefreshMeasurementsTask = RefreshMeasurementsTask;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefreshMeasurementsTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/RefreshMeasurementsTask.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RefreshMeasurementsTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/RefreshMeasurementsTask.ts"],"names":[],"mappings":";;;;;;AAAA,uCAAmD;AACnD,qCAAmD;AACnD,yEAAoE;AACpE,qDAA2D;AAC3D,2EAA4E;AAC5E,wEAAqE;AAErE,8EAAwF;AAExF,6EAA8F;AAC9F,sDAAyB;AAMzB,MAAa,uBAAwB,SAAQ,sCAAiB;IAQ1D,YAAY,WAAmB;QAC3B,KAAK,CAAC,WAAW,CAAC,CAAC;QARP,cAAS,GAAG,qBAAqB,CAAC;QAClC,aAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;QAQvD,IAAI,CAAC,UAAU,GAAG,IAAI,sCAAuB,EAAE,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,0BAAqB,CAAC,OAAO,CAAU,qBAAS,CAAC,MAAM,CAAC,CAAC;QACvE,IAAI,CAAC,wBAAwB,GAAG,0BAAqB,CAAC,OAAO,CACzD,2CAAoB,CAAC,kBAAkB,CAC1C,CAAC;IACN,CAAC;IAES,KAAK,CAAC,OAAO;QACnB,MAAM,mBAAmB,GAAsB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACtE,UAAU,EAAE,CAAC,WAAW,CAAC;YACzB,GAAG,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;YAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAChE,OAAO;SACV;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC;YAC9D,aAAa,EAAE,iBAAE,CAAC,QAAQ,EAAE;YAC5B,eAAe,EAAE,mBAAmB,CAAC,MAAM;SAC9C,CAAC,CAAC;QACH,MAAM,UAAU,CAAC,SAAS,EAAE,CAAC;QAE7B,KAAK,MAAM,cAAc,IAAI,mBAAmB,EAAE;YAC9C,MAAM,GAAG,GAAiC;gBACtC,UAAU,EAAE,cAAc,CAAC,SAAS;gBACpC,SAAS,EAAE,wBAAS,CAAC,KAAK;aAC7B,CAAC;YAEF,iCAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,yBAAyB,EAAE,GAAG,EAAE;gBACjF,OAAO,EAAE;oBACL,CAAC,8BAAsB,CAAC,EAAE,iBAAE,CAAC,QAAQ,EAAE;iBAC1C;aACJ,CAAC,CAAC;SACN;QAED,sEAAsE;QACtE,4DAA4D;QAC5D,IAAI;YACA,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC3D,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,yCAAyC,OAAO,KAAK,YAAY,IAAI,mBAAmB,CAAC,MAAM,GAAG,CACrG,CAAC;gBAEF,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;oBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,OAAO,EAAE,CAAC,CAAC;iBAC3E;gBAED,IAAI,OAAO,EAAE;oBACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;iBACjE;YACL,CAAC,CAAC,CAAC;SACN;QAAC,OAAO,GAAG,EAAE;YACV,IAAI,GAAG,YAAY,qCAAoB,EAAE;gBACrC,MAAM,GAAG,CAAC;aACb;YACD,MAAM,IAAI,6BAAY,CAAC,oCAAoC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SAC5F;gBAAS;YACN,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;YAC/B,iCAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;SAClF;IACL,CAAC;CACJ;AAzED,0DAyEC"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.RefreshSensorDevicesTask = void 0;
|
|
13
4
|
const SensorDevicesTransformation_1 = require("../../transformations/SensorDevicesTransformation");
|
|
@@ -23,12 +14,10 @@ class RefreshSensorDevicesTask extends integration_engine_1.AbstractEmptyTask {
|
|
|
23
14
|
this.transformation = new SensorDevicesTransformation_1.SensorDevicesTransformation();
|
|
24
15
|
this.repository = new repositories_1.SensorDevicesRepository();
|
|
25
16
|
}
|
|
26
|
-
execute() {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
yield this.repository.saveBulk(transformedData);
|
|
31
|
-
});
|
|
17
|
+
async execute() {
|
|
18
|
+
const data = await this.dataSource.getAll();
|
|
19
|
+
const transformedData = await this.transformation.transform(data);
|
|
20
|
+
await this.repository.saveBulk(transformedData);
|
|
32
21
|
}
|
|
33
22
|
}
|
|
34
23
|
exports.RefreshSensorDevicesTask = RefreshSensorDevicesTask;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefreshSensorDevicesTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/RefreshSensorDevicesTask.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RefreshSensorDevicesTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/RefreshSensorDevicesTask.ts"],"names":[],"mappings":";;;AAAA,mGAA8F;AAC9F,8EAA0E;AAE1E,qGAAgG;AAChG,qDAA2D;AAE3D,MAAa,wBAAyB,SAAQ,sCAAiB;IAQ3D,YAAY,WAAmB;QAC3B,KAAK,CAAC,WAAW,CAAC,CAAC;QARP,cAAS,GAAG,sBAAsB,CAAC;QACnC,aAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;QAQvD,IAAI,CAAC,UAAU,GAAG,+DAA8B,CAAC,aAAa,EAAE,CAAC;QACjE,IAAI,CAAC,cAAc,GAAG,IAAI,yDAA2B,EAAE,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,IAAI,sCAAuB,EAAE,CAAC;IACpD,CAAC;IAES,KAAK,CAAC,OAAO;QACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QAC5C,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACpD,CAAC;CACJ;AApBD,4DAoBC"}
|
|
@@ -11,15 +11,6 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
15
|
exports.RefreshSensorViewsTask = void 0;
|
|
25
16
|
const const_1 = require("../../const");
|
|
@@ -41,38 +32,36 @@ let RefreshSensorViewsTask = exports.RefreshSensorViewsTask = class RefreshSenso
|
|
|
41
32
|
this.queueTtl = 10 * 60 * 1000; // 10 minutes
|
|
42
33
|
this.lockTimeout = config.getValue("old.datasources.microclimate.sensorMeasurements.mutexLockTimeout", 9 * 60 * 1000); // default 9 minutes
|
|
43
34
|
}
|
|
44
|
-
execute() {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
});
|
|
35
|
+
async execute() {
|
|
36
|
+
const mutex = this.createMutex();
|
|
37
|
+
let lockAcquired = false;
|
|
38
|
+
try {
|
|
39
|
+
lockAcquired = await mutex.tryAcquire();
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
throw new golemio_errors_1.GeneralError(`${this.constructor.name}: error while acquiring mutex lock`, this.constructor.name, err);
|
|
43
|
+
}
|
|
44
|
+
if (!lockAcquired) {
|
|
45
|
+
this.logger.info(`${this.constructor.name}: mutex lock was not acquired`);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const connection = this.postgresClient.getConnection();
|
|
49
|
+
try {
|
|
50
|
+
// refresh points heights (from imported sensor devices)
|
|
51
|
+
await connection.query(RawQueryProvider_1.RawQueryProvider.getRefreshPointsHeightsQuery());
|
|
52
|
+
// refresh sensor measurements views
|
|
53
|
+
await connection.query(RawQueryProvider_1.RawQueryProvider.getRefreshSensorMeasurementsQuery());
|
|
54
|
+
// swap views
|
|
55
|
+
await connection.query(RawQueryProvider_1.RawQueryProvider.getSwapSensorMeasurementsQuery());
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
throw new golemio_errors_1.GeneralError(`${this.constructor.name}: error while refreshing sensor views`, this.constructor.name, err);
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
await mutex.release().catch((err) => {
|
|
62
|
+
this.logger.error(`${this.constructor.name}: error while releasing mutex: ${err.message}`);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
76
65
|
}
|
|
77
66
|
createMutex() {
|
|
78
67
|
return new redis_semaphore_1.Mutex(this.redisClient.getConnection(), this.queuePrefix, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefreshSensorViewsTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/RefreshSensorViewsTask.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RefreshSensorViewsTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/RefreshSensorViewsTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uCAAqD;AACrD,qEAAgE;AAGhE,oGAAiG;AACjG,wEAAqE;AAErE,mEAA2E;AAC3E,2EAAkF;AAClF,6EAAwE;AACxE,+EAAkE;AAClE,iEAAwE;AAGjE,IAAM,sBAAsB,oCAA5B,MAAM,sBAAuB,SAAQ,2BAAiB;IAKzD,YACoC,MAAqB,EAC3B,MAAuB,EACV,WAAqC,EACvC,cAA0C;QAE/E,KAAK,CAAC,gCAAwB,CAAC,CAAC;QAJE,WAAM,GAAN,MAAM,CAAS;QACF,gBAAW,GAAX,WAAW,CAAkB;QAC/B,mBAAc,GAAd,cAAc,CAAoB;QARnE,cAAS,GAAG,oBAAoB,CAAC;QACjC,aAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;QAUpD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAC9B,kEAAkE,EAClE,CAAC,GAAG,EAAE,GAAG,IAAI,CACN,CAAC,CAAC,oBAAoB;IACrC,CAAC;IAES,KAAK,CAAC,OAAO;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEjC,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI;YACA,YAAY,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;SAC3C;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,IAAI,6BAAY,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,oCAAoC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SACpH;QAED,IAAI,CAAC,YAAY,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,+BAA+B,CAAC,CAAC;YAC1E,OAAO;SACV;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;QACvD,IAAI;YACA,wDAAwD;YACxD,MAAM,UAAU,CAAC,KAAK,CAAC,mCAAgB,CAAC,4BAA4B,EAAE,CAAC,CAAC;YAExE,oCAAoC;YACpC,MAAM,UAAU,CAAC,KAAK,CAAC,mCAAgB,CAAC,iCAAiC,EAAE,CAAC,CAAC;YAE7E,aAAa;YACb,MAAM,UAAU,CAAC,KAAK,CAAC,mCAAgB,CAAC,8BAA8B,EAAE,CAAC,CAAC;SAC7E;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,IAAI,6BAAY,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,uCAAuC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SACvH;gBAAS;YACN,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,kCAAkC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/F,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAEO,WAAW;QACf,OAAO,IAAI,uBAAK,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE;YACjE,oBAAoB,EAAE,CAAC;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;gBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,uBAAuB,CAAC,CAAC;YAC5E,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;iCA7DY,sBAAsB;IADlC,IAAA,qBAAU,GAAE;IAOJ,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,YAAY,CAAC,CAAA;IAC9B,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,MAAM,CAAC,CAAA;IACxB,WAAA,IAAA,iBAAM,EAAC,oBAAc,CAAC,cAAc,CAAC,CAAA;IACrC,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,iBAAiB,CAAC,CAAA;qDADwB,mCAAgB;GARvE,sBAAsB,CA6DlC"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.microclimateRouter = void 0;
|
|
13
4
|
const LocationsOutputMapper_1 = require("./helpers/LocationsOutputMapper");
|
|
@@ -25,46 +16,49 @@ class MicroclimateRouter extends BaseRouter_1.BaseRouter {
|
|
|
25
16
|
constructor() {
|
|
26
17
|
super();
|
|
27
18
|
this.router = (0, express_1.Router)();
|
|
28
|
-
this.getLocations = (req, res, next) =>
|
|
19
|
+
this.getLocations = async (req, res, next) => {
|
|
29
20
|
try {
|
|
30
|
-
const
|
|
31
|
-
|
|
21
|
+
const queryData = (0, express_validator_1.matchedData)(req);
|
|
22
|
+
const data = await this.sensorDevicesImportRepository.GetAllDistinctLocations({
|
|
23
|
+
locationId: queryData.locationId ? Number(queryData.locationId) : undefined,
|
|
32
24
|
});
|
|
33
25
|
res.status(200).send(LocationsOutputMapper_1.LocationsOutputMapper.locationsMapper(data));
|
|
34
26
|
}
|
|
35
27
|
catch (err) {
|
|
36
28
|
next(err);
|
|
37
29
|
}
|
|
38
|
-
}
|
|
39
|
-
this.getPoints = (req, res, next) =>
|
|
30
|
+
};
|
|
31
|
+
this.getPoints = async (req, res, next) => {
|
|
40
32
|
try {
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
33
|
+
const queryData = (0, express_validator_1.matchedData)(req);
|
|
34
|
+
const data = await this.sensorPointsViewRepository.GetAllPoints({
|
|
35
|
+
locationId: queryData.locationId ? Number(queryData.locationId) : undefined,
|
|
36
|
+
pointId: queryData.pointId ? Number(queryData.pointId) : undefined,
|
|
44
37
|
});
|
|
45
38
|
res.status(200).send(PointsOutputMapper_1.PointsOutputMapper.pointsMapper(data));
|
|
46
39
|
}
|
|
47
40
|
catch (err) {
|
|
48
41
|
next(err);
|
|
49
42
|
}
|
|
50
|
-
}
|
|
51
|
-
this.getMeasurements = (req, res, next) =>
|
|
43
|
+
};
|
|
44
|
+
this.getMeasurements = async (req, res, next) => {
|
|
52
45
|
try {
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
46
|
+
const queryData = (0, express_validator_1.matchedData)(req);
|
|
47
|
+
const data = await this.sensorMeasurementsViewRepository.GetAllMeasurements({
|
|
48
|
+
locationId: queryData.locationId ? Number(queryData.locationId) : undefined,
|
|
49
|
+
pointId: queryData.pointId ? Number(queryData.pointId) : undefined,
|
|
50
|
+
measure: queryData.measure,
|
|
51
|
+
from: queryData.from,
|
|
52
|
+
to: queryData.to,
|
|
53
|
+
limit: queryData.limit ? Number(queryData.limit) : undefined,
|
|
54
|
+
offset: queryData.offset ? Number(queryData.offset) : undefined,
|
|
61
55
|
});
|
|
62
56
|
res.status(200).send(data);
|
|
63
57
|
}
|
|
64
58
|
catch (err) {
|
|
65
59
|
next(err);
|
|
66
60
|
}
|
|
67
|
-
}
|
|
61
|
+
};
|
|
68
62
|
this.initRoutes = () => {
|
|
69
63
|
this.router.get("/locations", [(0, express_validator_1.query)("locationId").optional().isInt().not().isArray()], output_gateway_1.checkErrors, this.cacheHeaderMiddleware.getMiddleware(60 * 60, 300), this.getLocations);
|
|
70
64
|
this.router.get("/points", [(0, express_validator_1.query)("locationId").optional().isInt().not().isArray(), (0, express_validator_1.query)("pointId").optional().isInt().not().isArray()], output_gateway_1.checkErrors, this.cacheHeaderMiddleware.getMiddleware(60 * 60, 300), this.getPoints);
|
|
@@ -74,7 +68,7 @@ class MicroclimateRouter extends BaseRouter_1.BaseRouter {
|
|
|
74
68
|
(0, express_validator_1.query)("measure").optional().not().isEmpty({ ignore_whitespace: true }),
|
|
75
69
|
(0, express_validator_1.query)("from").optional().isISO8601().not().isArray(),
|
|
76
70
|
(0, express_validator_1.query)("to").optional().isISO8601().not().isArray(),
|
|
77
|
-
],
|
|
71
|
+
], (0, output_gateway_1.paginationLimitMiddleware)("MicroclimateRouter"), output_gateway_1.checkErrors, this.cacheHeaderMiddleware.getMiddleware(60 * 60, 300), this.getMeasurements);
|
|
78
72
|
};
|
|
79
73
|
this.cacheHeaderMiddleware = Di_1.MicroClimateContainer.resolve(ioc_1.ContainerToken.CacheHeaderMiddleware);
|
|
80
74
|
this.sensorDevicesImportRepository = new repositories_1.SensorDevicesImportRepository();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MicroclimateRouter.js","sourceRoot":"","sources":["../../src/output-gateway/MicroclimateRouter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MicroclimateRouter.js","sourceRoot":"","sources":["../../src/output-gateway/MicroclimateRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -22,7 +13,7 @@ class SensorDevicesImportRepository extends output_gateway_1.SequelizeModel {
|
|
|
22
13
|
super(_sch_1.Microclimate.definitions.sensorDevicesImport.name, _sch_1.Microclimate.definitions.sensorDevicesImport.pgTableName, SensorDevicesImportModel_1.SensorDevicesImportModel.attributeModel, {
|
|
23
14
|
schema: _sch_1.Microclimate.pgSchema,
|
|
24
15
|
});
|
|
25
|
-
this.GetAllDistinctLocations = (options = {}) =>
|
|
16
|
+
this.GetAllDistinctLocations = async (options = {}) => {
|
|
26
17
|
let whereCondition = "";
|
|
27
18
|
if (options.locationId) {
|
|
28
19
|
whereCondition = `WHERE location_id = ${options.locationId}`;
|
|
@@ -42,7 +33,7 @@ class SensorDevicesImportRepository extends output_gateway_1.SequelizeModel {
|
|
|
42
33
|
ORDER BY location_id ASC, point_id ASC
|
|
43
34
|
;
|
|
44
35
|
`, { type: sequelize_1.default.QueryTypes.SELECT });
|
|
45
|
-
}
|
|
36
|
+
};
|
|
46
37
|
}
|
|
47
38
|
GetAll() {
|
|
48
39
|
throw new Error("Not implemented");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SensorDevicesImportRepository.js","sourceRoot":"","sources":["../../../src/output-gateway/repositories/SensorDevicesImportRepository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SensorDevicesImportRepository.js","sourceRoot":"","sources":["../../../src/output-gateway/repositories/SensorDevicesImportRepository.ts"],"names":[],"mappings":";;;;;;AAAA,sEAAmE;AACnE,oFAA4D;AAC5D,mDAAoC;AACpC,uGAAgF;AAahF,MAAa,6BAA8B,SAAQ,+BAAc;IAC7D;QACI,KAAK,CACD,mBAAY,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,EACjD,mBAAY,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,EACxD,mDAAwB,CAAC,cAAc,EACvC;YACI,MAAM,EAAE,mBAAY,CAAC,QAAQ;SAChC,CACJ,CAAC;QAGC,4BAAuB,GAAG,KAAK,EAClC,UAEI,EAAE,EACoB,EAAE;YAC5B,IAAI,cAAc,GAAG,EAAE,CAAC;YACxB,IAAI,OAAO,CAAC,UAAU,EAAE;gBACpB,cAAc,GAAG,uBAAuB,OAAO,CAAC,UAAU,EAAE,CAAC;aAChE;YAED,OAAO,IAAI,CAAC,cAAc,CAAC,SAAU,CAAC,KAAK,CACvC;;;;;;;;;;mBAUO,mBAAY,CAAC,QAAQ;cAC1B,cAAc;;;SAGnB,EACG,EAAE,IAAI,EAAE,mBAAS,CAAC,UAAU,CAAC,MAAM,EAAE,CACxC,CAAC;QACN,CAAC,CAAC;IA9BF,CAAC;IAgCD,MAAM;QACF,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;IAED,MAAM;QACF,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;CACJ;AAjDD,sEAiDC"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.SensorMeasurementsViewRepository = void 0;
|
|
13
4
|
const _sch_1 = require("../../schema-definitions");
|
|
@@ -21,8 +12,7 @@ class SensorMeasurementsViewRepository extends output_gateway_1.SequelizeModel {
|
|
|
21
12
|
schema: _sch_1.Microclimate.pgSchema,
|
|
22
13
|
timestamps: false,
|
|
23
14
|
});
|
|
24
|
-
this.GetAllMeasurements = (options = {}) =>
|
|
25
|
-
var _a;
|
|
15
|
+
this.GetAllMeasurements = async (options = {}) => {
|
|
26
16
|
const whereAttributes = {
|
|
27
17
|
[sequelize_1.Op.and]: [
|
|
28
18
|
...(options.locationId ? [{ location_id: { [sequelize_1.Op.eq]: options.locationId } }] : []),
|
|
@@ -32,9 +22,14 @@ class SensorMeasurementsViewRepository extends output_gateway_1.SequelizeModel {
|
|
|
32
22
|
...(options.to ? [{ measured_at: { [sequelize_1.Op.lte]: options.to } }] : []),
|
|
33
23
|
],
|
|
34
24
|
};
|
|
35
|
-
const joinAttributes =
|
|
36
|
-
|
|
37
|
-
|
|
25
|
+
const joinAttributes = {
|
|
26
|
+
[sequelize_1.Op.and]: [sequelize_1.Sequelize.literal("latest.measure = v_sensor_measurements.measure")],
|
|
27
|
+
// only if from and to are not set
|
|
28
|
+
// then we only want to get the latest measurement for each point and measure type
|
|
29
|
+
...(!options.from && !options.to
|
|
30
|
+
? [sequelize_1.Sequelize.literal("latest.measured_at = v_sensor_measurements.measured_at")]
|
|
31
|
+
: []),
|
|
32
|
+
};
|
|
38
33
|
return this.sequelizeModel.findAll({
|
|
39
34
|
attributes: {
|
|
40
35
|
exclude: ["sensor_id"],
|
|
@@ -49,14 +44,14 @@ class SensorMeasurementsViewRepository extends output_gateway_1.SequelizeModel {
|
|
|
49
44
|
],
|
|
50
45
|
where: whereAttributes,
|
|
51
46
|
limit: options.limit,
|
|
52
|
-
offset:
|
|
47
|
+
offset: options.offset ?? 0,
|
|
53
48
|
order: [
|
|
54
49
|
["point_id", "asc"],
|
|
55
50
|
["measure", "asc"],
|
|
56
51
|
["measured_at", "desc"],
|
|
57
52
|
],
|
|
58
53
|
});
|
|
59
|
-
}
|
|
54
|
+
};
|
|
60
55
|
this.sequelizeModel.removeAttribute("id");
|
|
61
56
|
// Associations
|
|
62
57
|
this.measurementsLatestViewModel = this.sequelizeModel["sequelize"].define(_sch_1.Microclimate.definitions.sensorMeasurementsLatestView.pgTableName, SensorMeasurementsLatestViewModel_1.SensorMeasurementsLatestViewModel.attributeModel, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SensorMeasurementsViewRepository.js","sourceRoot":"","sources":["../../../src/output-gateway/repositories/SensorMeasurementsViewRepository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SensorMeasurementsViewRepository.js","sourceRoot":"","sources":["../../../src/output-gateway/repositories/SensorMeasurementsViewRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.SensorPointsViewRepository = void 0;
|
|
13
4
|
const output_gateway_1 = require("@golemio/core/dist/output-gateway");
|
|
@@ -19,7 +10,7 @@ class SensorPointsViewRepository extends output_gateway_1.SequelizeModel {
|
|
|
19
10
|
super(_sch_1.Microclimate.definitions.sensorPointsView.name, _sch_1.Microclimate.definitions.sensorPointsView.pgTableName, SensorPointsViewModel_1.SensorPointsViewModel.attributeModel, {
|
|
20
11
|
schema: _sch_1.Microclimate.pgSchema,
|
|
21
12
|
});
|
|
22
|
-
this.GetAllPoints = (options = {}) =>
|
|
13
|
+
this.GetAllPoints = async (options = {}) => {
|
|
23
14
|
const whereAttributes = {
|
|
24
15
|
[sequelize_1.Op.and]: [
|
|
25
16
|
...(options.locationId ? [{ location_id: { [sequelize_1.Op.eq]: options.locationId } }] : []),
|
|
@@ -29,7 +20,7 @@ class SensorPointsViewRepository extends output_gateway_1.SequelizeModel {
|
|
|
29
20
|
return this.sequelizeModel.findAll({
|
|
30
21
|
where: whereAttributes,
|
|
31
22
|
});
|
|
32
|
-
}
|
|
23
|
+
};
|
|
33
24
|
this.sequelizeModel.removeAttribute("id");
|
|
34
25
|
}
|
|
35
26
|
GetAll() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SensorPointsViewRepository.js","sourceRoot":"","sources":["../../../src/output-gateway/repositories/SensorPointsViewRepository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SensorPointsViewRepository.js","sourceRoot":"","sources":["../../../src/output-gateway/repositories/SensorPointsViewRepository.ts"],"names":[],"mappings":";;;AAAA,sEAAmE;AACnE,mDAAoC;AACpC,iGAA0E;AAE1E,mEAAuE;AAEvE,MAAa,0BAA2B,SAAQ,+BAAc;IAC1D;QACI,KAAK,CACD,mBAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAC9C,mBAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,EACrD,6CAAqB,CAAC,cAAc,EACpC;YACI,MAAM,EAAE,mBAAY,CAAC,QAAQ;SAChC,CACJ,CAAC;QAIC,iBAAY,GAAG,KAAK,EACvB,UAGI,EAAE,EACsB,EAAE;YAC9B,MAAM,eAAe,GAAiB;gBAClC,CAAC,cAAE,CAAC,GAAG,CAAC,EAAE;oBACN,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,cAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjF,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,cAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC3E;aACJ,CAAC;YAEF,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;gBAC/B,KAAK,EAAE,eAAe;aACzB,CAAC,CAAC;QACP,CAAC,CAAC;QAnBE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAoBD,MAAM;QACF,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;IAED,MAAM;QACF,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;CACJ;AAtCD,gEAsCC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golemio/microclimate",
|
|
3
|
-
"version": "1.2.9-dev.
|
|
3
|
+
"version": "1.2.9-dev.2088099729",
|
|
4
4
|
"description": "Golemio Microclimate Module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"@commitlint/cli": "^11.0.0",
|
|
34
34
|
"@commitlint/config-conventional": "^11.0.0",
|
|
35
35
|
"@golemio/cli": "1.7.3",
|
|
36
|
-
"@golemio/core": "1.
|
|
36
|
+
"@golemio/core": "1.22.2-dev.2083548346",
|
|
37
37
|
"@golemio/db-common": "1.1.4",
|
|
38
38
|
"@golemio/eslint-config": "1.1.2",
|
|
39
39
|
"@types/chai": "4.2.3",
|