UNPKG

@n1k1t/mock-server

Version:

Powerful util to setup mocks over HTTP APIs

37 lines 1.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const node_gzip_1 = require("node-gzip"); const utils_1 = require("../utils"); const models_1 = require("../models"); const logger_1 = require("../../logger"); const logger = logger_1.Logger.build('Server.Endpoints.CacheBackup'); exports.default = models_1.Endpoint .build() .bindToHttp({ method: 'POST', path: `/cache/backup` }) .bindToIo({ path: 'cache:backup' }) .assignHandler(async ({ reply, server }) => { const backup = { redis: [] }; if (server.databases.redis) { const converter = utils_1.RxConverter.build(server.services.analytics.iterateRedisKeys()); for await (const key of converter.iterate()) { const unprefixed = server.databases.redis.options.keyPrefix ? key.replace(server.databases.redis.options.keyPrefix, '') : key; const value = await server.databases.redis.get(unprefixed).catch((error) => { logger.error(`Got error while fetching redis value for key [${key}]`, error?.stack ?? error); return null; }); value ? backup.redis.push([unprefixed, value]) : logger.warn(`Got [${value}] for key [${key}]`); } } const zipped = await (0, node_gzip_1.gzip)(JSON.stringify(backup)).catch((error) => { logger.error('Got error while zip payload', error?.stack ?? error); return null; }); zipped ? reply.ok(zipped.toString('base64')) : reply.internalError('Cannot zip backup payload'); }); //# sourceMappingURL=cache.backup.endpoint.js.map