@n1k1t/mock-server
Version:
Powerful util to setup mocks over HTTP APIs
38 lines • 1.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const models_1 = require("../models");
const logger_1 = require("../../logger");
const logger = logger_1.Logger.build('Server.Endpoint.CacheUsage.Get');
const deleteKeys = (client, prefix) => new Promise((resolve, reject) => {
const stream = client.scanStream({ match: `${client.options.keyPrefix ?? ''}${prefix ?? ''}*` });
const result = { count: 0 };
stream.once('end', () => resolve(result));
stream.once('error', (error) => {
logger.error('Got error while scan execution', error?.stack ?? error);
stream.close();
reject(error);
});
stream.on('data', async (keys) => {
stream.pause();
result.count += keys.length;
await Promise
.all(keys.map(async (key) => client.call('DEL', key)))
.catch((error) => {
logger.error('Got error while deletion keys', error?.stack ?? error);
stream.close();
reject(error);
return [];
});
stream.resume();
});
});
exports.default = models_1.Endpoint
.build()
.bindToHttp({ method: 'DELETE', path: `/cache` })
.bindToIo({ path: 'cache:delete' })
.assignHandler(async ({ incoming, reply, server }) => reply.ok({
redis: server.databases.redis
? await deleteKeys(server.databases.redis, incoming.data?.prefix).catch(() => undefined)
: undefined,
}));
//# sourceMappingURL=cache.delete.endpoint.js.map