UNPKG

@golemio/energetics

Version:
35 lines 1.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FetchDataTask = void 0; const FetchDataSchema_1 = require("../schema/FetchDataSchema"); const queueprocessors_1 = require("@golemio/core/dist/integration-engine/queueprocessors"); const workers_1 = require("@golemio/core/dist/integration-engine/workers"); const luxon_1 = require("@golemio/core/dist/shared/luxon"); class FetchDataTask extends workers_1.AbstractTask { constructor(queuePrefix) { super(queuePrefix); this.queueName = "fetchData"; this.queueTtl = 29 * 60 * 1000; // 29 minutes this.schema = FetchDataSchema_1.FetchDataValidationSchema; } async execute({ targetDays }) { for (const dateParams of this.generateDateParams(targetDays)) { await queueprocessors_1.QueueManager.sendMessageToExchange(this.queuePrefix, "fetchConsumption", dateParams); } } *generateDateParams(targetDays) { const currentDate = luxon_1.DateTime.now().startOf("day"); const leftBoundDate = currentDate.minus({ days: targetDays }); const intervals = luxon_1.Interval.fromDateTimes(leftBoundDate, currentDate).splitBy({ months: 1 }); for (const interval of intervals) { const start = interval.start.startOf("day"); const end = interval.end.startOf("day"); yield { dateFrom: start.toISODate(), dateTo: end.toISODate(), }; } } } exports.FetchDataTask = FetchDataTask; //# sourceMappingURL=FetchDataTask.js.map