@n1k1t/mock-server
Version:
The ultimate toolkit to intercept, transform, and simulate HTTP/WS traffic with type-safe expectations
36 lines • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const node_gzip_1 = require("node-gzip");
const models_1 = require("../models");
const utils_1 = require("../utils");
const logger_1 = require("../../logger");
const logger = logger_1.Logger.build('Endpoints.CacheBackup');
exports.default = models_1.EndpointFactory
.build()
.http({ method: 'POST', path: `/cache/backup` })
.io({ path: 'cache:backup' })
.compile(async ({ reply, server }) => {
const backup = { redis: [] };
if (server.databases.redis) {
const converter = utils_1.RxConverter.build(server.services.redis.iterate('*', {
trim: true,
}));
for await (const key of converter.iterate()) {
const value = await server.databases.redis.get(key).catch((error) => {
logger.error(`Got error while fetching redis value for key [${key}]`, error?.stack ?? error);
return null;
});
value
? backup.redis.push([key, 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