UNPKG

@n1k1t/mock-server

Version:

The ultimate toolkit to intercept, transform, and simulate HTTP/WS traffic with type-safe expectations

65 lines 2.6 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.HistoryService = void 0; const models_1 = require("../models"); const utils_1 = require("../../utils"); const utils_2 = require("../utils"); const logger_1 = require("../../logger"); const config_1 = __importDefault(require("../../config")); const logger = logger_1.Logger.build('Services.History'); class HistoryService extends models_1.Service { async restore() { if (!this.server.databases.redis) { return null; } const { persistence } = config_1.default.get('history'); if (!persistence.isEnabled) { return null; } const converter = utils_2.RxConverter.build(this.server.services.redis.iterate([persistence.key, '*'].join(':'), { ignore: [], trim: true, })); for await (const key of converter.iterate()) { const raw = await this.server.databases.redis.get(key).catch((error) => { logger.error(`Got error while fetching payload by key [${key}]`, error?.stack ?? error); return null; }); if (!raw) { continue; } const parsed = (0, utils_1.parseJsonSafe)(raw); if (parsed.status === 'ERROR') { logger.error('Got error while parsing cache', parsed.error?.stack ?? parsed.error); continue; } this.server.providers.system.storages.history.restore(parsed.result); } } async backup() { if (!this.server.databases.redis) { return null; } const { persistence } = config_1.default.get('history'); if (!persistence.isEnabled) { return null; } for (const provider of this.server.providers.extract()) { const key = [persistence.key, provider.group].join(':'); if (!provider.storages.history.size) { await this.server.databases.redis.del(key); continue; } const payload = JSON.stringify([...provider.storages.history.values()].map((history) => history.toPlain())); await this.server.databases.redis.setex(key, persistence.ttl, payload); } } static build(server) { return new HistoryService(server); } } exports.HistoryService = HistoryService; //# sourceMappingURL=history.service.js.map