1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-07 13:22:56 +03:00

stream commands + some more

This commit is contained in:
Leibale
2023-06-28 11:40:46 -04:00
parent 1bda2400e5
commit ea2d9d2a77
54 changed files with 1513 additions and 1455 deletions

View File

@@ -32,19 +32,7 @@
// return args;
// }
// type XPendingRangeRawReply = Array<[
// id: RedisCommandArgument,
// consumer: RedisCommandArgument,
// millisecondsSinceLastDelivery: number,
// deliveriesCounter: number
// ]>;
// type XPendingRangeReply = Array<{
// id: RedisCommandArgument;
// owner: RedisCommandArgument;
// millisecondsSinceLastDelivery: number;
// deliveriesCounter: number;
// }>;
// export function transformReply(reply: XPendingRangeRawReply): XPendingRangeReply {
// return reply.map(([id, owner, millisecondsSinceLastDelivery, deliveriesCounter]) => ({
@@ -54,3 +42,56 @@
// deliveriesCounter
// }));
// }
import { RedisArgument, ArrayReply, TuplesReply, BlobStringReply, NumberReply, Command } from '../RESP/types';
export interface XPendingRangeOptions {
IDLE?: number;
consumer?: RedisArgument;
}
type XPendingRangeRawReply = ArrayReply<TuplesReply<[
id: BlobStringReply,
consumer: BlobStringReply,
millisecondsSinceLastDelivery: NumberReply,
deliveriesCounter: NumberReply
]>>;
export default {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: true,
transformArguments(
key: RedisArgument,
group: RedisArgument,
start: RedisArgument,
end: RedisArgument,
count: number,
options?: XPendingRangeOptions
) {
const args = ['XPENDING', key, group];
if (options?.IDLE !== undefined) {
args.push('IDLE', options.IDLE.toString());
}
args.push(
start,
end,
count.toString()
);
if (options?.consumer) {
args.push(options.consumer);
}
return args;
},
transformReply(reply: XPendingRangeRawReply) {
return reply.map(pending => ({
id: pending[0],
consumer: pending[1],
millisecondsSinceLastDelivery: pending[2],
deliveriesCounter: pending[3]
}));
}
} as const satisfies Command;