UNPKG

@n1k1t/mock-server

Version:

Powerful util to setup mocks over HTTP APIs

38 lines 1.51 kB
"use strict"; 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