import { RedisArgument, NumberReply, Command } from '@redis/client/dist/lib/RESP/types'; import { Timestamp, transformTimestampArgument, pushRetentionArgument, pushChunkSizeArgument, Labels, pushLabelsArgument } from '.'; export interface TsIncrByOptions { TIMESTAMP?: Timestamp; RETENTION?: number; UNCOMPRESSED?: boolean; CHUNK_SIZE?: number; LABELS?: Labels; } export function transformIncrByArguments( command: RedisArgument, key: RedisArgument, value: number, options?: TsIncrByOptions ) { const args = [ command, key, value.toString() ]; if (options?.TIMESTAMP !== undefined && options?.TIMESTAMP !== null) { args.push('TIMESTAMP', transformTimestampArgument(options.TIMESTAMP)); } pushRetentionArgument(args, options?.RETENTION); if (options?.UNCOMPRESSED) { args.push('UNCOMPRESSED'); } pushChunkSizeArgument(args, options?.CHUNK_SIZE); pushLabelsArgument(args, options?.LABELS); return args; } export default { FIRST_KEY_INDEX: 1, IS_READ_ONLY: false, transformArguments: transformIncrByArguments.bind(undefined, 'TS.INCRBY'), transformReply: undefined as unknown as () => NumberReply } as const satisfies Command;