UNPKG

@golemio/energetics

Version:
33 lines 1.51 kB
"use strict"; 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