You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-06 02:15:48 +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:
@@ -348,6 +348,10 @@ export interface EvalOptions {
|
||||
arguments?: Array<string>;
|
||||
}
|
||||
|
||||
export function evalFirstKeyIndex(options?: EvalOptions): string | undefined {
|
||||
return options?.keys?.[0];
|
||||
}
|
||||
|
||||
export function pushEvalArguments(args: Array<string>, options?: EvalOptions): Array<string> {
|
||||
if (options?.keys) {
|
||||
args.push(
|
||||
@@ -491,6 +495,51 @@ export function transformCommandReply(
|
||||
};
|
||||
}
|
||||
|
||||
export enum RedisFunctionFlags {
|
||||
NO_WRITES = 'no-writes',
|
||||
ALLOW_OOM = 'allow-oom',
|
||||
ALLOW_STALE = 'allow-stale',
|
||||
NO_CLUSTER = 'no-cluster'
|
||||
}
|
||||
|
||||
export type FunctionListRawItemReply = [
|
||||
'library_name',
|
||||
string,
|
||||
'engine',
|
||||
string,
|
||||
'functions',
|
||||
Array<[
|
||||
'name',
|
||||
string,
|
||||
'description',
|
||||
string | null,
|
||||
'flags',
|
||||
Array<RedisFunctionFlags>
|
||||
]>
|
||||
];
|
||||
|
||||
export interface FunctionListItemReply {
|
||||
libraryName: string;
|
||||
engine: string;
|
||||
functions: Array<{
|
||||
name: string;
|
||||
description: string | null;
|
||||
flags: Array<RedisFunctionFlags>;
|
||||
}>;
|
||||
}
|
||||
|
||||
export function transformFunctionListItemReply(reply: FunctionListRawItemReply): FunctionListItemReply {
|
||||
return {
|
||||
libraryName: reply[1],
|
||||
engine: reply[3],
|
||||
functions: reply[5].map(fn => ({
|
||||
name: fn[1],
|
||||
description: fn[3],
|
||||
flags: fn[5]
|
||||
}))
|
||||
};
|
||||
}
|
||||
|
||||
export interface SortOptions {
|
||||
BY?: string;
|
||||
LIMIT?: {
|
||||
|
Reference in New Issue
Block a user