@golemio/energetics
Version:
Golemio Energetics Module
29 lines • 1.45 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.AbstractFetchMeasurementsTask = void 0;
const constants_1 = require("../../constants");
const EnapoMeasurementsDataNormalizer_1 = require("../../helper/EnapoMeasurementsDataNormalizer");
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
const MEASUREMENTS_BATCH_SIZE = 5000;
class AbstractFetchMeasurementsTask extends integration_engine_1.AbstractTask {
constructor() {
super(constants_1.WORKER_NAME);
}
async saveConsumptionData(data, skipFilter = false) {
for (let i = 0; i < data.length; i += MEASUREMENTS_BATCH_SIZE) {
let batch = data.slice(i, i + MEASUREMENTS_BATCH_SIZE);
if (!skipFilter) {
batch = EnapoMeasurementsDataNormalizer_1.MeasurementsDataNormalizer.filter(batch);
}
// Remove duplicated measurements from the batch
batch = batch.filter((item, index, self) => index ===
self.findIndex((t) => t.timestamp.getTime() === item.timestamp.getTime() &&
t.addr === item.addr &&
t.variable === item.variable &&
t.meter === item.meter));
await this.measurementRepository.bulkSave(batch);
}
}
}
exports.AbstractFetchMeasurementsTask = AbstractFetchMeasurementsTask;
//# sourceMappingURL=AbstractFetchMeasurementsTask.js.map
;