@golemio/parkings
Version:
Golemio Parkings Module
67 lines • 4.03 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RefreshDataInDbTask = void 0;
const helpers_1 = require("@golemio/core/dist/helpers");
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
const ParkomatSchema_1 = require("../schemas/ParkomatSchema");
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
const ModuleContainerToken_1 = require("../../ioc/ModuleContainerToken");
const ParkomatsTransformation_1 = require("../../transformations/ParkomatsTransformation");
const ParkomatsRepository_1 = require("../../repositories/ParkomatsRepository");
const ParkomatsDataSource_1 = require("../../datasources/parkomats/ParkomatsDataSource");
const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
const _sch_1 = require("../../../schema-definitions");
let RefreshDataInDbTask = exports.RefreshDataInDbTask = class RefreshDataInDbTask extends integration_engine_1.AbstractTask {
constructor(model, transformation, dataSource, log) {
super(_sch_1.Parkomats.name.toLowerCase());
this.model = model;
this.transformation = transformation;
this.dataSource = dataSource;
this.log = log;
this.queueName = "refreshDataInDB";
this.queueTtl = 59 * 60 * 1000; // 59 minutes
this.schema = ParkomatSchema_1.IParkomatValidationSchema;
this.execute = async (msg) => {
let from;
let to;
if (msg.from && msg.to) {
from = (0, helpers_1.dateTime)(new Date(msg.from), { timeZone: "Europe/Prague" });
to = (0, helpers_1.dateTime)(new Date(msg.to), { timeZone: "Europe/Prague" });
this.log.debug(`Interval from: ${from} to ${to} was used.`);
}
else {
const now = new Date();
now.setHours(4, 0, 0, 0);
to = (0, helpers_1.dateTime)(now).setTimeZone("Europe/Prague");
from = to.clone();
from.subtract(28, "hours");
}
const data = await this.dataSource.getParkomats("from=" + from.format("yyyy-LL-dd'T'HH:mm:ss") + `&to=${to.format("yyyy-LL-dd'T'HH:mm:ss")}`);
const transformedData = await this.transformation.transform(data);
await this.model.bulkSave(transformedData);
};
}
};
exports.RefreshDataInDbTask = RefreshDataInDbTask = __decorate([
(0, tsyringe_1.injectable)(),
__param(0, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.ParkomatsRepository)),
__param(1, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.ParkomatsTransformation)),
__param(2, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.ParkomatsDataSource)),
__param(3, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.Logger)),
__metadata("design:paramtypes", [ParkomatsRepository_1.ParkomatsRepository,
ParkomatsTransformation_1.ParkomatsTransformation,
ParkomatsDataSource_1.ParkomatsDataSource, Object])
], RefreshDataInDbTask);
//# sourceMappingURL=RefreshDataInDbTask.js.map