flecks/packages/redis/src/server.js

45 lines
1.1 KiB
JavaScript
Raw Normal View History

2024-01-09 22:22:58 -06:00
import {Flecks} from '@flecks/core';
2022-02-25 04:58:08 -06:00
import containers from './containers';
import createClient from './create-client';
2024-01-22 09:16:07 -06:00
export {default as redis} from 'redis';
2022-02-25 04:58:08 -06:00
export {createClient};
const safeKeys = async (client, pattern, caret) => {
const result = [];
do {
// eslint-disable-next-line no-await-in-loop, no-loop-func
await new Promise((resolve, reject) => {
client.scan(caret, 'MATCH', pattern, (error, r) => {
if (error) {
reject(error);
return;
}
// eslint-disable-next-line no-param-reassign
caret = parseInt(r[0], 10);
result.push(...r[1]);
resolve();
});
});
} while (0 !== caret);
return result;
};
export const keys = (client, pattern) => safeKeys(client, pattern, 0);
export const hooks = {
'@flecks/docker.containers': containers,
2024-01-22 09:16:07 -06:00
'@flecks/repl.context': async (flecks) => ({
redisClient: await createClient(flecks),
}),
2024-01-09 22:22:58 -06:00
'@flecks/server.up': Flecks.priority(
async (flecks) => {
2024-01-22 09:16:07 -06:00
const client = await createClient(flecks);
2024-01-09 22:22:58 -06:00
await client.disconnect();
},
{after: '@flecks/docker/server'},
),
2022-02-25 04:58:08 -06:00
};