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);
|
|
|
|
|
2022-08-10 10:09:02 -05:00
|
|
|
export const hooks = {
|
|
|
|
'@flecks/core.config': () => ({
|
|
|
|
/**
|
|
|
|
* Redis server host.
|
|
|
|
*/
|
|
|
|
host: 'localhost',
|
|
|
|
/**
|
|
|
|
* Redis server port.
|
|
|
|
*/
|
|
|
|
port: 6379,
|
|
|
|
}),
|
|
|
|
'@flecks/docker.containers': containers,
|
2024-01-22 09:16:07 -06:00
|
|
|
'@flecks/repl.context': async (flecks) => ({
|
|
|
|
redisClient: await createClient(flecks),
|
2022-08-10 10:09:02 -05:00
|
|
|
}),
|
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
|
|
|
};
|