@golemio/energetics
Version:
Golemio Energetics Module
33 lines • 1.51 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.AbstractEnapoFetchMeasurementsTask = void 0;
const constants_1 = require("../../constants");
const MeasurementsDataNormalizer_1 = require("../../helpers/MeasurementsDataNormalizer");
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
const MEASUREMENTS_BATCH_SIZE = 5000;
class AbstractEnapoFetchMeasurementsTask extends integration_engine_1.AbstractTask {
constructor() {
super(constants_1.ENAPO_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 = MeasurementsDataNormalizer_1.EnapoMeasurementsDataNormalizer.filter(batch);
}
const uniqueValues = new Set();
batch = batch.filter((item) => {
const key = `${item.timestamp.getTime()}_${item.var}_${item.place_id}_${item.eic}`;
if (uniqueValues.has(key))
return false;
uniqueValues.add(key);
return true;
});
if (batch.length) {
await this.measurementsRepository.bulkSave(batch);
}
}
}
}
exports.AbstractEnapoFetchMeasurementsTask = AbstractEnapoFetchMeasurementsTask;
//# sourceMappingURL=AbstractEnapoFetchMeasurementsTask.js.map
;