You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-04 15:02:09 +03:00
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
This commit is contained in:
56
packages/client/lib/commands/FUNCTION_STATS.ts
Normal file
56
packages/client/lib/commands/FUNCTION_STATS.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
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
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user