You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-03 04:01:40 +03:00
* (docs) bloom: add jsdocs for all commands * (docs) json: add jsdocs * (docs) search: add jsdocs for all commands * (docs) jsdocs for std commands * (docs) jsdoc comments to time series commands
44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
import { CommandParser } from '../client/parser';
|
|
import { RedisArgument, ArrayReply, BlobStringReply, Command } from '../RESP/types';
|
|
import { ZKeys, parseZKeysArguments } from './generic-transformers';
|
|
|
|
export type ZInterKeyAndWeight = {
|
|
key: RedisArgument;
|
|
weight: number;
|
|
};
|
|
|
|
export type ZInterKeys<T> = T | [T, ...Array<T>];
|
|
|
|
export type ZInterKeysType = ZInterKeys<RedisArgument> | ZInterKeys<ZInterKeyAndWeight>;
|
|
|
|
export interface ZInterOptions {
|
|
AGGREGATE?: 'SUM' | 'MIN' | 'MAX';
|
|
}
|
|
|
|
export function parseZInterArguments(
|
|
parser: CommandParser,
|
|
keys: ZKeys,
|
|
options?: ZInterOptions
|
|
) {
|
|
parseZKeysArguments(parser, keys);
|
|
|
|
if (options?.AGGREGATE) {
|
|
parser.push('AGGREGATE', options.AGGREGATE);
|
|
}
|
|
}
|
|
|
|
export default {
|
|
IS_READ_ONLY: true,
|
|
/**
|
|
* Intersects multiple sorted sets and returns the result as a new sorted set.
|
|
* @param parser - The Redis command parser.
|
|
* @param keys - Keys of the sorted sets to intersect.
|
|
* @param options - Optional parameters for the intersection operation.
|
|
*/
|
|
parseCommand(parser: CommandParser, keys: ZInterKeysType, options?: ZInterOptions) {
|
|
parser.push('ZINTER');
|
|
parseZInterArguments(parser, keys, options);
|
|
},
|
|
transformReply: undefined as unknown as () => ArrayReply<BlobStringReply>
|
|
} as const satisfies Command;
|