1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-04 15:02:09 +03:00
Files
node-redis/packages/client/lib/commands/FUNCTION_STATS.ts
Leibale Eidelman 11c6c24881 Add support for redis functions (#2020)
* fix #1906 - implement BITFIELD_RO

* initial support for redis functions

* fix test utils

* redis functions commands and tests

* upgrade deps

* fix "Property 'uninstall' does not exist on type 'SinonFakeTimers'"

* upgrade dockers version

* Merge branch 'master' of github.com:redis/node-redis into functions

* fix FUNCTION LIST WITHCODE and FUNCTION STATS

* upgrade deps

* set minimum version for FCALL and FCALL_RO

* fix FUNCTION LOAD

* FUNCTION LOAD

* fix FUNCTION LOAD & FUNCTION LIST & FUNCTION LOAD WITHCODE

* fix FUNCTION_LIST_WITHCODE test
2022-04-25 09:09:23 -04:00

57 lines
1.3 KiB
TypeScript

import { RedisCommandArguments } from '.';
export function transformArguments(): RedisCommandArguments {
return ['FUNCTION', 'STATS'];
}
type FunctionStatsRawReply = [
'running_script',
null | [
'name',
string,
'command',
string,
'duration_ms',
number
],
'engines',
Array<any> // "flat tuples" (there is no way to type that)
// ...[string, [
// 'libraries_count',
// number,
// 'functions_count',
// number
// ]]
];
interface FunctionStatsReply {
runningScript: null | {
name: string;
command: string;
durationMs: number;
};
engines: Record<string, {
librariesCount: number;
functionsCount: number;
}>;
}
export function transformReply(reply: FunctionStatsRawReply): FunctionStatsReply {
const engines = Object.create(null);
for (let i = 0; i < reply[3].length; i++) {
engines[reply[3][i]] = {
librariesCount: reply[3][++i][1],
functionsCount: reply[3][i][3]
};
}
return {
runningScript: reply[1] === null ? null : {
name: reply[1][1],
command: reply[1][3],
durationMs: reply[1][5]
},
engines
};
}