@golemio/pid
Version:
Golemio PID Module
78 lines • 3.82 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 JISMetadataRepository_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.JISMetadataRepository = void 0;
const const_1 = require("../../../schema-definitions/jis/redis/const");
const JISMetadataDtoSchema_1 = require("../../../schema-definitions/jis/redis/schemas/JISMetadataDtoSchema");
const RedisModel_1 = require("@golemio/core/dist/integration-engine/models/RedisModel");
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
let JISMetadataRepository = exports.JISMetadataRepository = JISMetadataRepository_1 = class JISMetadataRepository extends RedisModel_1.RedisModel {
constructor() {
super("JISMetadataRepository", {
decodeDataAfterGet: JSON.parse,
encodeDataBeforeSave: JSON.stringify,
isKeyConstructedFromData: false,
prefix: JISMetadataRepository_1.NAMESPACE_PREFIX,
}, new golemio_validator_1.JSONSchemaValidator("JISMetadataRepositoryValidator", JISMetadataDtoSchema_1.JISMetadataDtoSchema));
this.key = "main";
}
/** Get the Etag of the last JIS Infotexts response */
async getLastInfotextsEtag() {
try {
const metadata = await this.get(this.key);
return metadata?.infotexts.lastResponse.etag;
}
catch (err) {
if (err instanceof golemio_errors_1.GeneralError)
throw err;
throw new golemio_errors_1.GeneralError("Error while getting last infotexts etag", this.constructor.name, err);
}
}
/**
* Set the Etag of the last JIS Infotexts response to a given new value
*
* @param etag The new Etag of the last JIS Infotexts response
*/
async setLastInfotextsEtag(etag) {
try {
let metadata = await this.get(this.key);
if (!metadata)
metadata = this.initializeMetadata();
metadata.infotexts.lastResponse.etag = etag;
metadata.infotexts.lastResponse.updatedAt = new Date().toISOString();
await this.set(this.key, metadata);
}
catch (err) {
if (err instanceof golemio_errors_1.GeneralError)
throw err;
throw new golemio_errors_1.GeneralError("Error while updating last infotexts etag", this.constructor.name, err);
}
}
initializeMetadata() {
return {
infotexts: {
lastResponse: {
etag: "",
updatedAt: new Date().toISOString(),
},
},
};
}
};
JISMetadataRepository.NAMESPACE_PREFIX = const_1.JIS_METADATA_NAMESPACE_PREFIX;
exports.JISMetadataRepository = JISMetadataRepository = JISMetadataRepository_1 = __decorate([
(0, tsyringe_1.injectable)(),
__metadata("design:paramtypes", [])
], JISMetadataRepository);
//# sourceMappingURL=JISMetadataRepository.js.map