@golemio/energetics
Version:
Golemio Energetics Module
35 lines • 1.58 kB
JavaScript
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
;