1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-04 15:02:09 +03:00

Support BIT|BYTE option (#2035)

* Support BIT|BYTE option

* clean code

* clean code

* clean code

Co-authored-by: leibale <leibale1998@gmail.com>
This commit is contained in:
Avital Fine
2022-03-24 16:00:08 +01:00
committed by GitHub
parent 24cd9ba9a4
commit fe16dc0eae
4 changed files with 40 additions and 10 deletions

View File

@ -11,14 +11,27 @@ describe('BITCOUNT', () => {
);
});
it('with range', () => {
assert.deepEqual(
transformArguments('key', {
start: 0,
end: 1
}),
['BITCOUNT', 'key', '0', '1']
);
describe('with range', () => {
it('simple', () => {
assert.deepEqual(
transformArguments('key', {
start: 0,
end: 1
}),
['BITCOUNT', 'key', '0', '1']
);
});
it('with mode', () => {
assert.deepEqual(
transformArguments('key', {
start: 0,
end: 1,
mode: 'BIT'
}),
['BITCOUNT', 'key', '0', '1', 'BIT']
);
});
});
});

View File

@ -7,6 +7,7 @@ export const IS_READ_ONLY = true;
interface BitCountRange {
start: number;
end: number;
mode?: 'BYTE' | 'BIT';
}
export function transformArguments(
@ -20,6 +21,10 @@ export function transformArguments(
range.start.toString(),
range.end.toString()
);
if (range?.mode) {
args.push(range.mode);
}
}
return args;

View File

@ -18,12 +18,19 @@ describe('BITPOS', () => {
);
});
it('with start, end', () => {
it('with start and end', () => {
assert.deepEqual(
transformArguments('key', 1, 1, -1),
['BITPOS', 'key', '1', '1', '-1']
);
});
it('with start, end and mode', () => {
assert.deepEqual(
transformArguments('key', 1, 1, -1, 'BIT'),
['BITPOS', 'key', '1', '1', '-1', 'BIT']
);
});
});
testUtils.testWithClient('client.bitPos', async client => {

View File

@ -9,7 +9,8 @@ export function transformArguments(
key: RedisCommandArgument,
bit: BitValue,
start?: number,
end?: number
end?: number,
mode?: 'BYTE' | 'BIT'
): RedisCommandArguments {
const args = ['BITPOS', key, bit.toString()];
@ -21,6 +22,10 @@ export function transformArguments(
args.push(end.toString());
}
if (mode) {
args.push(mode);
}
return args;
}