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', () => { describe('with range', () => {
assert.deepEqual( it('simple', () => {
transformArguments('key', { assert.deepEqual(
start: 0, transformArguments('key', {
end: 1 start: 0,
}), end: 1
['BITCOUNT', 'key', '0', '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 { interface BitCountRange {
start: number; start: number;
end: number; end: number;
mode?: 'BYTE' | 'BIT';
} }
export function transformArguments( export function transformArguments(
@@ -20,6 +21,10 @@ export function transformArguments(
range.start.toString(), range.start.toString(),
range.end.toString() range.end.toString()
); );
if (range?.mode) {
args.push(range.mode);
}
} }
return args; return args;

View File

@@ -18,12 +18,19 @@ describe('BITPOS', () => {
); );
}); });
it('with start, end', () => { it('with start and end', () => {
assert.deepEqual( assert.deepEqual(
transformArguments('key', 1, 1, -1), transformArguments('key', 1, 1, -1),
['BITPOS', '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 => { testUtils.testWithClient('client.bitPos', async client => {

View File

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